Skip to content

Commit 9b2ece0

Browse files
committed
adding playwright navbar tests
1 parent 68a01d0 commit 9b2ece0

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

tests/playwright/shiny/TODO/navbar/app.py renamed to tests/playwright/shiny/navbar/app.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def nav_items(prefix: str) -> list[NavSetArg]:
4747
sidebar=my_sidebar,
4848
title="page_navbar()",
4949
bg="#0062cc",
50+
id="page_navbar",
5051
header=ui.markdown(
5152
"Testing app for `bslib::nav_spacer()` and `bslib::nav_item()` [#319](https://github.com/rstudio/bslib/pull/319)."
5253
),
@@ -55,17 +56,20 @@ def nav_items(prefix: str) -> list[NavSetArg]:
5556
ui.h4("navset_card_tab()"),
5657
ui.navset_card_tab(
5758
*nav_items("navset_card_tab()"),
59+
id="navset_card_tab",
5860
sidebar=my_sidebar,
5961
),
6062
ui.h4("navset_card_pill()"),
6163
ui.navset_card_pill(
6264
*nav_items("navset_card_pill()"),
65+
id="navset_card_pill",
6366
sidebar=my_sidebar,
6467
),
6568
# Do not include `navset_bar()` in example. Ok for testing only
6669
ui.h4("navset_bar()"),
6770
ui.navset_bar(
6871
*nav_items("navset_bar()"),
72+
id="navset_bar",
6973
title="Test!",
7074
sidebar=my_sidebar,
7175
),
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import pytest
2+
from examples.example_apps import reruns, reruns_delay
3+
from playwright.sync_api import Page
4+
5+
from shiny.playwright import controller
6+
from shiny.run import ShinyAppProc
7+
8+
9+
@pytest.mark.flaky(reruns=reruns, reruns_delay=reruns_delay)
10+
def test_navbar(page: Page, local_app: ShinyAppProc) -> None:
11+
values = ["a", "b", "c"]
12+
13+
def verify_panel_updates(elem):
14+
a_panel = elem.nav_panel("a")
15+
b_panel = elem.nav_panel("b")
16+
c_panel = elem.nav_panel("c")
17+
a_panel.click()
18+
a_panel.expect_active(True)
19+
b_panel.expect_active(False)
20+
c_panel.expect_active(False)
21+
assert (
22+
f"{elem.id}(): tab a content\n"
23+
in elem.get_loc_active_content().all_text_contents()
24+
)
25+
b_panel.click()
26+
a_panel.expect_active(False)
27+
b_panel.expect_active(True)
28+
c_panel.expect_active(False)
29+
assert (
30+
f"{elem.id}(): tab b content\n"
31+
in elem.get_loc_active_content().all_text_contents()
32+
)
33+
c_panel.click()
34+
a_panel.expect_active(False)
35+
b_panel.expect_active(False)
36+
c_panel.expect_active(True)
37+
assert (
38+
f"{elem.id}(): tab c content\n"
39+
in elem.get_loc_active_content().all_text_contents()
40+
)
41+
42+
page.goto(local_app.url)
43+
44+
nav_bar = controller.PageNavbar(page, "page_navbar")
45+
nav_bar.expect_nav_values(values)
46+
verify_panel_updates(nav_bar)
47+
48+
navset_card_tab = controller.NavsetCardTab(page, "navset_card_tab")
49+
navset_card_tab.expect_nav_values(values)
50+
verify_panel_updates(navset_card_tab)
51+
52+
navset_card_pill = controller.NavsetCardPill(page, "navset_card_pill")
53+
navset_card_pill.expect_nav_values(values)
54+
verify_panel_updates(navset_card_pill)
55+
56+
navset_bar = controller.NavsetBar(page, "navset_bar")
57+
navset_bar.expect_nav_values(values)
58+
verify_panel_updates(navset_bar)

0 commit comments

Comments
 (0)