add(ui/ux): german and english ui with a toggle in the navbar
This commit is contained in:
@@ -57,12 +57,14 @@ def server(tmp_path_factory):
|
||||
|
||||
@pytest.fixture
|
||||
def page(server):
|
||||
"""A German browser, so the UI language is the same everywhere."""
|
||||
with sync_api.sync_playwright() as pw:
|
||||
try:
|
||||
browser = pw.chromium.launch()
|
||||
except Exception as exc: # browsers not downloaded
|
||||
pytest.skip(f"no chromium: {exc}")
|
||||
page = browser.new_page(viewport={"width": 1200, "height": 900})
|
||||
page = browser.new_page(viewport={"width": 1200, "height": 900},
|
||||
locale="de-DE")
|
||||
errors = []
|
||||
page.on("pageerror", lambda e: errors.append(str(e)))
|
||||
page.goto(server, wait_until="networkidle")
|
||||
@@ -124,3 +126,30 @@ def test_format_tags_and_the_format_filter(page):
|
||||
rows = page.locator("#import-table tbody tr")
|
||||
assert rows.count() == 1
|
||||
assert "epub" in rows.first.locator(".tag.fmt").text_content()
|
||||
|
||||
|
||||
def test_the_browser_language_decides_and_the_toggle_switches(page, server):
|
||||
assert page.locator("nav button[data-view=search]").text_content() == "Suche"
|
||||
assert page.locator("#lang-toggle").text_content() == "EN"
|
||||
|
||||
page.click("#lang-toggle")
|
||||
assert page.locator("nav button[data-view=search]").text_content() == "Search"
|
||||
assert page.locator("#lang-toggle").text_content() == "DE"
|
||||
assert page.get_attribute("html", "lang") == "en"
|
||||
assert page.get_attribute("#search-q", "placeholder") == "Title, author or ISBN…"
|
||||
|
||||
page.reload(wait_until="networkidle") # the choice outlives the reload
|
||||
assert page.locator("nav button[data-view=search]").text_content() == "Search"
|
||||
|
||||
|
||||
def test_english_reaches_the_rendered_rows(page):
|
||||
page.click("#lang-toggle")
|
||||
page.click("nav button[data-view=import]")
|
||||
page.click("#scan-btn")
|
||||
page.wait_for_selector("[data-quick]")
|
||||
assert "— skip —" in page.locator("#import-table tbody select").first.text_content()
|
||||
assert "2.0 KB" in " ".join(page.locator("#import-table .tag.fmt").all_text_contents())
|
||||
# switching back re-renders the table that is already on screen
|
||||
page.click("#lang-toggle")
|
||||
assert "— überspringen —" in page.locator("#import-table tbody select").first.text_content()
|
||||
assert "2,0 KB" in " ".join(page.locator("#import-table .tag.fmt").all_text_contents())
|
||||
|
||||
Reference in New Issue
Block a user