"""UIE-05: E2E tests for language toggle — FR/EN switching and localStorage persistence.""" from __future__ import annotations import pytest def test_language_toggle_switches_nav_label(page, live_server: str) -> None: """Clicking FR/EN button switches nav label from French to English.""" page.goto(f"{live_server}/", wait_until="domcontentloaded") # Default lang is 'fr' — nav should show French labels # Wait for Alpine to hydrate page.wait_for_function( "document.querySelector('nav a[href=\"/printers\"]').textContent.trim() !== ''", timeout=3000, ) # In French, printers nav label = 'Imprimantes' printers_label_fr = page.text_content("nav a[href='/printers']").strip() assert printers_label_fr == "Imprimantes", f"Expected 'Imprimantes', got '{printers_label_fr}'" # Click the language toggle button page.click("button[title='Toggle language']") # Wait for label to update page.wait_for_function( "document.querySelector('nav a[href=\"/printers\"]').textContent.trim() === 'Printers'", timeout=2000, ) printers_label_en = page.text_content("nav a[href='/printers']").strip() assert printers_label_en == "Printers" # Cleanup: reset to fr page.evaluate("localStorage.setItem('imptune_lang', 'fr')") def test_language_persists_across_reload(page, live_server: str) -> None: """After switching to EN, language is preserved on page reload.""" page.goto(f"{live_server}/", wait_until="domcontentloaded") # Switch to English page.click("button[title='Toggle language']") page.wait_for_function( "document.querySelector('nav a[href=\"/printers\"]').textContent.trim() === 'Printers'", timeout=2000, ) # Reload page.reload(wait_until="domcontentloaded") page.wait_for_function( "document.querySelector('nav a[href=\"/printers\"]').textContent.trim() !== ''", timeout=3000, ) label_after_reload = page.text_content("nav a[href='/printers']").strip() assert label_after_reload == "Printers" # Cleanup: reset to fr page.evaluate("localStorage.setItem('imptune_lang', 'fr')")