Files
escape-builder/tests/AGENTS.md
Claude Agent b359bbe50a Timer Calm (T10 / §Design pct.10): ceas campanie opt-in
Ceas M:SS in bara chrome a campaniei. Opt-in din builder (camp "Timp limita
(minute)", default 0 = fara; cleanState coerce 0..120).

- porneste exact la "Incepe aventura" (intro necronometrat)
- deadline ABSOLUT in sessionStorage -> resume nu reseteaza ceasul
- sub 1 min -> auriu (.low); expirare -> ingheata 0:00 + marcaj discret
  (.expired), jocul curge nestingherit (zero penalizare, stelele raman)
- fara rosu pulsant (public copii) -> reduced-motion safe by default
- exemplu-campanie.html regenerat (ramane fara timer - opt-in, ca vocea)

Fundatie pentru muzica T10 (accelerare sub 1 min) + footer diploma.
Test nou (smoke 29/29): format M:SS, prag auriu, freeze la expirare,
jocul continua dupa expirare, resume pastreaza ceasul.

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

1.9 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 (~29 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 (16 — exemplu-*.html + edge cases + mobil 320px + regenerare via gameHTML + stil top-level invalid la import + bomberman gameplay + bomberman rază/powerup-uri) și @campanie (15 — intro→hartă→camere→final, resume, cameră moartă, idempotență ușă, $/$&, beep, mobil, audio S1, voce/narațiune D10, a11y tap/aria/reduced-motion, navigare overworld, timer calm T10).
  • Status țintă: 29/29 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                    # 29/29
npx playwright test tests/smoke.mjs --grep @regresie
npx playwright test tests/smoke.mjs --grep @campanie

Child DOX Index

(none — leaf)