| import time |
| from playwright.sync_api import Page, expect |
|
|
| def test_settings_persistence(authenticated_page: Page): |
| """Test theme persistence via Settings API (Phase 6.3) deterministically""" |
| page = authenticated_page |
| |
| |
| menu_trigger = page.locator("#auth-menu-trigger") |
| menu_trigger.wait_for(state="visible", timeout=15000) |
| |
| |
| theme_btn = page.locator("#theme-toggle") |
| theme_btn.wait_for(state="visible") |
| |
| |
| html_el = page.locator("html") |
| data_theme_before = html_el.get_attribute("data-theme") or "" |
| is_dark_before = "dark" in data_theme_before |
| |
| |
| theme_btn.click(force=True) |
| |
| |
| if is_dark_before: |
| |
| page.wait_for_function("document.documentElement.getAttribute('data-theme') !== 'dark'", timeout=5000) |
| else: |
| |
| page.wait_for_function("document.documentElement.getAttribute('data-theme') === 'dark'", timeout=5000) |
|
|
| data_theme_after = html_el.get_attribute("data-theme") or "" |
| is_dark_after = "dark" in data_theme_after |
| |
| |
| assert is_dark_before != is_dark_after, "Theme did not toggle after click" |
| |
| |
| page.wait_for_load_state("networkidle") |
| |
| page.wait_for_timeout(500) |
| |
| |
| page.reload() |
| page.wait_for_load_state("networkidle") |
| |
| html_el = page.locator("html") |
| |
| reloaded_theme = html_el.get_attribute("data-theme") or "" |
| reloaded_dark = "dark" in reloaded_theme |
| |
| assert is_dark_after == reloaded_dark, "Theme setting did not persist after reload" |
|
|
|
|