1function raf() { 2 return new Promise((resolve) => { 3 // rAF twice. 4 window.requestAnimationFrame(() => { 5 window.requestAnimationFrame(resolve); 6 }); 7 }); 8} 9 10async function runTest({target, eventName, passive, expectCancelable}) { 11 await raf(); 12 13 let cancelable = null; 14 let arrived = false; 15 target.addEventListener(eventName, function (event) { 16 cancelable = event.cancelable; 17 arrived = true; 18 }, {passive:passive, once:true}); 19 20 promise_test(async (t) => { 21 t.add_cleanup(() => { 22 document.querySelector('.remove-on-cleanup')?.remove(); 23 }); 24 const pos_x = Math.floor(window.innerWidth / 2); 25 const pos_y = Math.floor(window.innerHeight / 2); 26 const delta_x = 0; 27 const delta_y = 100; 28 29 await new test_driver.Actions() 30 .scroll(pos_x, pos_y, delta_x, delta_y).send(); 31 await t.step_wait(() => arrived, `Didn't get event ${eventName} on ${target.localName}`); 32 assert_equals(cancelable, expectCancelable); 33 }); 34} 35