feat: écran de fin de partie + tests unitaires client et E2E Playwright

- Fix: UIScene n'était jamais lancée (active: false, jamais scene.launch)
  donc l'event 'game-over' du serveur n'était jamais affiché — la partie
  semblait ne pas avoir de fin. Remplacé par un panneau Vue dans GameView
  (vainqueur, classement trié, bouton Quitter via vue-router). UIScene.js
  supprimée (code mort).
- Extraction de client/src/utils/hudUtils.js (constantes ATTRS/couleurs et
  gaugePercent) depuis GameView.vue pour les rendre testables isolément.
- Tests unitaires client (Vitest) : store Pinia (game.js) et hudUtils
  (24 tests, client/test/unit/).
- Tests d'intégration E2E (Playwright, e2e/) avec de vrais clients
  Socket.io et rendu Phaser réel dans Chromium :
  * game-flow.spec.js : lobby → démarrage → main de 4 cartes → résolution
  * item-shop.spec.js : boutique, bouton désactivé si jauge insuffisante,
    achat retire l'objet pour tous + effet appliqué + affiché sur la table
  * game-over.spec.js : partie complète (12 tours) → panneau de fin
  webServer démarre automatiquement client+serveur ; ajout d'une route
  GET /health côté Express pour permettre à Playwright de détecter un
  serveur déjà démarré.
- README : documentation des 3 niveaux de tests (unitaires serveur,
  unitaires client, intégration E2E) et de la nouvelle arborescence.
This commit is contained in:
Kevin L'Hereec committed 2026-08-21 15:27:44 +02:00
1 parent 6a1c800253
commit 11cba0467b
20 files changed
+3447 -100

No files matched your search

+7
View File
@@ -8,6 +8,13 @@ const app = express()
app.use(cors())
app.use(express.json())
// Route de santé minimale : utilisée notamment par le healthcheck HTTP de
// Playwright (config e2e/playwright.config.js, webServer.url) pour détecter
// qu'un serveur est déjà démarré et éviter un conflit de port (EADDRINUSE)
// en local. Sans route HTTP définie, toute requête renvoyait 404, que
// Playwright ne considère pas comme "serveur prêt".
app.get('/health', (req, res) => res.status(200).json({ status: 'ok' }))
const server = http.createServer(app)
const io = new Server(server, {
cors: { origin: '*', methods: ['GET', 'POST'] }