import { defineConfig, devices } from "@playwright/test"; const runId = process.env.TEST_RUN_ID ?? (() => { const now = new Date(); const pad = (value: number) => String(value).padStart(2, "0"); return `${now.getFullYear()}${pad(now.getMonth() + 1)}${pad(now.getDate())}-${pad(now.getHours())}${pad(now.getMinutes())}${pad(now.getSeconds())}`; })(); export default defineConfig({ testDir: "./tests/e2e", fullyParallel: false, timeout: 30_000, expect: { timeout: 5_000 }, forbidOnly: !!process.env.CI, retries: process.env.CI ? 1 : 0, reporter: [["list"], ["./tests/e2e/failed-reporter.ts", { runId }]], outputDir: `test-reports/${runId}/test-results`, use: { baseURL: "http://127.0.0.1:4173", trace: "retain-on-failure", screenshot: "only-on-failure", video: "off", locale: "zh-CN", timezoneId: "Asia/Shanghai", }, projects: [ { name: "手机端", use: { ...devices["Pixel 5"] } }, { name: "桌面端", use: { ...devices["Desktop Chrome"] } }, ], webServer: { command: "npm run dev --workspace @cents/web -- --host 127.0.0.1 --port 4173", url: "http://127.0.0.1:4173", reuseExistingServer: !process.env.CI, timeout: 30_000, }, });