From a7abacb40ffea2d83279df207db83b3a662a5b42 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:19:14 -0400 Subject: [PATCH 1/3] [py] Add test for BiDi request handlers with classic navigation --- .../webdriver/common/bidi_network_tests.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/py/test/selenium/webdriver/common/bidi_network_tests.py b/py/test/selenium/webdriver/common/bidi_network_tests.py index b493260d2d532..15ac4c97540ea 100644 --- a/py/test/selenium/webdriver/common/bidi_network_tests.py +++ b/py/test/selenium/webdriver/common/bidi_network_tests.py @@ -99,6 +99,27 @@ def test_remove_auth_handler(driver): assert driver.network.intercepts == [], "Intercept not removed" +def test_handler_with_classic_navigation(driver, pages): + """Verify request handlers also work with classic navigation.""" + if driver.caps["browserName"] == "chrome": + pytest.skip(reason="Request handlers don't yet work in Chrome when using classic navigation") + if driver.caps["browserName"] == "edge": + pytest.skip(reason="Request handlers don't yet work in Edge when using classic navigation") + + exceptions = [] + + def callback(request: Request): + try: + request.continue_request() + except WebDriverException as e: + exceptions.append(e) + + callback_id = driver.network.add_request_handler("before_request", callback) + assert callback_id is not None, "Request handler not added" + pages.load("formPage.html") + assert len(exceptions) == 0, "Exception raised when continuing request in callback" + + @pytest.mark.xfail_chrome(reason="Data URLs in Network requests are not implemented in Chrome yet") @pytest.mark.xfail_edge(reason="Data URLs in Network requests are not implemented in Edge yet") @pytest.mark.xfail_firefox(reason="Data URLs in Network requests are not implemented in Firefox yet") From b896a0bfb2d82e0d99730251e16c16de2682846c Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 13 Oct 2025 14:30:30 -0400 Subject: [PATCH 2/3] [py] Fixed tests --- .../webdriver/common/bidi_network_tests.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/py/test/selenium/webdriver/common/bidi_network_tests.py b/py/test/selenium/webdriver/common/bidi_network_tests.py index 15ac4c97540ea..570c0500eea49 100644 --- a/py/test/selenium/webdriver/common/bidi_network_tests.py +++ b/py/test/selenium/webdriver/common/bidi_network_tests.py @@ -73,14 +73,20 @@ def callback(request: Request): def test_continue_request(driver, pages): + exceptions = [] + def callback(request: Request): - request.continue_request() + try: + request.continue_request() + except WebDriverException as e: + exceptions.append(e) callback_id = driver.network.add_request_handler("before_request", callback) assert callback_id is not None, "Request handler not added" url = pages.url("formPage.html") driver.browsing_context.navigate(context=driver.current_window_handle, url=url, wait=ReadinessState.COMPLETE) assert driver.find_element(By.NAME, "login").is_displayed(), "Request not continued" + assert len(exceptions) == 0, "Exception raised when continuing request in handler callback" def test_continue_with_auth(driver): @@ -101,10 +107,9 @@ def test_remove_auth_handler(driver): def test_handler_with_classic_navigation(driver, pages): """Verify request handlers also work with classic navigation.""" - if driver.caps["browserName"] == "chrome": - pytest.skip(reason="Request handlers don't yet work in Chrome when using classic navigation") - if driver.caps["browserName"] == "edge": - pytest.skip(reason="Request handlers don't yet work in Edge when using classic navigation") + browser_name = driver.caps["browserName"] + if browser_name.lower() in ("chrome", "microsoftedge"): + pytest.skip(reason="Request handlers don't yet work in {browser_name} when using classic navigation") exceptions = [] @@ -117,7 +122,7 @@ def callback(request: Request): callback_id = driver.network.add_request_handler("before_request", callback) assert callback_id is not None, "Request handler not added" pages.load("formPage.html") - assert len(exceptions) == 0, "Exception raised when continuing request in callback" + assert len(exceptions) == 0, "Exception raised in handler callback" @pytest.mark.xfail_chrome(reason="Data URLs in Network requests are not implemented in Chrome yet") @@ -141,4 +146,4 @@ def callback(request: Request): time.sleep(1) # give callback time to complete assert driver.find_element(By.ID, "data-url-image").is_displayed() assert len(data_requests) > 0, "BiDi event not captured" - assert len(exceptions) == 0, "Exception raised when continuing request in callback" + assert len(exceptions) == 0, "Exception raised when continuing request in handler callback" From 49f9f33d13688a6a6c62af014ffdde70c7aad971 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 13 Oct 2025 18:30:30 -0400 Subject: [PATCH 3/3] [py] Fix skip message --- py/test/selenium/webdriver/common/bidi_network_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/test/selenium/webdriver/common/bidi_network_tests.py b/py/test/selenium/webdriver/common/bidi_network_tests.py index 570c0500eea49..d6daca7b23d3b 100644 --- a/py/test/selenium/webdriver/common/bidi_network_tests.py +++ b/py/test/selenium/webdriver/common/bidi_network_tests.py @@ -109,7 +109,7 @@ def test_handler_with_classic_navigation(driver, pages): """Verify request handlers also work with classic navigation.""" browser_name = driver.caps["browserName"] if browser_name.lower() in ("chrome", "microsoftedge"): - pytest.skip(reason="Request handlers don't yet work in {browser_name} when using classic navigation") + pytest.skip(reason=f"Request handlers don't yet work in {browser_name} using classic navigation") exceptions = []