UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

127 lines (96 loc) 3.27 kB
/* Siesta 5.6.1 Copyright(c) 2009-2022 Bryntum AB https://bryntum.com/contact https://bryntum.com/products/siesta/license */ Class('Siesta.Test.Simulator', { does : [ Siesta.Util.Role.CanGetType, Siesta.Test.Browser.Role.CanRebindJQueryContext, Siesta.Test.Simulate.Event, Siesta.Test.Simulate.Mouse, Siesta.Test.Simulate.Keyboard, Siesta.Test.Simulate.Touch ], has : { type : 'synthetic', test : null, global : null }, methods : { onTestLaunch : function (test) { var me = this; me.test = test me.global = test.global // Synthetic events unfortunately don't trigger `change` events on blur of an INPUT if (me.type === 'synthetic') { me.makeSureBlurWorkaroundApplied(test.global.document) } }, cleanup : function () { // Added check that global exists, made tests crash without this.global && this.global.document.__SIESTA_ONBLUR_WORKAROUND_APPLIED__ && this.global.document.__SIESTA_ONBLUR_WORKAROUND_APPLIED__.dispose() this.test = null this.global = null }, setSpeed : function (name) { Joose.O.extend(this, Siesta.Test.Simulator.speedPresets[name]); } } }); Siesta.Test.Simulator.speedPresets = { slow : { actionDelay : 100, afterActionDelay : 100, dragDelay : 25, pathBatchSize : 5, mouseMovePrecision : 1, mouseDragPrecision : 1 }, speedRun : { actionDelay : 1, afterActionDelay : 100, dragDelay : 10, pathBatchSize : 30, mouseMovePrecision : 1, mouseDragPrecision : 1 }, turboMode : { actionDelay : 1, afterActionDelay : 1, dragDelay : 0, pathBatchSize : 100, mouseMovePrecision : Infinity, mouseDragPrecision : Infinity } }; Class('Siesta.Test.SimulatorOnBlurWorkaround', { does : [ Siesta.Test.Browser.Role.CanWorkWithKeyboard ], has : { document : null, simulator : null, }, methods : { initialize : function () { this.SUPERARG(arguments) this.onBlur = this.onBlur.bind(this) this.document.documentElement.addEventListener('blur', this.onBlur, true) }, onBlur : function (event) { if (event.target && this.isTextInput(event.target)) { var inputFiresChangeAfterLosingFocus = Siesta.Project.Browser.FeatureSupport().supports.inputFiresChangeAfterLosingFocus && (!bowser.safari || !event.target.valueWasModifiedByBackspace) if (!inputFiresChangeAfterLosingFocus) { this.simulator.maybeMimicChangeEvent(event.target) } } }, dispose : function () { this.document.documentElement.removeEventListener('blur', this.onBlur, true) this.document.__SIESTA_ONBLUR_WORKAROUND_APPLIED__ = undefined } } })