(dash_duo, clear_pages_state)
| 51 | |
| 52 | |
| 53 | def test_pala001_layout(dash_duo, clear_pages_state): |
| 54 | app = get_app() |
| 55 | dash_duo.start_server(app) |
| 56 | |
| 57 | # test layout and title for each page in `page_registry` with link navigation |
| 58 | for page in dash.page_registry.values(): |
| 59 | dash_duo.find_element("#" + page["id"]).click() |
| 60 | dash_duo.wait_for_text_to_equal("#text_" + page["id"], "text for " + page["id"]) |
| 61 | until(lambda: dash_duo.driver.title == page["title"], timeout=3) |
| 62 | |
| 63 | # test redirects |
| 64 | dash_duo.wait_for_page(url=f"{dash_duo.server_url}/v2") |
| 65 | dash_duo.wait_for_text_to_equal("#text_redirect", "text for redirect") |
| 66 | dash_duo.wait_for_page(url=f"{dash_duo.server_url}/old-home-page") |
| 67 | dash_duo.wait_for_text_to_equal("#text_redirect", "text for redirect") |
| 68 | assert dash_duo.driver.current_url == f"{dash_duo.server_url}/redirect" |
| 69 | |
| 70 | # test redirect with button and user defined dcc.Location |
| 71 | # note: dcc.Location must be defined in app.py |
| 72 | dash_duo.wait_for_page(url=f"{dash_duo.server_url}/page1") |
| 73 | dash_duo.find_element("#btn1").click() |
| 74 | dash_duo.wait_for_text_to_equal("#text_page2", "text for page2") |
| 75 | |
| 76 | # test query strings |
| 77 | dash_duo.wait_for_page(url=f"{dash_duo.server_url}/query-string?velocity=10") |
| 78 | assert ( |
| 79 | dash_duo.find_element("#velocity").get_attribute("value") == "10" |
| 80 | ), "query string passed to layout" |
| 81 | |
| 82 | # test path variables |
| 83 | dash_duo.wait_for_page(url=f"{dash_duo.server_url}/a/none/b/none") |
| 84 | dash_duo.wait_for_text_to_equal("#path_vars", "variables from pathname:none none") |
| 85 | |
| 86 | dash_duo.wait_for_page(url=f"{dash_duo.server_url}/a/var1/b/var2") |
| 87 | dash_duo.wait_for_text_to_equal("#path_vars", "variables from pathname:var1 var2") |
| 88 | |
| 89 | # test page not found |
| 90 | dash_duo.wait_for_page(url=f"{dash_duo.server_url}/find_me") |
| 91 | dash_duo.wait_for_text_to_equal("#text_not_found_404", "text for not_found_404") |
| 92 | |
| 93 | # test `validation_layout` exists when suppress_callback_exceptions=False` |
| 94 | assert app.validation_layout is not None |
| 95 | |
| 96 | assert dash_duo.get_logs() == [], "browser console should contain no error" |
| 97 | # dash_duo.percy_snapshot("pala001_layout") |
| 98 | |
| 99 | |
| 100 | def check_metas(dash_duo, metas): |
nothing calls this directly
no test coverage detected
searching dependent graphs…