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) // Les tests de cartes Événement (events.spec.js) reposent sur une pioche // ALÉATOIRE dans un deck partagé de 18 cartes ; malgré une stratégie de // pioche répétée + fallback (voir helpers.js drawEventUntil), un tirage // exceptionnellement malchanceux peut ponctuellement dépasser leur timeout // individuel (déjà élevé, 150-240s) — un retry absorbe ce résidu probabiliste // sans masquer une vraie régression (qui échouerait de façon reproductible). retries: 1, workers: 1, timeout: 60_000, // valeur par défaut, surchargée par test.setTimeout() dans les tests plus longs 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'] } } ] })