siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
70 lines (57 loc) • 3.11 kB
JavaScript
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 }
)
});
})
});