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