[wdspec] Add test to check network events for URL with fragment

Differential Revision: https://phabricator.services.mozilla.com/D205448

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1886957
gecko-commit: d94fe35a485d76fbc6e5e7edbd1de2803675e7c1
gecko-reviewers: webdriver-reviewers, Sasha
diff --git a/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py b/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py
index c92337e..95a790e 100644
--- a/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py
+++ b/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py
@@ -393,3 +393,26 @@
 
     # Check that both requests share the same requestId
     assert events[0]["request"]["request"] == events[1]["request"]["request"]
+
+
+@pytest.mark.asyncio
+async def test_url_with_fragment(
+    url, wait_for_event, wait_for_future_safe, fetch, setup_network_test
+):
+    fragment_url = url(f"{PAGE_EMPTY_HTML}#foo")
+
+    network_events = await setup_network_test(events=[BEFORE_REQUEST_SENT_EVENT])
+    events = network_events[BEFORE_REQUEST_SENT_EVENT]
+
+    on_before_request_sent = wait_for_event(BEFORE_REQUEST_SENT_EVENT)
+    await fetch(fragment_url, method="GET")
+    await wait_for_future_safe(on_before_request_sent)
+
+    assert len(events) == 1
+
+    # Assert that the event contains the full fragment URL in requestData.
+    assert_before_request_sent_event(
+        events[0],
+        expected_request={"method": "GET", "url": fragment_url},
+        redirect_count=0,
+    )
diff --git a/webdriver/tests/bidi/network/response_completed/response_completed.py b/webdriver/tests/bidi/network/response_completed/response_completed.py
index b9b4ae7..56b9461 100644
--- a/webdriver/tests/bidi/network/response_completed/response_completed.py
+++ b/webdriver/tests/bidi/network/response_completed/response_completed.py
@@ -368,3 +368,28 @@
 
     # Check that the last 2 requests share the same request id
     assert events[1]["request"]["request"] == events[2]["request"]["request"]
+
+
+@pytest.mark.asyncio
+async def test_url_with_fragment(
+    url, wait_for_event, wait_for_future_safe, fetch, setup_network_test
+):
+    fragment_url = url(f"{PAGE_EMPTY_HTML}#foo")
+
+    network_events = await setup_network_test(events=[RESPONSE_COMPLETED_EVENT])
+    events = network_events[RESPONSE_COMPLETED_EVENT]
+
+    on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT)
+    await fetch(fragment_url, method="GET")
+    await wait_for_future_safe(on_response_completed)
+
+    assert len(events) == 1
+
+    # Assert that the event contains the full fragment URL both in requestData
+    # and responseData
+    assert_response_event(
+        events[0],
+        expected_request={"method": "GET", "url": fragment_url},
+        expected_response={"url": fragment_url},
+        redirect_count=0,
+    )
diff --git a/webdriver/tests/bidi/network/response_started/response_started.py b/webdriver/tests/bidi/network/response_started/response_started.py
index fb99073..6c10714 100644
--- a/webdriver/tests/bidi/network/response_started/response_started.py
+++ b/webdriver/tests/bidi/network/response_started/response_started.py
@@ -311,3 +311,28 @@
 
     # Check that both requests share the same requestId
     assert events[0]["request"]["request"] == events[1]["request"]["request"]
+
+
+@pytest.mark.asyncio
+async def test_url_with_fragment(
+    url, wait_for_event, wait_for_future_safe, fetch, setup_network_test
+):
+    fragment_url = url(f"{PAGE_EMPTY_HTML}#foo")
+
+    network_events = await setup_network_test(events=[RESPONSE_STARTED_EVENT])
+    events = network_events[RESPONSE_STARTED_EVENT]
+
+    on_response_started = wait_for_event(RESPONSE_STARTED_EVENT)
+    await fetch(fragment_url, method="GET")
+    await wait_for_future_safe(on_response_started)
+
+    assert len(events) == 1
+
+    # Assert that the event contains the full fragment URL both in requestData
+    # and responseData
+    assert_response_event(
+        events[0],
+        expected_request={"method": "GET", "url": fragment_url},
+        expected_response={"url": fragment_url},
+        redirect_count=0,
+    )