Projekt kombinuje Nette aplikační vrstvu, PostgreSQL DB a bridge orchestraci na externí skripty. Potřebujeme:
1. Rychlé testy pro doménovou logiku a services (unit/integration)
2. Scénáře blízké produkčnímu provozu pro UI flows (E2E)
3. Smoke crawl pro detekci Tracy exceptions a JS chyb po každé změně
Uvažované varianty:
A) Pouze Playwright pro vše — zamítnuto: pomalejší feedback loop pro domain/service testy
B) Pouze PHPUnit bez acceptance vrstvy — zamítnuto: chyběla by validace end-to-end UX flow
C) Hybridní strategie — PHPUnit + Playwright
Playwright zvolen pro E2E protože:
1. Existující crawler.spec.ts infrastruktura (WebCrawler, Logger, auth) je přenosná z EP21 ekosystému
2. Headless Chromium, screenshot on failure, JSONL event log — vhodné pro CI i daily pipeline
3. make e2e (anonymous) + make e2e-auth (s credentials z .env.e2e) pokrývají oba přístupy
PHPUnit pro unit a integration testy:
1. Rychlý feedback loop pro Model/Service logiku
2. Přímý přístup k DB pro integration testy bez HTTP overhead
Test pyramid: unit testy jsou základ, E2E smoke je doplněk pro detekci regresí.
Konfigurace: tests/e2e/config/e2e.config.json
Artifakty: artifacts/e2e/events.jsonl, summary.json, playwright-report/, screenshots/
Make targety:
make e2e — Playwright crawler (unauthenticated)
make e2e-auth — s credentials z .env.e2e
make daily — full daily pipeline (E2E → sync → prompt)
Spec soubory:
tests/e2e/crawler.spec.ts — smoke crawler (general)
tests/e2e/helpdesk.spec.ts — helpdesk smoke testy (dashboard, list, detail, new ticket, status change)
tests/e2e/entity-creation.spec.ts — fixture-driven form submission testy
Authentikace pro e2e-auth: .env.e2e (gitignored) s E2E_USERNAME + E2E_PASSWORD — testovací agent user s předem nastaveným tenantem a právy.
Pozitivní:
Negativní / rizika:
| Version | Date | Author | Note |
|---|---|---|---|
| 1.0.0 | 2026-04-10 | david.sorf + claude-sonnet-4-6 | Migrováno a rozšířeno z docs/adr/ADR-Testing-Toolchain-Strategy.md. Přidán Playwright jako primární E2E nástroj (nahrazuje Codeception z původního ADR), přidán helpdesk.spec.ts scope. |