[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.
|
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>
|
<div id="fullscreen-div">The element.</div>
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
function toggleFullscreen() {
|
function enterFullscreen() {
|
||||||
const element = document.getElementById("fullscreen-div");
|
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();
|
element.requestFullscreen();
|
||||||
} else {
|
|
||||||
document.exitFullscreen();
|
|
||||||
}
|
}
|
||||||
}
|
)}
|
||||||
|
|
||||||
function fullscreenchanged(event) {
|
function exitFullscreen() {
|
||||||
if (document.fullscreenElement) {
|
document.exitFullscreen();
|
||||||
console.log("Entered fullscreen mode: "
|
|
||||||
+ document.fullscreenElement.id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.getElementById("fullscreen-div")
|
|
||||||
.addEventListener("fullscreenchange", fullscreenchanged);
|
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
`;
|
`;
|
||||||
const {session, dp} =
|
const {session, dp} =
|
||||||
await testRunner.startHTML(html, 'Tests element requestFullscreen.');
|
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();
|
await dp.Page.enable();
|
||||||
|
|
||||||
session.evaluateAsyncWithUserGesture('window.toggleFullscreen();');
|
const [entered_fullscreen] = await Promise.all([
|
||||||
await dp.Page.onceFrameResized();
|
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();
|
await dp.Page.onceFrameResized();
|
||||||
|
testRunner.log('Seen page un-zoom');
|
||||||
|
|
||||||
testRunner.completeTest();
|
testRunner.completeTest();
|
||||||
})
|
})
|
||||||
|
@@ -370,13 +370,7 @@ HEADLESS_PROTOCOL_TEST(LargeBrowserWindowSize,
|
|||||||
HEADLESS_PROTOCOL_TEST(ScreencastBasics, "sanity/screencast-basics.js")
|
HEADLESS_PROTOCOL_TEST(ScreencastBasics, "sanity/screencast-basics.js")
|
||||||
HEADLESS_PROTOCOL_TEST(ScreencastViewport, "sanity/screencast-viewport.js")
|
HEADLESS_PROTOCOL_TEST(ScreencastViewport, "sanity/screencast-viewport.js")
|
||||||
|
|
||||||
// https://crbug.com/339788212
|
HEADLESS_PROTOCOL_TEST(RequestFullscreen, "sanity/request-fullscreen.js")
|
||||||
#if BUILDFLAG(IS_MAC)
|
|
||||||
#define MAYBE_RequestFullscreen DISABLED_RequestFullscreen
|
|
||||||
#else
|
|
||||||
#define MAYBE_RequestFullscreen RequestFullscreen
|
|
||||||
#endif
|
|
||||||
HEADLESS_PROTOCOL_TEST(MAYBE_RequestFullscreen, "sanity/request-fullscreen.js")
|
|
||||||
|
|
||||||
class HeadlessProtocolBrowserTestWithProxy
|
class HeadlessProtocolBrowserTestWithProxy
|
||||||
: public HeadlessProtocolBrowserTest {
|
: public HeadlessProtocolBrowserTest {
|
||||||
|
Reference in New Issue
Block a user