| name | verifiser-spill |
| description | Verifiser at det genererte 3D-spillet (spill.html) faktisk fungerer og er spillbart. Bruk denne etter at spillet er laget eller endret, eller når noen ber deg sjekke/teste at spillet virker. Kjører en Playwright-flyt som laster spillet, fanger konsollfeil, starter en runde, sjekker at poeng øker, at tastaturet styrer spilleren, og at highscore lagres. |
| metadata | {"tags":"testing, playwright, verifisering, spill, 3d, quality-gate"} |
Verifiser at spillet fungerer og er spillbart
Denne skillen er kvalitetsporten for spill.html. Den kjører en automatisk flyt som driver
spillet via kontrakten window.GAME (se skillen bygg-tredee-spill) og sjekker at det faktisk
er spillbart – ikke bare at fila finnes.
Hva flyten sjekker
Playwright-testene i verifiser/spill.spec.ts dekker fire ting, hver som en egen grønn linje
i terminalen (fint å vise frem i en demo):
- Laster rent og tegner 3D.
spill.html lastes uten ukjente konsollfeil / pageerror,
og et <canvas> med ekte størrelse er på plass (WebGL kjører).
- Spillet er i gang og gir poeng.
GAME.start() setter tilstanden til playing, og
poengsummen vokser mens man spiller.
- Styringen virker. Et ekte
ArrowLeft-tastetrykk senker GAME.playerX(), ArrowRight
hever den – altså: spilleren lar seg faktisk styre.
- Highscore lever videre. Etter
GAME.forceGameOver() er tilstanden gameover, highscore
er satt, og den overlever en side-omlasting (lagret i localStorage).
Slik kjører du den
npm install
npm run verifiser
npm run verifiser starter automatisk en bitteliten lokal webserver (server.mjs) som
serverer mappa, og kjører Playwright mot http://localhost:4173/spill.html. Du trenger ikke
starte noe selv. Bruk npm run verifiser:ui for å se det visuelt.
Hvis spill.html ikke finnes ennå, sier testen det tydelig. Generer spillet først (se
skillen bygg-tredee-spill eller PROMPT.md).
Når noe er rødt
Jobb iterativt – det er hele poenget:
- Les feilmeldingen. Playwright sier hvilken sjekk som feilet og hvorfor.
- Konsollfeil ved lasting → en JS-feil i spillet (ofte import-map / Three.js-bruk). Åpne
spill.html i nettleseren og se i konsollen.
window.GAME mangler eller har feil form → kontrakten er ikke bygget riktig. Sjekk
avsnittet om kontrakten i bygg-tredee-spill. Tilstandsstrengene må være nøyaktig
menu/playing/gameover.
- Poeng øker ikke → distanse-poeng mangler, eller loopen kjører ikke under test (sjekk at
den ikke er pauset feilaktig).
- Styring flytter ikke spilleren → tastatur-events lyttes ikke på
window, eller
playerX() peker feil.
- Highscore overlever ikke → mangler skriving til
localStorage, eller leses ikke ved
oppstart.
- Fiks i
spill.html. Én ting om gangen.
- Kjør
npm run verifiser på nytt. Gjenta til alt er grønt.
Ikke meld at spillet er ferdig før alle fire sjekkene er grønne. Vil du i tillegg ta en rask
manuell sjekk: åpne spill.html i en nettleser og spill 20 sekunder – ser det bra ut, føles
styringen riktig, og dukker highscore opp?