You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

41 lines
1.4 KiB

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.*"))