Source code

Revision control

Copy as Markdown

Other Tools

setup({ explicit_timeout: true, single_test: true });
function rAF() {
return new Promise(resolve => {
requestAnimationFrame(resolve);
});
}
const a = document.getElementById('a');
const b = document.getElementById('b');
const actualEvents = [];
const expectedEvents = document.body.dataset.expectedEvents.replace(/\s+/g, '').split(',');
const eventTypes = new Set(expectedEvents.map(s => s.split(':')[1]));
for (const eventType of eventTypes) {
if (a) {
a.addEventListener(eventType, e => {
actualEvents.push(`a:${e.type}:${e.inputType || ''}`);
});
}
b.addEventListener(eventType, async (e) => {
actualEvents.push(`b:${e.type}:${e.inputType || ''}`);
if (e.type === "input") {
await rAF();
await rAF();
assert_array_equals(actualEvents, expectedEvents);
done();
}
});
}
const dragMeElement = document.querySelector('[data-select]');
const [selectionStart, selectionEnd] = dragMeElement.dataset.select.split(',').map(s => parseInt(s, 10));
setSelection(dragMeElement, selectionStart, selectionEnd);
dragMeElement.focus();