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

export default defineConfig({
    testDir: 'tests',
    testMatch: /.*\.spec\.(ts|js)/,
    // Use linux in snapshot paths so local (darwin) runs compare against the same snapshots as CI.
    snapshotPathTemplate: '{snapshotDir}/{testFileDir}/{testFileName}-snapshots/{arg}-{projectName}-linux{ext}',
    fullyParallel: true,
    forbidOnly: !!process.env.CI,
    retries: process.env.CI ? 2 : 0,
    workers: process.env.CI ? 1 : undefined,
    reporter: 'html',
    use: {
        baseURL: process.env.PLAYWRIGHT_BASE_URL ?? 'http://localhost:4173',
        trace: 'on-first-retry',
        screenshot: 'only-on-failure',
    },
    projects: [
        { name: 'chromium-desktop', use: { ...devices['Desktop Chrome'] } },
        { name: 'chromium-mobile', use: { ...devices['iPhone 14'] } },
    ],
    webServer: process.env.CI
        ? undefined
        : {
              command: 'pnpm run preview',
              url: 'http://localhost:4173',
              reuseExistingServer: !process.env.CI,
          },
});
