From be9071834eb0c836ccd821adaa0134820e3f6297 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 7 Oct 2024 14:47:31 -0400 Subject: [PATCH] LibWeb: Wait for the iframe load before completing the beforeunload test This test caused some flakiness due to the about:blank load it triggers. It causes headless-browser to receive a load event for about:blank. If we have moved onto the next test before that event arrived, that test would ultimately time out, as its own load will have been dropped while the about:blank load is still ongoing. This patch makes us wait for that iframe load event before completing the test. We may want to consider never sending subframe load events to the UI process as well. We really only care about top-level page loads in the receivers of that event. --- Tests/LibWeb/Text/expected/DOM/beforeunload.txt | 1 + Tests/LibWeb/Text/input/DOM/beforeunload.html | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/Tests/LibWeb/Text/expected/DOM/beforeunload.txt b/Tests/LibWeb/Text/expected/DOM/beforeunload.txt index 1aa6ad32c5d..ad07be05124 100644 --- a/Tests/LibWeb/Text/expected/DOM/beforeunload.txt +++ b/Tests/LibWeb/Text/expected/DOM/beforeunload.txt @@ -1,2 +1,3 @@ Before unload event fired Default prevented: true +iframe load: about:blank diff --git a/Tests/LibWeb/Text/input/DOM/beforeunload.html b/Tests/LibWeb/Text/input/DOM/beforeunload.html index 870917ed0ea..2d1e7428296 100644 --- a/Tests/LibWeb/Text/input/DOM/beforeunload.html +++ b/Tests/LibWeb/Text/input/DOM/beforeunload.html @@ -3,12 +3,18 @@ asyncTest(done => { const iframe = document.createElement("iframe"); document.body.appendChild(iframe); + iframe.contentWindow.addEventListener("beforeunload", e => { println("Before unload event fired"); e.preventDefault(); println(`Default prevented: ${e.defaultPrevented}`); + }); + + iframe.addEventListener("load", e => { + println(`iframe load: ${e.target.src}`); done(); }); + iframe.src = "about:blank"; });