import { defineConfig, devices } from "@playwright/test"; export default defineConfig({ testDir: "./e2e", outputDir: "./e2e/results", fullyParallel: true, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: process.env.CI ? [["github"], ["html", { open: "never" }], ["json", { outputFile: "playwright-results.json" }]] : "list", use: { baseURL: "http://localhost:3000", trace: "on-first-retry", screenshot: "only-on-failure", }, projects: [ { name: "journal", testMatch: "journal.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "planner", testMatch: "planner.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3001", }, }, { name: "integration", testMatch: "integration.test.ts", use: { ...devices["Desktop Chrome"], }, }, ], webServer: process.env.CI ? [ { command: "npx react-router-serve ./build/server/index.js", url: "http://localhost:3000", cwd: "./apps/journal", reuseExistingServer: false, }, { command: "node --experimental-strip-types server.ts", url: "http://localhost:3001", cwd: "./apps/planner", reuseExistingServer: false, }, ] : [ { command: "pnpm --filter @trails-cool/journal dev", url: "http://localhost:3000", reuseExistingServer: true, }, { command: "pnpm --filter @trails-cool/planner dev", url: "http://localhost:3001", reuseExistingServer: true, }, ], });