40 lines
1.6 KiB
TypeScript
40 lines
1.6 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("Locale Switcher", () => {
|
|
test("locale switcher is visible in header", async ({ page }) => {
|
|
await page.goto("/");
|
|
await expect(page.locator('[data-testid="header"]')).toBeVisible();
|
|
// Locale switcher should be present
|
|
const localeSwitcher = page.locator('[data-testid="locale-switcher"]');
|
|
// If not using that testid, check for a select or button in the header
|
|
const headerInteractives = page.locator('[data-testid="header"] select, [data-testid="header"] button');
|
|
const count = await headerInteractives.count();
|
|
expect(count).toBeGreaterThan(0);
|
|
});
|
|
|
|
test("i18n page locale-select changes output text", async ({ page }) => {
|
|
await page.goto("/i18n");
|
|
await expect(page.locator('[data-testid="output"]')).toBeVisible();
|
|
|
|
// Get initial text in English
|
|
const initialText = await page.locator('[data-testid="output"]').textContent();
|
|
expect(initialText).toBeTruthy();
|
|
|
|
// Switch to French
|
|
await page.locator('[data-testid="locale-select"]').selectOption("fr");
|
|
|
|
// Output should now contain French text
|
|
const frenchText = await page.locator('[data-testid="output"]').textContent();
|
|
expect(frenchText).toContain("article");
|
|
});
|
|
|
|
test("i18n page locale-select changes to Japanese", async ({ page }) => {
|
|
await page.goto("/i18n");
|
|
await page.locator('[data-testid="locale-select"]').selectOption("ja");
|
|
const text = await page.locator('[data-testid="output"]').textContent();
|
|
// Japanese output contains Japanese characters or specific words
|
|
expect(text).toBeTruthy();
|
|
expect(text).toContain("アイテム");
|
|
});
|
|
});
|