UNPKG

siesta-lite

Version:

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

70 lines (57 loc) 3.11 kB
StartTest(function(t) { //================================================================================================================================================================================== t.diag("Siesta mouse click simulation"); t.testBrowser(function (t) { !Ext.isIE9 && t.it('should fire click event on common ancestor of pointerup element + element-at-cursor if pointerup triggers another element to become visible', function (t) { document.body.innerHTML = '<div id="outer" style="position:absolute; left: 0; top: 0px; height:250px; width:250px;background:red;">' + '<div id="inner" style="background:blue;">Inner Element' + '<div id="inner-inner" style="background:#fff;width:120px">Innermost Element</div>' + '</div>' + '</div>' var outer = t.$('#outer')[0]; var inner = t.$('#inner')[0]; var supportsPointerEvents = Siesta.Project.Browser.FeatureSupport().supports.PointerEventsGeneric t.$(outer).bind(supportsPointerEvents ? 'pointerdown' : 'mousedown', function (e) { // Now element is not reachable with elementFromPoint inner.style.visibility = 'hidden' e.preventDefault(); }) t.$(outer).bind(supportsPointerEvents ? 'pointerup' : 'mouseup', function (e) { inner.style.visibility = 'visible'; }) if (Ext.isIE10) { t.firesOnce(inner, 'mouseup', 'inner should trigger mouseup in IE <= 10'); t.firesOnce(inner, 'click', 'inner should trigger click in IE <= 10'); } else { t.wontFire(inner, 'mouseup', 'inner should not trigger mouseup'); t.wontFire(inner, 'click', 'inner should not trigger click'); } if ((t.bowser.safari && this.bowser.version < 13) || Ext.isIE10) { t.firesOnce(outer, 'mouseup', 'outer should trigger mouseup in Safari'); } else { t.wontFire(outer, 'mouseup', 'outer should not trigger mouseup'); } if (t.bowser.gecko || (t.bowser.safari && this.bowser.version >= 13)) { t.wontFire(outer, 'click', 'outer should not trigger click in Safari/FF'); } else { t.firesOnce(outer, 'click', 'outer should trigger click in Chrome/IE'); } // document.body.addEventListener('click', function (e) { // console.log(e.type, e.target) // }) // outer.addEventListener('click', function (e) { // console.log(e.type, e.target) // }) // outer.addEventListener('mouseup', function (e) { // console.log(e.type, e.target) // }) // outer.addEventListener('mousedown', function (e) { // console.log(e.type, e.target) // }) t.chain( { click : inner } ) }); }) });