playwright.config.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { defineConfig, devices } from "@playwright/test"
  2. const port = Number(process.env.PLAYWRIGHT_PORT ?? 3000)
  3. const baseURL = process.env.PLAYWRIGHT_BASE_URL ?? `http://localhost:${port}`
  4. const serverHost = process.env.PLAYWRIGHT_SERVER_HOST ?? "localhost"
  5. const serverPort = process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"
  6. const command = `bun run dev -- --host 0.0.0.0 --port ${port}`
  7. const reuse = !process.env.CI
  8. const win = process.platform === "win32"
  9. export default defineConfig({
  10. testDir: "./e2e",
  11. outputDir: "./e2e/test-results",
  12. timeout: 60_000,
  13. expect: {
  14. timeout: 10_000,
  15. },
  16. fullyParallel: !win,
  17. workers: win ? 1 : undefined,
  18. forbidOnly: !!process.env.CI,
  19. retries: process.env.CI ? 2 : 0,
  20. reporter: [["html", { outputFolder: "e2e/playwright-report", open: "never" }], ["line"]],
  21. webServer: {
  22. command,
  23. url: baseURL,
  24. reuseExistingServer: reuse,
  25. timeout: 120_000,
  26. env: {
  27. VITE_OPENCODE_SERVER_HOST: serverHost,
  28. VITE_OPENCODE_SERVER_PORT: serverPort,
  29. },
  30. },
  31. use: {
  32. baseURL,
  33. trace: "on-first-retry",
  34. screenshot: "only-on-failure",
  35. video: "retain-on-failure",
  36. },
  37. projects: [
  38. {
  39. name: "chromium",
  40. use: { ...devices["Desktop Chrome"] },
  41. },
  42. ],
  43. })