import { defineConfig, devices } from "@playwright/test"; /** * DSMMG — Playwright config (visual regression sur Storybook). * * Stratégie : on build Storybook en static, on le sert localement, * on prend des screenshots des stories critiques (light + dark) et * on compare au baseline. Les régressions visuelles cassent la CI. */ export default defineConfig({ testDir: "./e2e", fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 2 : undefined, reporter: process.env.CI ? [["html", { open: "never" }], ["github"]] : "list", timeout: 30_000, expect: { /** * Threshold de différence visuelle. 0.2 = très strict (pixel-near). * Ajuster si flakiness sur le rendu des fonts. */ toHaveScreenshot: { threshold: 0.2, maxDiffPixelRatio: 0.005, animations: "disabled", caret: "hide", }, }, use: { baseURL: "http://localhost:6006", trace: "on-first-retry", video: "retain-on-failure", screenshot: "only-on-failure", viewport: { width: 1280, height: 800 }, colorScheme: "light", }, projects: [ { name: "chromium-light", use: { ...devices["Desktop Chrome"], colorScheme: "light" }, }, { name: "chromium-dark", use: { ...devices["Desktop Chrome"], colorScheme: "dark" }, }, // Ajouter Firefox / WebKit en CI quand le baseline sera stable ], webServer: { command: "pnpm --filter storybook build && pnpm --filter storybook preview", url: "http://localhost:6006", reuseExistingServer: !process.env.CI, timeout: 180_000, }, });