Files
regnum/e2e/playwright.config.js
T
Kevin L'Hereec 11cba0467b 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.
2026-08-21 15:27:44 +02:00

49 lines
1.3 KiB
JavaScript

import { defineConfig, devices } from '@playwright/test'
/**
* Configuration Playwright pour les tests d'intégration E2E de Regnum.
*
* `webServer` démarre automatiquement le serveur Node/Socket.io ET le
* serveur de dev Vite du client avant de lancer les tests (et les arrête à
* la fin), pour que la suite soit reproductible avec une seule commande
* (`npm test` depuis e2e/) sans dépendre de processus déjà lancés à la main.
*/
export default defineConfig({
testDir: './tests',
fullyParallel: false, // les tests partagent le même serveur de jeu (rooms par test, mais évite la contention)
retries: process.env.CI ? 1 : 0,
workers: 1,
timeout: 60_000,
reporter: [['list']],
use: {
baseURL: 'http://localhost:5173',
trace: 'retain-on-failure',
screenshot: 'only-on-failure'
},
webServer: [
{
command: 'npm run dev',
cwd: '../server',
url: 'http://localhost:3000/health',
reuseExistingServer: !process.env.CI,
timeout: 30_000
},
{
command: 'npm run dev -- --port 5173 --strictPort',
cwd: '../client',
url: 'http://localhost:5173',
reuseExistingServer: !process.env.CI,
timeout: 30_000
}
],
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] }
}
]
})