Use locale-prefixed <Link> elements for EN/DE so language switching works even when client-side hydration is broken. Co-authored-by: dennis <dennis@konkol.net>
26 lines
854 B
TypeScript
26 lines
854 B
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("i18n routing", () => {
|
|
test("language switcher navigates between locales", async ({ page }) => {
|
|
await page.goto("/en", { waitUntil: "domcontentloaded" });
|
|
|
|
// Locale switchers are links (work even without hydration)
|
|
const deLink = page.getByRole("link", { name: "Sprache auf Deutsch umstellen" });
|
|
if (await deLink.count()) {
|
|
// Verify an EN label is present before switching (nav.home)
|
|
await expect(page.getByRole("link", { name: "Home" })).toBeVisible();
|
|
|
|
await Promise.all([
|
|
page.waitForURL(/\/de(\/|$)/, { timeout: 30000 }),
|
|
deLink.click(),
|
|
]);
|
|
|
|
// Verify the nav label updates after switching
|
|
await expect(page.getByRole("link", { name: "Start" })).toBeVisible();
|
|
} else {
|
|
test.skip();
|
|
}
|
|
});
|
|
});
|
|
|