diff options
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.py | 101 |
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 |