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:
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)