[wdspec] Add "Get Element Text" tests for ShadowRoot with slot.
Differential Revision: https://phabricator.services.mozilla.com/D193651
bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1824664
gecko-commit: 8c758adbe3cbecd8c1ea1990921a78072254e6f3
gecko-reviewers: webdriver-reviewers, jgraham
diff --git a/webdriver/tests/classic/get_element_text/get.py b/webdriver/tests/classic/get_element_text/get.py
index 2a2363c..547152b 100644
--- a/webdriver/tests/classic/get_element_text/get.py
+++ b/webdriver/tests/classic/get_element_text/get.py
@@ -102,6 +102,42 @@
assert_success(result, "oo")
+@pytest.mark.parametrize("text, inner_html, expected", [
+ ("cheese", "<slot><span>foo</span>bar</slot>", "cheese"),
+ ("cheese", "<slot><span>foo</span></slot>bar", "cheesebar"),
+ ("cheese", "<slot><span style=\"display: none\">foo</span>bar</slot>", "cheese"),
+ ("", "<slot><span>foo</span>bar</slot>", "foobar"),
+ ("", "<slot><span>foo</span></slot>bar", "foobar"),
+ ("", "<slot><span style=\"display: none\">foo</span>bar</slot>", "bar"),
+], ids=[
+ "custom visible",
+ "custom outside",
+ "custom hidden",
+ "default visible",
+ "default outside",
+ "default hidden",
+])
+def test_shadow_root_slot(session, inline, text, inner_html, expected):
+ session.url = inline(f"""
+ <test-container>{text}</test-container>
+ <script>
+ class TestContainer extends HTMLElement {{
+ connectedCallback() {{
+ const shadow = this.attachShadow({{ mode: "open" }});
+ shadow.innerHTML = "{inner_html}";
+ }}
+ }}
+
+ customElements.define("test-container", TestContainer);
+ </script>
+ """)
+
+ element = session.find.css("test-container", all=False)
+
+ result = get_element_text(session, element.id)
+ assert_success(result, expected)
+
+
def test_pretty_print_xml(session, inline):
session.url = inline("<xml><foo>che<bar>ese</bar></foo></xml>", doctype="xml")