Files
escape-builder/tests/AGENTS.md
Claude Agent d8cb515545 Muzica ambient T10: arpegiu calm care accelereaza sub 1 min
Opt-in din builder (checkbox music, default off). Orchestrator-only: parintele
detine AudioContext (reutilizeaza beep._ctx); camerele nu stiu de muzica.

- arpegiu pentatonica minora (oscilatoare sine scurte), tempo ~1.8x pe ultimul
  minut (legat de _deadline-ul Timer Calm); fara timer -> loop calm fara accelerare
- buton 🎵/🔇 in bara chrome (#btn-music)
- duck pe voce: voiceSay onstart/onend regleaza gain (vocea are prioritate)
- fallback fara AudioContext -> no-op, buton ascuns (zero penalizare)
- porneste la start + resume; stop la showFinale + toggle
- hook test window.__music; exemplu-campanie.html regenerat (ramane opt-in off)

Smoke 30/30 (test nou "muzica ambient": opt-in, start, tempo sub 1 min, duck, toggle).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 20:12:32 +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 (~30 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 (16 — 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, muzica ambient T10).
  • Status țintă: 30/30 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                    # 30/30
npx playwright test tests/smoke.mjs --grep @regresie
npx playwright test tests/smoke.mjs --grep @campanie

Child DOX Index

(none — leaf)