tor-browser

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

commit 70359afbc5db8cbbb366c17f436e3e47a5072fe0
parent b739346e59a2ebdc7a3c1d77ff77141730ebd110
Author: Euclid Ye <yezhizhenjiakang@gmail.com>
Date:   Wed, 15 Oct 2025 08:44:16 +0000

Bug 1993932 [wpt PR 55370] - webdriver: Improve argument extraction of (async) script execution , a=testonly

Automatic update from web-platform-tests
Test

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>

--
Async Script Arg test

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>

--
Tidy

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>

--

wpt-commits: e01a4a05a2bb1a866e29da28c249a786da23aeac, 32e086ca1a7bb3ef30aa4c1fbb1ff97bc978bbc1, e671074c49a61bb9a5fb4321efe88f116e1e8251
wpt-pr: 55370

Diffstat:
Mtesting/web-platform/tests/webdriver/tests/classic/execute_async_script/arguments.py | 30++++++++++++++++++++++++++++++
Mtesting/web-platform/tests/webdriver/tests/classic/execute_script/arguments.py | 21+++++++++++++++++++++
2 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/webdriver/tests/classic/execute_async_script/arguments.py b/testing/web-platform/tests/webdriver/tests/classic/execute_async_script/arguments.py @@ -205,3 +205,32 @@ def test_element_reference(session, get_test_page, expression, expected_type): resolve(arguments[0] == {expression}) """, [reference]) assert_success(result, True) + + +@pytest.mark.parametrize("expression, expected_type", [ + ("window.frames[0]", WebFrame), + ("document.querySelector('div')", WebElement), + ("document.querySelector('custom-element').shadowRoot", ShadowRoot), + ("window", WebWindow) +], ids=["frame", "node", "shadow-root", "window"]) +def test_object_with_identifier_not_first_key(session, get_test_page, expression, expected_type): + session.url = get_test_page(as_frame=False) + + result = execute_async_script(session, f"arguments[0]({expression})") + reference = assert_success(result) + value = { + "foo": "bar", + expected_type.identifier: reference.id, + "baz": 1314 + } + + result = execute_async_script( + session, + """ + let resolve = arguments[1]; + resolve(arguments[0]); + """, + args=[value] + ) + reference = assert_success(result) + assert isinstance(reference, expected_type) +\ No newline at end of file diff --git a/testing/web-platform/tests/webdriver/tests/classic/execute_script/arguments.py b/testing/web-platform/tests/webdriver/tests/classic/execute_script/arguments.py @@ -190,3 +190,24 @@ def test_element_reference(session, get_test_page, expression, expected_type): result = execute_script(session, f"return arguments[0] == {expression}", [reference]) assert_success(result, True) + +@pytest.mark.parametrize("expression, expected_type", [ + ("window.frames[0]", WebFrame), + ("document.querySelector('div')", WebElement), + ("document.querySelector('custom-element').shadowRoot", ShadowRoot), + ("window", WebWindow) +], ids=["frame", "node", "shadow-root", "window"]) +def test_object_with_identifier_not_first_key(session, get_test_page, expression, expected_type): + session.url = get_test_page(as_frame=False) + + result = execute_script(session, f"return {expression}") + reference = assert_success(result) + value = { + "foo": "bar", + expected_type.identifier: reference.id, + "baz": 1314 + } + + result = execute_script(session, "return arguments[0]", args=[value]) + reference = assert_success(result) + assert isinstance(reference, expected_type)