events.js (1089B)
1 setup({ explicit_timeout: true, single_test: true }); 2 function rAF() { 3 return new Promise(resolve => { 4 requestAnimationFrame(resolve); 5 }); 6 } 7 const a = document.getElementById('a'); 8 const b = document.getElementById('b'); 9 const actualEvents = []; 10 const expectedEvents = document.body.dataset.expectedEvents.replace(/\s+/g, '').split(','); 11 const eventTypes = new Set(expectedEvents.map(s => s.split(':')[1])); 12 for (const eventType of eventTypes) { 13 if (a) { 14 a.addEventListener(eventType, e => { 15 actualEvents.push(`a:${e.type}:${e.inputType || ''}`); 16 }); 17 } 18 b.addEventListener(eventType, async (e) => { 19 actualEvents.push(`b:${e.type}:${e.inputType || ''}`); 20 if (e.type === "input") { 21 await rAF(); 22 await rAF(); 23 assert_array_equals(actualEvents, expectedEvents); 24 done(); 25 } 26 }); 27 } 28 const dragMeElement = document.querySelector('[data-select]'); 29 const [selectionStart, selectionEnd] = dragMeElement.dataset.select.split(',').map(s => parseInt(s, 10)); 30 setSelection(dragMeElement, selectionStart, selectionEnd); 31 dragMeElement.focus();