Regressie-baseline: Playwright + unit tests voor bestaande sets #59

Closed
opened 2026-04-09 09:08:21 +02:00 by Ghost · 1 comment
Ghost commented 2026-04-09 09:08:21 +02:00 (Migrated from codeberg.org)

Waarom

Voordat we de architectuur uitbreiden voor Geobas 7 & 8 (#58, tech-infra issue, Baltische staten pilot), moeten we eerst een veiligheidsnet leggen rond de bestaande sets. De kritische eis uit het gameplay-plan: bestaande sets (5.4, 5.5, 5.6, 5.7, 6.1–6.7, daily 98, bonus 99) moeten na alle wijzigingen bit-voor-bit hetzelfde werken.

Deze tests fungeren als "het net onder het trapeze": elke feature-commit in de nieuwe tech-infra moet ze groen houden. Anders: stop en fix.

Scope — nieuwe tests

Playwright E2E — tests/regression-baseline.spec.js (nieuw)

Voor elke kritieke bestaande set: start, één vraag beantwoorden, verifiëren dat het huidige gedrag ongewijzigd is.

  • Set 5.4 (provincies) — elke modus (MC, typen), polygoon highlight correct, correct-tellen werkt
  • Set 5.7 (wateren) — elke modus inclusief klik-op-kaart, Polygon + LineString highlight
  • Set 6.1 (Overijssel places) — alle drie modi, dot highlight, klik-op-kaart met 20 km drempel
  • Set 98 (daily) — start → vraag → emoji-grid deelbaar
  • Set 99 (bonus) — start → vraag → score

Unit tests — extra asserties in test.js

Snapshot-achtige borgingen van invarianten:

  • loadLevel(54).activeCities.length === ALL_PROVINCES.length
  • clickResult(15, 61) === 'correct' (20 km drempel voor zoomed place-sets)
  • clickResult(25, 61) === 'close'
  • clickResult(70, 61) === 'wrong'
  • ALL_CITIES.filter(c => c.sets.includes(61)).length (vaste getal, verandert niet)

Acceptatiecriteria

  • tests/regression-baseline.spec.js bestaat en draait in CI
  • Alle bestaande Playwright tests blijven groen
  • node test.js draait groen met nieuwe asserties
  • npm test draait binnen de bestaande CI-timeout
  • Deze tests zijn een blocker voor elke merge naar `dev` tijdens v1.15-werk

Dependencies

Geen — dit is de eerste stap in de v1.15 pilot werkstroom. Moet af voordat er één regel nieuwe feature-code geschreven wordt.

Gerelateerd

  • Gameplay design: #58
  • Tech infra: (volgt in deze milestone)
  • Baltische staten pilot: (volgt in deze milestone)
## Waarom Voordat we de architectuur uitbreiden voor Geobas 7 & 8 (#58, tech-infra issue, Baltische staten pilot), moeten we eerst een **veiligheidsnet** leggen rond de bestaande sets. De kritische eis uit het gameplay-plan: bestaande sets (5.4, 5.5, 5.6, 5.7, 6.1–6.7, daily 98, bonus 99) moeten na alle wijzigingen **bit-voor-bit hetzelfde werken**. Deze tests fungeren als "het net onder het trapeze": elke feature-commit in de nieuwe tech-infra moet ze groen houden. Anders: stop en fix. ## Scope — nieuwe tests ### Playwright E2E — `tests/regression-baseline.spec.js` (nieuw) Voor elke kritieke bestaande set: start, één vraag beantwoorden, verifiëren dat het huidige gedrag ongewijzigd is. - **Set 5.4 (provincies)** — elke modus (MC, typen), polygoon highlight correct, correct-tellen werkt - **Set 5.7 (wateren)** — elke modus inclusief klik-op-kaart, Polygon + LineString highlight - **Set 6.1 (Overijssel places)** — alle drie modi, dot highlight, klik-op-kaart met 20 km drempel - **Set 98 (daily)** — start → vraag → emoji-grid deelbaar - **Set 99 (bonus)** — start → vraag → score ### Unit tests — extra asserties in `test.js` Snapshot-achtige borgingen van invarianten: - `loadLevel(54).activeCities.length === ALL_PROVINCES.length` - `clickResult(15, 61) === 'correct'` (20 km drempel voor zoomed place-sets) - `clickResult(25, 61) === 'close'` - `clickResult(70, 61) === 'wrong'` - `ALL_CITIES.filter(c => c.sets.includes(61)).length` (vaste getal, verandert niet) ## Acceptatiecriteria - [ ] `tests/regression-baseline.spec.js` bestaat en draait in CI - [ ] Alle bestaande Playwright tests blijven groen - [ ] `node test.js` draait groen met nieuwe asserties - [ ] `npm test` draait binnen de bestaande CI-timeout - [ ] Deze tests zijn een **blocker** voor elke merge naar \`dev\` tijdens v1.15-werk ## Dependencies Geen — dit is de eerste stap in de v1.15 pilot werkstroom. Moet af voordat er één regel nieuwe feature-code geschreven wordt. ## Gerelateerd - Gameplay design: #58 - Tech infra: (volgt in deze milestone) - Baltische staten pilot: (volgt in deze milestone)
Ghost commented 2026-04-09 21:05:58 +02:00 (Migrated from codeberg.org)

Geïmplementeerd op branch feature/regression-baseline.

Wat er is:

  • tests/regression-baseline.spec.js — 14 nieuwe Playwright-specs voor set 61 (Overijssel, alle 3 modi + fitOnStart), set 98 (daily: directe MC-start, mastery=1, emoji-grid), set 99 (bonus: start + mastery)
  • test.js — snapshot-borgingen voor stadsaantallen sets 61–67 + expliciete asserties voor set 54/57 pool-groottes

Scope-correctie t.o.v. de originele issue: clickResult(distKm, setNumber) en loadLevel()-tests zijn weggelaten — die testen toekomstig gedrag (stap 2/4) en horen niet in de regressie-baseline.

Resultaat: 157 unit tests + 50 Playwright tests, alles groen.

Geïmplementeerd op branch `feature/regression-baseline`. **Wat er is**: - `tests/regression-baseline.spec.js` — 14 nieuwe Playwright-specs voor set 61 (Overijssel, alle 3 modi + fitOnStart), set 98 (daily: directe MC-start, mastery=1, emoji-grid), set 99 (bonus: start + mastery) - `test.js` — snapshot-borgingen voor stadsaantallen sets 61–67 + expliciete asserties voor set 54/57 pool-groottes **Scope-correctie t.o.v. de originele issue**: `clickResult(distKm, setNumber)` en `loadLevel()`-tests zijn weggelaten — die testen toekomstig gedrag (stap 2/4) en horen niet in de regressie-baseline. **Resultaat**: 157 unit tests + 50 Playwright tests, alles groen.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jelmer/topoquiz#59
No description provided.