[webkit-dev] Waiting for an event in layout test...

Ryosuke Niwa rniwa at webkit.org
Thu May 30 23:01:48 PDT 2019


I’m gonna give you a game changing function:

function listenForEventOnce(target, name, timeout) {
    return new Promise((resolve, reject) => {
        const timer = timeout ? setTimeout(reject, timeout) : null;
        target.addEventListener(name, () => {
            if (timer)
                clearTimeout(timer);
            resolve();
        }, {once: true});
    });
}

You can then write a test like this:
await listenForEventOnce(document.body, 'load');
// do stuff after load event.

await listenForEventOnce(document.querySelector('input'), 'focus');
await listenForEventOnce(visualViewport, 'scroll', 5000);
// After the input element is focused, then the visual viewport scrolled or
5 seconds has passed.

- R. Niwa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20190530/65536ddf/attachment.html>


More information about the webkit-dev mailing list