Tests
Der Starter bringt eine Playwright-Suite mit: E2E im Browser, API-Tests, Admin-Smoke-Tests und visuelle Regression.
Basis ist playwright.config.ts; tests/global-setup.ts legt deterministische Seed-Daten an, tests/global-teardown.ts räumt sie wieder auf.
Projekte und Ordner
Abschnitt betitelt „Projekte und Ordner“| Projekt | Ordner | Wofür |
|---|---|---|
chromium |
tests/e2e/ |
Desktop-E2E gegen die Website |
api |
tests/api/ |
API-Tests mit den Fixtures api/adminApi |
admin |
tests/e2e-admin/ |
Admin-Smoke-Tests, eigene Basis-URL TEST_ADMIN_BASE_URL |
mobile-iphonese, mobile-ipad |
tests/e2e-mobile/ |
Mobile-E2E (iPhone SE, iPad Mini) |
visual-desktop, visual-iphonese, visual-ipad |
tests/e2e-visual/ |
Screenshots gegen Baselines in __screenshots__/ |
Rahmen aus playwright.config.ts: Die Suite startet keinen eigenen Web-Server (kein webServer-Schlüssel) — sie läuft gegen die erreichbare Basis-URL.
TEST_BASE_URL kommt aus der Env-Variable CODING_URL, sonst aus .env, sonst http://localhost:3000; TEST_ADMIN_BASE_URL folgt derselben Kette aus CODING_TIBIADMIN_URL.
HTML-Report ohne Auto-Open, Trace an, domcontentloaded als Standard (BrowserSync hält load sonst offen), Wiederholungen und Worker-Zahl hängen von CI ab.
Anfragen mit Playwright im User-Agent umgehen die Basic-Auth (siehe Kommentar in playwright.config.ts).
Seed-Daten leben in tests/api/helpers/seed-data.ts, die Routen-Konstanten in tests/fixtures/test-constants.ts (SEEDED_TEST_CONTENT: Home, Pagebuilder-Vorschau, Kontakt, inaktiv — je mit translationKey und Pfad).
Das Setup prüft / und /api/content und sät die Datensätze; _testdata markiert Seed-Einträge.
Starten
Abschnitt betitelt „Starten“yarn test # alles (playwright test)yarn test:e2e # nur tests/e2e (Projekt chromium)yarn test:api # nur tests/api (Projekt api)yarn test:visual # visuelle Regression (drei visual-Projekte)yarn test:visual:update # Baselines neu schreiben und committenyarn test:report # HTML-Report öffnen (playwright show-report)npx playwright test tests/e2e/home.spec.ts # einzelne Dateinpx playwright test -g "Titelwort" # einzelner Test per Titelmake test test-e2e test-api test-visual # gleiche Ziele via MakefileVoraussetzung: Der Stack läuft und liefert unter der Basis-URL Website plus /api/... aus.
Artefakte: playwright-report/ (HTML-Report) und test-results/ (Traces).
Mock-Betrieb
Abschnitt betitelt „Mock-Betrieb“Ohne Backend arbeiten: MOCK=1 schaltet den API-Interceptor ein.
yarn start:mock # MOCK=1 node scripts/esbuild-wrapper.js startWirkung (frontend/src/lib/mock.ts, frontend/src/lib/api.ts, esbuild.config.js):
- Mit
MOCK=1steht__MOCK__auftrue;api()beantwortet Lesezugriffe ausfrontend/mocking/*.json(Sammlungencontent,medialib,navigation,comment). - Unterstützt Filter (auch
$and/$or,$in,$regex), Sortierung,limit/offset, Projection, Einzelabruf per ID, Kommentar-Zähler und Lookups. - Ohne
MOCK=1ersetzt ein esbuild-Plugin das Mock-Modul durch einen No-Op — Mock-Daten landen nicht im Produktions-Bundle.
Grenzen:
- Nur Lesen: Schreibaufrufe speichern nichts (
_bodybleibt ungenutzt); Sammlungen ohne Mock-Daten antworten mit 404. tags.jsonliegt infrontend/mocking/, ist aber nicht im Mock-Register — Tag-Abfragen fallen auf 404.- Der Mock greift nur in
api(); direktefetch-Aufrufe, Server-Hooks und SSR laufen unverändert. - Im Compose-Stack ist
MOCKStandard0, in.envals Kommentar hinterlegt.
Eigene Tests ergänzen
Abschnitt betitelt „Eigene Tests ergänzen“- E2E-Spec in
tests/e2e/anlegen und die Fixtures aus../fixturesnutzen (waitForSpaReady,navigateToRoute,clickSpaLink). - Selektoren per Rolle formulieren (
getByRole), wietests/e2e/home.spec.ts; Navigation nutzt immerdomcontentloaded(die Fixture überschreibtgoto/reloadwegen BrowserSync). - API-Spec in
tests/api/schreiben mit den Fixturesapi/adminApi; Seed-Routen stehen inSEEDED_TEST_CONTENT, neue Seed-Daten gehören intests/api/helpers/seed-data.tsplus_testdata-Flag. - Visuellen Test in
tests/e2e-visual/mitprepareForScreenshotundexpectScreenshotaufbauen; dynamische Bereiche pergetDynamicMasksausblenden und Baselines committen.
Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter, package.json, playwright.config.ts, tests/, frontend/src/lib/mock.ts)