summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webdriver/tests/interop/shared_id_node.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webdriver/tests/interop/shared_id_node.py')
-rw-r--r--testing/web-platform/tests/webdriver/tests/interop/shared_id_node.py101
1 files changed, 101 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webdriver/tests/interop/shared_id_node.py b/testing/web-platform/tests/webdriver/tests/interop/shared_id_node.py
new file mode 100644
index 0000000000..aeb2bc4597
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/interop/shared_id_node.py
@@ -0,0 +1,101 @@
+import pytest
+
+from webdriver import ShadowRoot, WebElement
+from webdriver.bidi.modules.script import ContextTarget
+
+pytestmark = pytest.mark.asyncio
+
+DOCUMENT_FRAGMENT_NODE = 11
+ELEMENT_NODE = 1
+
+
+async def test_web_element_reference_created_in_classic(
+ bidi_session,
+ current_session,
+ get_test_page,
+ top_context,
+):
+ current_session.url = get_test_page()
+
+ node = current_session.execute_script(
+ """return document.querySelector("div#with-children")"""
+ )
+ shared_id = node.id
+
+ # Use element reference from WebDriver classic in WebDriver BiDi
+ result = await bidi_session.script.call_function(
+ function_declaration="(node)=>{return node.nodeType}",
+ arguments=[{"sharedId": shared_id}],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ assert result == {"type": "number", "value": ELEMENT_NODE}
+
+
+async def test_web_element_reference_created_in_bidi(
+ bidi_session,
+ current_session,
+ get_test_page,
+ top_context,
+):
+ current_session.url = get_test_page()
+
+ result = await bidi_session.script.evaluate(
+ expression="""document.querySelector("div#with-children")""",
+ target=ContextTarget(top_context["context"]),
+ await_promise=False,
+ )
+
+ nodeType = result["value"]["nodeType"]
+ assert nodeType == ELEMENT_NODE
+
+ # Use element reference from WebDriver BiDi in WebDriver classic
+ node = WebElement(current_session, result["sharedId"])
+ nodeType = current_session.execute_script(
+ """return arguments[0].nodeType""", args=(node,)
+ )
+ assert nodeType == ELEMENT_NODE
+
+
+@pytest.mark.parametrize("shadow_root_mode", ["open", "closed"])
+async def test_shadow_root_reference_created_in_classic(
+ bidi_session, current_session, get_test_page, top_context, shadow_root_mode
+):
+ current_session.url = get_test_page(shadow_root_mode=shadow_root_mode)
+
+ node = current_session.execute_script(
+ """return document.querySelector("custom-element")"""
+ )
+ shared_id = node.shadow_root.id
+
+ # Use shadow root reference from WebDriver classic in WebDriver BiDi
+ result = await bidi_session.script.call_function(
+ function_declaration="(node)=>{return node.nodeType}",
+ arguments=[{"sharedId": shared_id}],
+ await_promise=False,
+ target=ContextTarget(top_context["context"]),
+ )
+
+ assert result == {"type": "number", "value": DOCUMENT_FRAGMENT_NODE}
+
+
+@pytest.mark.parametrize("shadow_root_mode", ["open", "closed"])
+async def test_shadow_root_reference_created_in_bidi(
+ bidi_session, current_session, get_test_page, top_context, shadow_root_mode
+):
+ current_session.url = get_test_page(shadow_root_mode=shadow_root_mode)
+
+ result = await bidi_session.script.evaluate(
+ expression="""document.querySelector("custom-element")""",
+ target=ContextTarget(top_context["context"]),
+ await_promise=False,
+ )
+ shared_id_for_shadow_root = result["value"]["shadowRoot"]["sharedId"]
+
+ # Use shadow root reference from WebDriver BiDi in WebDriver classic
+ node = ShadowRoot(current_session, shared_id_for_shadow_root)
+ nodeType = current_session.execute_script(
+ """return arguments[0].nodeType""", args=(node,)
+ )
+ assert nodeType == DOCUMENT_FRAGMENT_NODE