test(round2): full coverage of the second round (#6) #32

Merged
Reliodas merged 1 commit from test/6-round2-coverage into develop 2026-06-24 03:14:31 +00:00
Owner

Closes #6.

Comble l'absence de tests de la deuxième manche.

Tests ajoutés

  • round2.test.ts : déchiffrage du code (enregistrement, déduplication, rejet spectateur, classement par date de réception), sélection de catégorie, score, passage de tour, fin par chronomètre ET par épuisement des questions, tour de rôle, scoreboard, finalisation, + parcours complet de bout en bout du moteur. round2.ts atteint 100 % de couverture lignes.
  • Intégration Socket.IO : contrat de la manche 2 sur le socket — soumissions du code réservées au MJ (pas de fuite aux candidats), refus d'un dévoilement non-hôte, tolérance à la déconnexion du candidat courant.
  • CategoryBoard.test.ts : masquage des catégories mystère, score/pluriel, garde de sélection, indice du sélecteur.

Parcours E2E manche 2

Vérifié au niveau moteur + socket plutôt qu'en navigateur : atteindre la manche 2 via l'UI impose de jouer toute la première manche chronométrée (test navigateur lent et non déterministe, contraire à l'exigence de déterminisme Playwright). Documenté dans docs/Implémentation.md.

Vérifs

  • node:test 154 pass / 1 skip, Jest 13, Vitest 49 ; couverture serveur/clients au-dessus des planchers (round2.ts 100 % lignes) ; typecheck + builds OK.

Critères d'acceptation

  • Tester classement du code, mauvaises réponses, non-réponses
  • Tester choix des catégories, score, passage de tour, fin du chronomètre
  • Couvrir catégories vides, déconnexions, actions non autorisées
  • Tests Socket.IO du parcours complet
  • Tests des composants/vues de la deuxième manche (CategoryBoard ; composants extraits couverts en #12)

🤖 Generated with Claude Code

Closes #6. Comble l'absence de tests de la deuxième manche. ## Tests ajoutés - **`round2.test.ts`** : déchiffrage du code (enregistrement, déduplication, rejet spectateur, classement par date de réception), sélection de catégorie, score, passage de tour, fin par chronomètre ET par épuisement des questions, tour de rôle, scoreboard, finalisation, + parcours complet de bout en bout du moteur. `round2.ts` atteint **100 % de couverture lignes**. - **Intégration Socket.IO** : contrat de la manche 2 sur le socket — soumissions du code réservées au MJ (pas de fuite aux candidats), refus d'un dévoilement non-hôte, tolérance à la déconnexion du candidat courant. - **`CategoryBoard.test.ts`** : masquage des catégories mystère, score/pluriel, garde de sélection, indice du sélecteur. ## Parcours E2E manche 2 Vérifié au niveau **moteur + socket** plutôt qu'en navigateur : atteindre la manche 2 via l'UI impose de jouer toute la première manche chronométrée (test navigateur lent et non déterministe, contraire à l'exigence de déterminisme Playwright). Documenté dans `docs/Implémentation.md`. ## Vérifs - node:test **154 pass / 1 skip**, Jest **13**, Vitest **49** ; couverture serveur/clients au-dessus des planchers (round2.ts 100 % lignes) ; typecheck + builds OK. ## Critères d'acceptation - [x] Tester classement du code, mauvaises réponses, non-réponses - [x] Tester choix des catégories, score, passage de tour, fin du chronomètre - [x] Couvrir catégories vides, déconnexions, actions non autorisées - [x] Tests Socket.IO du parcours complet - [x] Tests des composants/vues de la deuxième manche (CategoryBoard ; composants extraits couverts en #12) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
test(round2): full coverage of the second round
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
e5692e282e
Close the second-round test gaps (#6).

- round2.test.ts now covers the codebreaker (submission, dedup, spectator
  rejection, ranking by receipt time), category selection, scoring, turn
  passing, end by timer and by question exhaustion, round-robin, scoreboard and
  finalisation, plus a full engine-level journey. round2.ts reaches 100% line
  coverage.
- Socket.IO integration adds a second-round contract suite: codebreaker
  submissions stay host-only (no leak to players), a non-host cannot reveal the
  codebreaker, and the current candidate disconnecting mid-category is tolerated.
- New CategoryBoard component test (masking, scoring, selection guards, picker
  hint).

The full second-round journey is verified at the engine and socket level rather
than in the browser, since reaching it through the UI requires playing the whole
timed first round (a slow, non-deterministic browser test). Documentation
updated accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reliodas merged commit 5c903b41a5 into develop 2026-06-24 03:14:31 +00:00
Sign in to join this conversation.
No reviewers
No milestone
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: jeux/le-grand-concours#32
No description provided.