blob: 30770c3c538832693b578c70e598b1aa172536a9 [file] [log] [blame]
(async function(testRunner) {
let {page, session, dp} = await testRunner.startBlank(`Tests that Input.dispatchTouchEvent waits for JavaScript event handlers to finish.`);
await session.evaluate(`
window.got = 'nope';
window.addEventListener('click', pauseEvent);
function pauseEvent(event) {
debugger;
event.preventDefault();
}
`);
function dumpError(message) {
if (message.error)
testRunner.log('Error: ' + message.error.message);
}
let resolved = false;
await dp.Debugger.enable();
await dp.Emulation.setTouchEmulationEnabled({enabled: true});
await dp.Emulation.setEmitTouchEventsForMouse({enabled: true});
testRunner.log('Dispatching event');
await dp.Input.dispatchTouchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100
}]
});
let touchEventPromise = dp.Input.dispatchTouchEvent({
type: 'touchEnd',
touchPoints: []
});
touchEventPromise.then(() => resolved = true);
await dp.Debugger.oncePaused();
await Promise.resolve(); // just in case
testRunner.log(resolved ? `touchEventPromise was resolved too early` : `touchEventPromise for has not resolved yet`)
testRunner.log('Paused on debugger statement');
await dp.Debugger.resume();
testRunner.log('Resumed');
dumpError(await touchEventPromise);
testRunner.log(`Recieved ack`);
testRunner.completeTest();
})