62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { defineConfig } from "@playwright/test";
|
|
|
|
const PORT = Number(process.env.PAPERCLIP_ISSUE_PERF_PORT ?? 3201);
|
|
const EXTERNAL_URL = process.env.PAPERCLIP_ISSUE_PERF_BASE_URL;
|
|
if (EXTERNAL_URL) {
|
|
const target = new URL(EXTERNAL_URL);
|
|
if (
|
|
!["http:", "https:"].includes(target.protocol) ||
|
|
!["localhost", "127.0.0.1", "[::1]"].includes(target.hostname) ||
|
|
target.username || target.password || target.search || target.hash || target.pathname !== "/"
|
|
) {
|
|
throw new Error("PAPERCLIP_ISSUE_PERF_BASE_URL must be a loopback origin for a disposable local instance; these tests create fixtures.");
|
|
}
|
|
}
|
|
const BASE_URL = EXTERNAL_URL ?? `http://127.0.0.1:${PORT}`;
|
|
const PAPERCLIP_HOME = fs.mkdtempSync(path.join(os.tmpdir(), "paperclip-issue-perf-home-"));
|
|
const PAPERCLIP_INSTANCE_ID = "playwright-issue-perf";
|
|
const PAPERCLIP_CONFIG = path.join(PAPERCLIP_HOME, "instances", PAPERCLIP_INSTANCE_ID, "config.json");
|
|
|
|
process.env.PAPERCLIP_HOME = PAPERCLIP_HOME;
|
|
process.env.PAPERCLIP_CONFIG = PAPERCLIP_CONFIG;
|
|
|
|
export default defineConfig({
|
|
testDir: ".",
|
|
testMatch: "*.spec.ts",
|
|
timeout: 30 * 60_000,
|
|
workers: 1,
|
|
fullyParallel: false,
|
|
use: {
|
|
baseURL: BASE_URL,
|
|
browserName: "chromium",
|
|
headless: true,
|
|
},
|
|
webServer: EXTERNAL_URL ? undefined : {
|
|
command: "pnpm paperclipai onboard --yes --run",
|
|
url: `${BASE_URL}/api/health`,
|
|
reuseExistingServer: false,
|
|
timeout: 120_000,
|
|
stdout: "pipe",
|
|
stderr: "pipe",
|
|
env: {
|
|
...process.env,
|
|
NODE_ENV: "development",
|
|
PORT: String(PORT),
|
|
PAPERCLIP_OPEN_ON_LISTEN: "false",
|
|
PAPERCLIP_HOME,
|
|
PAPERCLIP_INSTANCE_ID,
|
|
PAPERCLIP_CONFIG,
|
|
PAPERCLIP_AGENT_JWT_SECRET: "playwright-issue-perf-agent-jwt-secret",
|
|
PAPERCLIP_TOOL_ACTION_SIGNING_SECRET: "playwright-issue-perf-tool-action-signing-secret",
|
|
PAPERCLIP_BIND: "loopback",
|
|
PAPERCLIP_DEPLOYMENT_MODE: "local_trusted",
|
|
PAPERCLIP_DEPLOYMENT_EXPOSURE: "private",
|
|
},
|
|
},
|
|
outputDir: "../../../test-results/issue-detail-perf/playwright",
|
|
reporter: [["list"]],
|
|
});
|