Skip to content

Commit 890af94

Browse files
authored
fix: get_by_role include_hidden options (#1814)
1 parent 344c56f commit 890af94

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

playwright/_impl/_locator.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,10 @@ def get_by_text_selector(text: Union[str, Pattern[str]], exact: bool = None) ->
822822
return "internal:text=" + escape_for_text_selector(text, exact=exact)
823823

824824

825+
def bool_to_js_bool(value: bool) -> str:
826+
return "true" if value else "false"
827+
828+
825829
def get_by_role_selector(
826830
role: AriaRole,
827831
checked: bool = None,
@@ -836,15 +840,15 @@ def get_by_role_selector(
836840
) -> str:
837841
props: List[Tuple[str, str]] = []
838842
if checked is not None:
839-
props.append(("checked", str(checked)))
843+
props.append(("checked", bool_to_js_bool(checked)))
840844
if disabled is not None:
841-
props.append(("disabled", str(disabled)))
845+
props.append(("disabled", bool_to_js_bool(disabled)))
842846
if selected is not None:
843-
props.append(("selected", str(selected)))
847+
props.append(("selected", bool_to_js_bool(selected)))
844848
if expanded is not None:
845-
props.append(("expanded", str(expanded)))
849+
props.append(("expanded", bool_to_js_bool(expanded)))
846850
if includeHidden is not None:
847-
props.append(("include-hidden", str(includeHidden)))
851+
props.append(("include-hidden", bool_to_js_bool(includeHidden)))
848852
if level is not None:
849853
props.append(("level", str(level)))
850854
if name is not None:
@@ -857,6 +861,6 @@ def get_by_role_selector(
857861
)
858862
)
859863
if pressed is not None:
860-
props.append(("pressed", str(pressed)))
864+
props.append(("pressed", bool_to_js_bool(pressed)))
861865
props_str = "".join([f"[{t[0]}={t[1]}]" for t in props])
862866
return f"internal:role={role}{props_str}"

tests/async/test_selectors_get_by.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,20 @@ async def test_get_by_role_escaping(
161161
)
162162
== []
163163
)
164+
165+
166+
async def test_include_hidden_should_work(
167+
page: Page,
168+
) -> None:
169+
await page.set_content("""<button style="display: none">Hidden</button>""")
170+
assert (
171+
await page.get_by_role("button", name="Hidden").evaluate_all(
172+
"els => els.map(e => e.outerHTML)"
173+
)
174+
== []
175+
)
176+
assert await page.get_by_role(
177+
"button", name="Hidden", include_hidden=True
178+
).evaluate_all("els => els.map(e => e.outerHTML)") == [
179+
"""<button style="display: none">Hidden</button>""",
180+
]

0 commit comments

Comments
 (0)