import { defineConfig, devices } from '@playwright/test'

/**
 * Config Playwright pour les tests E2E de Starseed.
 *
 * Pre-requis avant de lancer :
 *   1. Les containers Docker tournent (`make start`)
 *   2. Le dev server Nuxt est lance (`make dev-nuxt`) sur le port 3004
 *   3. Les personas E2E sont seedes (`make seed-e2e` — cf. SeedE2ECommand cote back)
 *
 * La baseURL cible le dev server Nuxt (HMR) en dev local ; surcharger avec
 * PLAYWRIGHT_BASE_URL=http://localhost:8083 pour taper sur le build Nginx
 * (au plus pres de la prod, utile en CI).
 */
export default defineConfig({
    testDir: './tests/e2e',

    // Interdit `test.only` en CI pour ne pas skipper involontairement la suite.
    forbidOnly: !!process.env.CI,

    // Pas de retry en local (bugs a reproduire), 2 retries en CI (flaky mitige).
    retries: process.env.CI ? 2 : 0,

    // Parallelisme : 1 worker local pour faciliter le debug, defaut en CI.
    workers: process.env.CI ? undefined : 1,

    reporter: process.env.CI ? [['github'], ['html', { open: 'never' }]] : 'list',

    use: {
        baseURL: process.env.PLAYWRIGHT_BASE_URL || 'http://localhost:3004',
        trace: 'on-first-retry',
        screenshot: 'only-on-failure',
        video: 'retain-on-failure',
    },

    projects: [
        {
            name: 'chromium',
            use: { ...devices['Desktop Chrome'] },
        },
    ],
})
