- 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.
49 lines
1.3 KiB
JavaScript
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'] }
|
|
}
|
|
]
|
|
})
|