[headless] Deflake requestFullscreen call tests
Race between fullscreen change and frame resized notifications caused test flakiness. This CL stabilizes the test by waiting for the racy events using Promise.all(). Bug: 339788212, 335520870 Change-Id: I3ca12da9edea018e45d4437b5119512ee2a2a59b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5533640 Auto-Submit: Peter Kvitek <kvitekp@chromium.org> Commit-Queue: Peter Kvitek <kvitekp@chromium.org> Reviewed-by: Andrey Kosyakov <caseq@chromium.org> Cr-Commit-Position: refs/heads/main@{#1300343}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
0b27323790
commit
e1d2011d4d
headless/test
@ -1,2 +1,3 @@
|
||||
Tests element requestFullscreen.
|
||||
Entered fullscreen mode: fullscreen-div
|
||||
Seen page zoom and fullscreen element: fullscreen-div
|
||||
Seen page un-zoom
|
@ -8,44 +8,40 @@
|
||||
<div id="fullscreen-div">The element.</div>
|
||||
</body>
|
||||
<script>
|
||||
function toggleFullscreen() {
|
||||
function enterFullscreen() {
|
||||
const element = document.getElementById("fullscreen-div");
|
||||
if (!document.fullscreenElement) {
|
||||
return new Promise(resolve => {
|
||||
element.addEventListener("fullscreenchange", () => {
|
||||
if (document.fullscreenElement) {
|
||||
resolve(document.fullscreenElement.id);
|
||||
}
|
||||
});
|
||||
element.requestFullscreen();
|
||||
} else {
|
||||
document.exitFullscreen();
|
||||
}
|
||||
}
|
||||
)}
|
||||
|
||||
function fullscreenchanged(event) {
|
||||
if (document.fullscreenElement) {
|
||||
console.log("Entered fullscreen mode: "
|
||||
+ document.fullscreenElement.id);
|
||||
}
|
||||
function exitFullscreen() {
|
||||
document.exitFullscreen();
|
||||
}
|
||||
|
||||
document.getElementById("fullscreen-div")
|
||||
.addEventListener("fullscreenchange", fullscreenchanged);
|
||||
</script>
|
||||
</html>
|
||||
`;
|
||||
const {session, dp} =
|
||||
await testRunner.startHTML(html, 'Tests element requestFullscreen.');
|
||||
|
||||
await dp.Runtime.enable();
|
||||
|
||||
dp.Runtime.onConsoleAPICalled(data => {
|
||||
const text = data.params.args[0].value;
|
||||
testRunner.log(text);
|
||||
});
|
||||
|
||||
await dp.Page.enable();
|
||||
|
||||
session.evaluateAsyncWithUserGesture('window.toggleFullscreen();');
|
||||
await dp.Page.onceFrameResized();
|
||||
const [entered_fullscreen] = await Promise.all([
|
||||
session.evaluateAsyncWithUserGesture('window.enterFullscreen();'),
|
||||
dp.Page.onceFrameResized()
|
||||
]);
|
||||
|
||||
session.evaluateAsyncWithUserGesture('window.toggleFullscreen();');
|
||||
testRunner.log(
|
||||
'Seen page zoom and fullscreen element: ' + entered_fullscreen);
|
||||
|
||||
session.evaluateAsyncWithUserGesture('window.exitFullscreen();');
|
||||
await dp.Page.onceFrameResized();
|
||||
testRunner.log('Seen page un-zoom');
|
||||
|
||||
testRunner.completeTest();
|
||||
})
|
||||
|
@ -370,13 +370,7 @@ HEADLESS_PROTOCOL_TEST(LargeBrowserWindowSize,
|
||||
HEADLESS_PROTOCOL_TEST(ScreencastBasics, "sanity/screencast-basics.js")
|
||||
HEADLESS_PROTOCOL_TEST(ScreencastViewport, "sanity/screencast-viewport.js")
|
||||
|
||||
// https://crbug.com/339788212
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
#define MAYBE_RequestFullscreen DISABLED_RequestFullscreen
|
||||
#else
|
||||
#define MAYBE_RequestFullscreen RequestFullscreen
|
||||
#endif
|
||||
HEADLESS_PROTOCOL_TEST(MAYBE_RequestFullscreen, "sanity/request-fullscreen.js")
|
||||
HEADLESS_PROTOCOL_TEST(RequestFullscreen, "sanity/request-fullscreen.js")
|
||||
|
||||
class HeadlessProtocolBrowserTestWithProxy
|
||||
: public HeadlessProtocolBrowserTest {
|
||||
|
Reference in New Issue
Block a user