from __future__ import annotations import re from playwright.sync_api import Page, expect from tests.e2e.helpers import login, open_user_menu def test_theme_toggle_persists_across_pages_and_refresh( page: Page, base_url: str, admin_credentials: dict[str, str], ) -> None: login(page, base_url, username=admin_credentials["username"], password=admin_credentials["password"]) expect(page).to_have_url(f"{base_url}/") open_user_menu(page) theme_toggle = page.locator("#theme-toggle") expect(theme_toggle).to_be_visible() expect(page.locator("html")).not_to_have_class(re.compile(r".*\bdark\b.*")) theme_toggle.click() expect(page.locator("html")).to_have_class(re.compile(r".*\bdark\b.*")) assert page.evaluate("window.localStorage.getItem('hw-theme')") == "dark" page.reload() expect(page.locator("html")).to_have_class(re.compile(r".*\bdark\b.*")) page.goto(f"{base_url}/quick-entry/") expect(page.locator("html")).to_have_class(re.compile(r".*\bdark\b.*")) open_user_menu(page) expect(page.locator("#theme-toggle")).to_be_visible() page.locator("#theme-toggle").click() expect(page.locator("html")).not_to_have_class(re.compile(r".*\bdark\b.*")) assert page.evaluate("window.localStorage.getItem('hw-theme')") == "light" page.goto(f"{base_url}/admin/share-links") expect(page.locator("html")).not_to_have_class(re.compile(r".*\bdark\b.*"))