From 7090d3a8369f1502dcaeec9da288906d961153ff Mon Sep 17 00:00:00 2001 From: BenStullsBets Date: Mon, 29 Jun 2026 18:55:36 -0700 Subject: [PATCH] test(i18n): e2e for language dropdown chrome + reset on reload Co-Authored-By: Claude Opus 4.8 (1M context) --- simulator/e2e/tests/i18n.spec.ts | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 simulator/e2e/tests/i18n.spec.ts diff --git a/simulator/e2e/tests/i18n.spec.ts b/simulator/e2e/tests/i18n.spec.ts new file mode 100644 index 0000000..14c330f --- /dev/null +++ b/simulator/e2e/tests/i18n.spec.ts @@ -0,0 +1,36 @@ +import { test, expect, Page } from "@playwright/test"; + +// The language dropdown localizes the visitor-facing chrome live (and resets to +// English on reload — selection is session-only, no persistence). Annotation +// re-rendering is covered by the unit tests (resolveStrings) + the manifest +// invariant test; here we assert the DOM behavior of the dropdown itself. + +async function boot(page: Page) { + await page.goto("/"); + // initLanguage() populates the select during startup (before media preload). + await expect(page.locator("#lang-select option")).toHaveCount(4); +} + +test("language dropdown localizes chrome and resets to English on reload", async ({ page }) => { + await boot(page); + const sel = page.locator("#lang-select"); + + // English selected by default + await expect(sel).toHaveValue("en"); + await expect(page.locator('[data-i18n="output.legend"]')).toHaveText("Output"); + await expect(page.locator("html")).toHaveAttribute("lang", "en"); + + // switch to Spanish -> chrome changes, updates + await sel.selectOption("es"); + await expect(page.locator('[data-i18n="output.legend"]')).toHaveText("Salida"); + await expect(page.locator("html")).toHaveAttribute("lang", "es"); + + // Japanese + await sel.selectOption("ja"); + await expect(page.locator('[data-i18n="knobs.think"]')).toHaveText("考える"); + + // reload returns to English (session-only, no persistence) + await page.reload(); + await expect(page.locator("#lang-select")).toHaveValue("en"); + await expect(page.locator('[data-i18n="output.legend"]')).toHaveText("Output"); +});