Files
escape-builder/tests/AGENTS.md
Claude Agent a30441eb03 PR2: audit a11y - reduced-motion, tap>=44px, aria pe progres+dpad
Audit faptic (masurat) pe 5 motoare + campanie. Deja OK din restyle S3:
tap targets (arcade 56x52, classic 44/48, chat 44), contrast (terminal .dim
9.4:1, classic hint 6:1), focus/keyboard (butoane reale, navigare cu sageti).

Reparat:
- reduced-motion (lacune): .confetti display:none in classic + SNIP.baseCss +
  campanie; flipin final in SNIP.finalCss (#fOverlay .fword span) + campanie
  (#fin-word span); dt-blink in campanie. (pop/flip/shake/bin/tile-pop/tp/
  door-glow/crt-flicker erau deja acoperite.) flipin/pop au 'backwards' fill ->
  animation:none le revine la starea vizibila, nu raman ascunse.
- tap: overworld dpad 42x42 -> 44x44 (singura tinta sub prag).
- aria: #dots role=group+label; fiecare dot role=img cu aria-label ce reflecta
  starea (neinceputa/in curs/rezolvata) via setDot; dpad arcade+overworld cu
  aria-label (Sus/Jos/Stanga/Dreapta/Pune bomba); spacere .sp aria-hidden.

Test nou smoke #9c (emulateMedia reducedMotion -> confetti display:none;
tap>=44px pe dpad; aria dinamic pe dots). 26/26. Demo-uri regenerate (terminal
neatins - nu foloseste SNIP base/final).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 12:04:55 +00:00

1.8 KiB

tests/ — Harness Playwright

Purpose

Smoke + regresie + campanie E2E pentru jocurile generate. Verifică faptic: fiecare stil se rezolvă până la ecranul final, fără erori de consolă.

Ownership

  • tests/smoke.mjs — unicul fișier de teste (~26 teste).
  • playwright.config.mjs (la root, gitignored) — config dev.

Local Contracts

  • NU commita package.json / package-lock.json / playwright.config.mjs — produsul rămâne zero-dependențe. Instalarea dev e o singură dată: npm i -D @playwright/test && npx playwright install chromium.
  • Fără npm scripts — se rulează direct cu npx.
  • Teste pe file:// — helper-ul fileURL(name) mapează cale relativă la file://; campania scrie HTML temp generat via builder (gameHTML) și-l încarcă de pe file://.
  • Zero erori consolă = invariant. trackErrors(page) colectează console.error + pageerror; fiecare test asertează errors.length === 0 la final.
  • Tag-uri: @regresie (14 — exemplu-*.html + edge cases + mobil 320px + regenerare via gameHTML + bomberman gameplay) și @campanie (12 — intro→hartă→camere→final, resume, cameră moartă, idempotență ușă, $/$&, beep, mobil, audio S1, voce/narațiune D10, a11y tap/aria/reduced-motion, navigare overworld).
  • Status țintă: 26/26 PASS.

Work Guidance

  • După modificări la motoare (escape-builder.html): rulează suita completă; extinde @regresie dacă adaugi/schimbi un stil, @campanie pentru contractul de montare.
  • Nu testa pe screenshot-uri de pixeli — asertează stare/text/erori.

Verification

npx playwright test tests/smoke.mjs                    # 26/26
npx playwright test tests/smoke.mjs --grep @regresie
npx playwright test tests/smoke.mjs --grep @campanie

Child DOX Index

(none — leaf)