Scaffolds end-to-end testing with Playwright for the onboarding wizard. Runs in skip_llm mode by default (UI-only, no LLM costs). Set PAPERCLIP_E2E_SKIP_LLM=false for full heartbeat verification. - tests/e2e/playwright.config.ts: Playwright config with webServer - tests/e2e/onboarding.spec.ts: 4-step wizard flow test - .github/workflows/e2e.yml: manual workflow_dispatch CI workflow - package.json: test:e2e and test:e2e:headed scripts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
36 lines
941 B
TypeScript
36 lines
941 B
TypeScript
import { defineConfig } from "@playwright/test";
|
|
|
|
const PORT = Number(process.env.PAPERCLIP_E2E_PORT ?? 3100);
|
|
const BASE_URL = `http://127.0.0.1:${PORT}`;
|
|
|
|
export default defineConfig({
|
|
testDir: ".",
|
|
testMatch: "**/*.spec.ts",
|
|
timeout: 60_000,
|
|
retries: 0,
|
|
use: {
|
|
baseURL: BASE_URL,
|
|
headless: true,
|
|
screenshot: "only-on-failure",
|
|
trace: "on-first-retry",
|
|
},
|
|
projects: [
|
|
{
|
|
name: "chromium",
|
|
use: { browserName: "chromium" },
|
|
},
|
|
],
|
|
// The webServer directive starts `paperclipai run` before tests.
|
|
// Expects `pnpm paperclipai` to be runnable from repo root.
|
|
webServer: {
|
|
command: `pnpm paperclipai run --yes`,
|
|
url: `${BASE_URL}/api/health`,
|
|
reuseExistingServer: !!process.env.CI,
|
|
timeout: 120_000,
|
|
stdout: "pipe",
|
|
stderr: "pipe",
|
|
},
|
|
outputDir: "./test-results",
|
|
reporter: [["list"], ["html", { open: "never", outputFolder: "./playwright-report" }]],
|
|
});
|