tts-voice-creator-clone-and.../tests/i18n.spec.js
mARTin-B78 40e42590cc Release v1.6.0: a11y (WCAG AA), i18n (DE), PWA, perf, tests, Cast UX
Cast: card/list views, sort & filter, online voice picker, "Hear a line"
sample button, AI character notes, import auto-save.

Platform: WCAG 2.1 AA accessibility pass; German UI translation + language
picker; installable PWA with offline shell; GZip + content-visibility
virtualization + lazy images + Rehearser PCM memory cap (mobile stability);
Playwright suite (desktop + iPhone); opt-in minified bundle build.

Fixes: screenplay parser false characters; Fish-Speech inline-tag tones;
narrator/voice pickers list full library; clone GUI rework; fish.audio
import dedup; voice-ID rename; bulk-delete modal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 14:23:35 +02:00

22 lines
1.2 KiB
JavaScript

// @ts-check
// Verifies the language picker + German translation of the UI chrome.
const { test, expect } = require('@playwright/test');
test('defaults to English and shows the language picker', async ({ page }) => {
await page.goto('/', { waitUntil: 'domcontentloaded' });
await expect(page.locator('#app-lang-picker')).toBeVisible();
await expect(page.locator('.nav-item', { hasText: 'Clone a Voice' }).first()).toBeVisible();
});
test('German translates the navigation and section titles', async ({ page }) => {
await page.addInitScript(() => { try { localStorage.setItem('app-lang', 'de'); } catch (e) {} });
await page.goto('/', { waitUntil: 'domcontentloaded' });
await page.waitForFunction(() => typeof window.applyI18n === 'function', null, { timeout: 15_000 });
await page.waitForTimeout(1500);
await expect(page.locator('#app-lang-picker')).toHaveValue('de');
await expect(page.locator('.nav-item', { hasText: 'Stimme klonen' }).first()).toBeVisible();
await expect(page.getByText('Meine Stimmen').first()).toBeVisible();
// English source text should no longer be present in the nav
await expect(page.locator('.nav-item', { hasText: 'Get Voices Online' })).toHaveCount(0);
});