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", }, // NOTE: specs only run if a project below matches them — a new // e2e/*.test.ts file MUST be registered here or it silently never // executes. 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: "auth", testMatch: "auth.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "public-content", testMatch: "public-content.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "demo-bot", testMatch: "demo-bot.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "integration", testMatch: "integration.test.ts", use: { ...devices["Desktop Chrome"], }, }, { name: "journal-planner-save", testMatch: "journal-planner-save.test.ts", use: { // No baseURL — the test navigates between both apps using // absolute URLs. ...devices["Desktop Chrome"], }, }, { name: "notifications", testMatch: "notifications.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "komoot-import", testMatch: "komoot-import.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "settings", testMatch: "settings.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "explore", testMatch: "explore.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, { name: "social", testMatch: "social.test.ts", use: { ...devices["Desktop Chrome"], baseURL: "http://localhost:3000", }, }, ], 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, }, ], });