commit 42f4cdd2316ce40c80db8ef2f3886d0cbb4b8862
parent d90bc672c55380ee15840db35a6e0a071693ed63
Author: Euclid Ye <yezhizhenjiakang@gmail.com>
Date: Thu, 27 Nov 2025 15:28:54 +0000
Bug 2002755 [wpt PR 56324] - webdriver: Enable implicit wait on error, a=testonly
Automatic update from web-platform-tests
Add implicit wait test for "find element"
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
--
Add implicit wait test for "find element from element"
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
--
Add implicit wait test for "find element from shadow root"
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
--
wpt-commits: f337c6ee1db3b2400b5e3d3f7555a8e0fadbbd30, 9e1ae62739e71c704608e7507e4faa57565c4769, 7e6c18f308e1a332a10030d05332c4a071909bf9
wpt-pr: 56324
Diffstat:
3 files changed, 83 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/webdriver/tests/classic/find_element/find.py b/testing/web-platform/tests/webdriver/tests/classic/find_element/find.py
@@ -119,3 +119,29 @@ def test_htmldocument(session, inline, using, value):
session.url = inline("")
response = find_element(session, using, value)
assert_success(response)
+
+
+def test_implicit_wait(session, inline):
+ session.url = inline("""
+ <script>
+ setTimeout(() => {
+ document.body.innerHTML = '<div id="delayed"></div>';
+ }, 300);
+ </script>
+ """)
+ session.timeouts.implicit = 1
+
+ response = find_element(session, "css selector", "#delayed")
+ value = assert_success(response)
+
+ expected = session.execute_script("return document.getElementById('delayed')")
+ assert_same_element(session, value, expected)
+
+
+def test_implicit_wait_timeout(session, inline):
+ session.url = inline("")
+ session.timeouts.implicit = 0.5
+
+ # Element never created
+ response = find_element(session, "css selector", "#nonexistent")
+ assert_error(response, "no such element")
diff --git a/testing/web-platform/tests/webdriver/tests/classic/find_element_from_element/find.py b/testing/web-platform/tests/webdriver/tests/classic/find_element_from_element/find.py
@@ -177,3 +177,29 @@ def test_parent_of_document_node_errors(session, inline):
response = find_element(session, from_element.id, "xpath", "..")
assert_error(response, "invalid selector")
+
+def test_implicit_wait(session, inline):
+ session.url = inline("""
+ <div id="parent"></div>
+ <script>
+ setTimeout(() => {
+ document.getElementById('parent').innerHTML = '<div id="delayed"></div>';
+ }, 300);
+ </script>
+ """)
+ session.timeouts.implicit = 1
+
+ from_element = session.find.css("#parent", all=False)
+ response = find_element(session, from_element.id, "css selector", "#delayed")
+ value = assert_success(response)
+
+ expected = session.execute_script("return document.getElementById('delayed')")
+ assert_same_element(session, value, expected)
+
+def test_implicit_wait_timeout(session, inline):
+ session.url = inline("<div id='parent'></div>")
+ session.timeouts.implicit = 0.5
+
+ from_element = session.find.css("#parent", all=False)
+ response = find_element(session, from_element.id, "css selector", "#nonexistent")
+ assert_error(response, "no such element")
diff --git a/testing/web-platform/tests/webdriver/tests/classic/find_element_from_shadow_root/find.py b/testing/web-platform/tests/webdriver/tests/classic/find_element_from_shadow_root/find.py
@@ -245,3 +245,34 @@ def test_find_element_in_nested_shadow_root(session, get_test_page, mode):
element = WebElement.from_json(value, session)
assert element.text == expected_text
+
+def test_implicit_wait_shadow_root(session, get_test_page):
+ session.url = get_test_page()
+ session.timeouts.implicit = 1
+
+ session.execute_script("""
+ setTimeout(() => {
+ const host = document.querySelector('custom-element');
+ const input = document.createElement('input');
+ input.id = 'delayed';
+ host.shadowRoot.appendChild(input);
+ }, 300);
+ """)
+
+ shadow_root = session.find.css("custom-element", all=False).shadow_root
+ response = find_element(session, shadow_root.id, "css selector", "#delayed")
+ value = assert_success(response)
+
+ expected = session.execute_script("""
+ return arguments[0].shadowRoot.getElementById('delayed')
+ """, args=(session.find.css("custom-element", all=False),))
+ assert_same_element(session, value, expected)
+
+
+def test_implicit_wait_timeout(session, get_test_page):
+ session.url = get_test_page()
+ session.timeouts.implicit = 0.5
+
+ shadow_root = session.find.css("custom-element", all=False).shadow_root
+ response = find_element(session, shadow_root.id, "css selector", "#nonexistent")
+ assert_error(response, "no such element")