|
| 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