tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit b40460c1fc66896f683155c0660475eabb7e5f2a
parent 47a9b982fe0f06b949f1a4cca60e56860a24df46
Author: Alexandra Borovova <aborovova@mozilla.com>
Date:   Fri,  5 Dec 2025 11:33:35 +0000

Bug 2002721 - [wdspec] Add a test for "script.realmCreated" event for window.open. r=jdescottes

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

Diffstat:
Atesting/web-platform/tests/webdriver/tests/bidi/script/realm_created/window_open.py | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/webdriver/tests/bidi/script/realm_created/window_open.py b/testing/web-platform/tests/webdriver/tests/bidi/script/realm_created/window_open.py @@ -0,0 +1,83 @@ +import pytest +from webdriver.bidi.modules.script import ContextTarget + +from tests.bidi import wait_for_bidi_events + + +pytestmark = pytest.mark.asyncio + +CONTEXT_CREATED_EVENT = "browsingContext.contextCreated" +REALM_CREATED_EVENT = "script.realmCreated" + + +@pytest.mark.parametrize("window_url", ["", "about:blank", "inline"]) +async def test_window_open( + bidi_session, subscribe_events, top_context, inline, window_url +): + await subscribe_events(events=[REALM_CREATED_EVENT]) + + events = [] + + async def on_event(method, data): + events.append(data) + + remove_listener = bidi_session.add_event_listener(REALM_CREATED_EVENT, on_event) + + if window_url == "inline": + window_url = inline("<div>in window</div>") + + await bidi_session.script.evaluate( + expression=f"window.open('{window_url}')", + await_promise=False, + target=ContextTarget(top_context["context"]), + ) + + await wait_for_bidi_events(bidi_session, events, 1, equal_check=True) + + realms = await bidi_session.script.get_realms() + window_realm = None + for realm in realms: + if realm["context"] != top_context["context"]: + window_realm = realm + + assert events[-1] == window_realm + + remove_listener() + + +@pytest.mark.parametrize("window_url", ["", "about:blank", "inline"]) +async def test_event_order( + bidi_session, subscribe_events, new_tab, inline, window_url +): + await subscribe_events(events=[CONTEXT_CREATED_EVENT, REALM_CREATED_EVENT]) + + events = [] + + async def on_event(method, data): + events.append(method) + + remove_listener_for_context_created = bidi_session.add_event_listener( + CONTEXT_CREATED_EVENT, on_event + ) + remove_listener_for_realm_created = bidi_session.add_event_listener( + REALM_CREATED_EVENT, on_event + ) + + if window_url == "inline": + window_url = inline("<div>in window</div>") + + events = [] + + await bidi_session.script.evaluate( + expression=f"window.open('{window_url}')", + await_promise=False, + target=ContextTarget(new_tab["context"]), + ) + + await wait_for_bidi_events(bidi_session, events, 2, equal_check=True) + + assert events[0] == CONTEXT_CREATED_EVENT + assert events[1] == REALM_CREATED_EVENT + + remove_listener_for_context_created() + remove_listener_for_realm_created()