소스 검색

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.
Timothy Flynn 9 달 전
부모
커밋
13fe3477ab
1개의 변경된 파일4개의 추가작업 그리고 1개의 파일을 삭제
  1. 4 1
      Userland/Services/WebContent/WebDriverConnection.cpp

+ 4 - 1
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());