From 13fe3477ab8ac253bd7346d50b3224baf891872e Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 9 Oct 2024 14:41:36 -0400 Subject: [PATCH] WebContent: Wait for same-URL WebDriver navigations to complete The spec says we don't need to await navigations if we navigate to the same URL that we are already on, but at least in our implementation, we should still await the page load. Otherwise, we will invoke WebDriver endpoints on the wrong page. --- Userland/Services/WebContent/WebDriverConnection.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Userland/Services/WebContent/WebDriverConnection.cpp b/Userland/Services/WebContent/WebDriverConnection.cpp index 86dee283138..a13d80926ef 100644 --- a/Userland/Services/WebContent/WebDriverConnection.cpp +++ b/Userland/Services/WebContent/WebDriverConnection.cpp @@ -276,7 +276,10 @@ Messages::WebDriverClient::NavigateToResponse WebDriverConnection::navigate_to(J current_top_level_browsing_context()->page().load(url); // 8. If url is special except for file and current URL and URL do not have the same absolute URL: - if (url.is_special() && url.scheme() != "file"sv && current_url != url) { + // AD-HOC: We wait for the navigation to complete regardless of whether the current URL differs from the provided + // URL. Even if they're the same, the navigation queues a tasks that we must await, otherwise subsequent + // endpoint invocations will attempt to operate on the wrong page. + if (url.is_special() && url.scheme() != "file"sv) { // a. Try to wait for navigation to complete. TRY(wait_for_navigation_to_complete());