mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-28 07:52:19 +00:00
97 lines
2.5 KiB
TypeScript
97 lines
2.5 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import {
|
|
ensurePlaywrightChromium,
|
|
resolvePlaywrightInstallRunner,
|
|
} from "../../scripts/ensure-playwright-chromium.mjs";
|
|
|
|
describe("ensurePlaywrightChromium", () => {
|
|
it("does nothing when the browser binary exists", () => {
|
|
const spawnSync = vi.fn();
|
|
|
|
expect(
|
|
ensurePlaywrightChromium({
|
|
executablePath: "/cache/chromium/chrome",
|
|
existsSync: () => true,
|
|
spawnSync,
|
|
}),
|
|
).toBe(0);
|
|
expect(spawnSync).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("preserves the intentional missing-browser skip mode", () => {
|
|
const logs: string[] = [];
|
|
const spawnSync = vi.fn();
|
|
|
|
expect(
|
|
ensurePlaywrightChromium({
|
|
env: { OPENCLAW_UI_E2E_ALLOW_MISSING_CHROMIUM: "1" },
|
|
executablePath: "/cache/chromium/chrome",
|
|
existsSync: () => false,
|
|
log: (line: string) => logs.push(line),
|
|
spawnSync,
|
|
}),
|
|
).toBe(0);
|
|
expect(spawnSync).not.toHaveBeenCalled();
|
|
expect(logs.join("\n")).toContain("leaves the lane skipped");
|
|
});
|
|
|
|
it("installs Chromium through the UI Playwright package when missing", () => {
|
|
const spawnSync = vi.fn(() => ({ status: 0 }));
|
|
let existsCalls = 0;
|
|
|
|
expect(
|
|
ensurePlaywrightChromium({
|
|
cwd: "/repo",
|
|
env: { PATH: "/bin" },
|
|
executablePath: "/cache/chromium/chrome",
|
|
existsSync: () => ++existsCalls > 1,
|
|
platform: "linux",
|
|
spawnSync,
|
|
stdio: "pipe",
|
|
}),
|
|
).toBe(0);
|
|
expect(spawnSync).toHaveBeenCalledWith(
|
|
"pnpm",
|
|
["--dir", "ui", "exec", "playwright", "install", "chromium"],
|
|
{
|
|
cwd: "/repo",
|
|
env: { PATH: "/bin" },
|
|
shell: false,
|
|
stdio: "pipe",
|
|
windowsVerbatimArguments: undefined,
|
|
},
|
|
);
|
|
});
|
|
|
|
it("returns the installer status when Playwright install fails", () => {
|
|
expect(
|
|
ensurePlaywrightChromium({
|
|
executablePath: "/cache/chromium/chrome",
|
|
existsSync: () => false,
|
|
spawnSync: vi.fn(() => ({ status: 23 })),
|
|
stdio: "pipe",
|
|
}),
|
|
).toBe(23);
|
|
});
|
|
|
|
it("wraps the pnpm command shim on Windows", () => {
|
|
expect(
|
|
resolvePlaywrightInstallRunner({
|
|
comSpec: "C:\\Windows\\System32\\cmd.exe",
|
|
env: {},
|
|
platform: "win32",
|
|
}),
|
|
).toEqual({
|
|
args: [
|
|
"/d",
|
|
"/s",
|
|
"/c",
|
|
'pnpm.cmd --dir ui exec playwright install chromium',
|
|
],
|
|
command: "C:\\Windows\\System32\\cmd.exe",
|
|
shell: false,
|
|
windowsVerbatimArguments: true,
|
|
});
|
|
});
|
|
});
|