servo/tests/wpt/web-platform-tests/common/rendering-utils.js

21 lines
710 B
JavaScript

"use strict";
/**
* Waits until we have at least one frame rendered, regardless of the engine.
*
* @returns {Promise}
*/
function waitForAtLeastOneFrame() {
return new Promise(resolve => {
// Different web engines work slightly different on this area but 1) waiting
// for two requestAnimationFrames() to happen one after another and 2)
// adding a step_timeout(0) to guarantee events have finished should be
// sufficient to ensure at least one frame has been generated anywhere.
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1785615
window.requestAnimationFrame(() => {
window.requestAnimationFrame(() => {
setTimeout(resolve, 0);
});
});
});
}