mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-07 07:23:08 +02:00
Invoke the public Playwright JavaScript entry directly for installed Pi tests so pnpm shim NODE_PATH injection cannot cross the closed controller boundary. Add a credential-free health/UI startup proof and a pinned published Daytona plugin fixture path without production runtime overrides. Co-Authored-By: Paperclip <noreply@paperclip.ing>
33 lines
1.5 KiB
TypeScript
33 lines
1.5 KiB
TypeScript
import path from "node:path";
|
|
|
|
// Let the restart-aware supervisor reap Paperclip and finish its log streams.
|
|
// Its stop path allows 30 seconds for SIGTERM and 5 seconds for SIGKILL.
|
|
export const runnerE2EWebServerGracefulShutdown = {
|
|
signal: "SIGTERM" as const,
|
|
timeout: 45_000,
|
|
};
|
|
|
|
function shellQuote(value: string) {
|
|
return `'${value.replaceAll("'", `'\\''`)}'`;
|
|
}
|
|
|
|
export function runnerE2EWebServerCommand(repositoryRoot: string) {
|
|
const tsx = path.join(repositoryRoot, "cli/node_modules/tsx/dist/cli.mjs");
|
|
const server = path.join(repositoryRoot, "tests/runner-e2e/server.ts");
|
|
return `node ${shellQuote(tsx)} ${shellQuote(server)}`;
|
|
}
|
|
|
|
// Keep the supervisor's child PID equal to the actual TypeScript process.
|
|
export function runnerE2ETypeScriptProcessArgs(repositoryRoot: string, entry: string, args: string[] = []) {
|
|
return ["--import", path.join(repositoryRoot, "cli/node_modules/tsx/dist/loader.mjs"), entry, ...args];
|
|
}
|
|
|
|
// pnpm's generated playwright bin shim adds NODE_PATH, even when the caller
|
|
// rejected ambient injection. The installed lane invokes the public JS bin
|
|
// with the current Node directly, keeping the WebServer environment closed.
|
|
export function runnerE2EPlaywrightInvocation(repositoryRoot: string, args: string[], installed: boolean) {
|
|
return installed
|
|
? { command: process.execPath, args: [path.join(repositoryRoot, "node_modules/@playwright/test/cli.js"), ...args] }
|
|
: { command: "pnpm", args: ["exec", "playwright", ...args] };
|
|
}
|