perf(test): avoid heavy browser barrels in pw-ai tests

This commit is contained in:
Peter Steinberger
2026-02-14 03:13:32 +00:00
parent 115444b37c
commit 7f227fc8cc
2 changed files with 15 additions and 23 deletions

View File

@@ -54,17 +54,21 @@ function createBrowser(pages: unknown[]) {
}; };
} }
let mod: typeof import("./pw-ai.js");
let chromiumMock: typeof import("playwright-core").chromium; let chromiumMock: typeof import("playwright-core").chromium;
let snapshotAiViaPlaywright: typeof import("./pw-tools-core.snapshot.js").snapshotAiViaPlaywright;
let clickViaPlaywright: typeof import("./pw-tools-core.interactions.js").clickViaPlaywright;
let closePlaywrightBrowserConnection: typeof import("./pw-session.js").closePlaywrightBrowserConnection;
beforeAll(async () => { beforeAll(async () => {
const pw = await import("playwright-core"); const pw = await import("playwright-core");
chromiumMock = pw.chromium; chromiumMock = pw.chromium;
mod = await import("./pw-ai.js"); ({ snapshotAiViaPlaywright } = await import("./pw-tools-core.snapshot.js"));
({ clickViaPlaywright } = await import("./pw-tools-core.interactions.js"));
({ closePlaywrightBrowserConnection } = await import("./pw-session.js"));
}); });
afterEach(async () => { afterEach(async () => {
await mod.closePlaywrightBrowserConnection(); await closePlaywrightBrowserConnection();
vi.clearAllMocks(); vi.clearAllMocks();
}); });
@@ -76,7 +80,7 @@ describe("pw-ai", () => {
(chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser); (chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser);
const res = await mod.snapshotAiViaPlaywright({ const res = await snapshotAiViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T2", targetId: "T2",
}); });
@@ -93,7 +97,7 @@ describe("pw-ai", () => {
(chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser); (chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser);
const res = await mod.snapshotAiViaPlaywright({ const res = await snapshotAiViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T1", targetId: "T1",
}); });
@@ -103,7 +107,7 @@ describe("pw-ai", () => {
e2: { role: "link", name: "Docs" }, e2: { role: "link", name: "Docs" },
}); });
await mod.clickViaPlaywright({ await clickViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T1", targetId: "T1",
ref: "e1", ref: "e1",
@@ -120,7 +124,7 @@ describe("pw-ai", () => {
(chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser); (chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser);
const res = await mod.snapshotAiViaPlaywright({ const res = await snapshotAiViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T1", targetId: "T1",
maxChars: 10, maxChars: 10,
@@ -136,7 +140,7 @@ describe("pw-ai", () => {
const browser = createBrowser([p1.page]); const browser = createBrowser([p1.page]);
(chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser); (chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser);
await mod.clickViaPlaywright({ await clickViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T1", targetId: "T1",
ref: "76", ref: "76",
@@ -152,7 +156,7 @@ describe("pw-ai", () => {
(chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser); (chromiumMock.connectOverCDP as unknown as ReturnType<typeof vi.fn>).mockResolvedValue(browser);
await expect( await expect(
mod.snapshotAiViaPlaywright({ snapshotAiViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T1", targetId: "T1",
}), }),
@@ -165,11 +169,11 @@ describe("pw-ai", () => {
const connect = vi.spyOn(chromiumMock, "connectOverCDP"); const connect = vi.spyOn(chromiumMock, "connectOverCDP");
connect.mockResolvedValue(browser); connect.mockResolvedValue(browser);
await mod.snapshotAiViaPlaywright({ await snapshotAiViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T1", targetId: "T1",
}); });
await mod.clickViaPlaywright({ await clickViaPlaywright({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",
targetId: "T1", targetId: "T1",
ref: "1", ref: "1",

View File

@@ -25,19 +25,7 @@ describe("run-node script", () => {
const indexPath = path.join(tmp, "dist", "control-ui", "index.html"); const indexPath = path.join(tmp, "dist", "control-ui", "index.html");
await fs.mkdir(fakeBinDir, { recursive: true }); await fs.mkdir(fakeBinDir, { recursive: true });
await fs.mkdir(path.join(tmp, "src"), { recursive: true });
await fs.mkdir(path.dirname(indexPath), { recursive: true }); await fs.mkdir(path.dirname(indexPath), { recursive: true });
await fs.writeFile(path.join(tmp, "src", "index.ts"), "export {};\n", "utf-8");
await fs.writeFile(
path.join(tmp, "package.json"),
JSON.stringify({ name: "openclaw" }),
"utf-8",
);
await fs.writeFile(
path.join(tmp, "tsconfig.json"),
JSON.stringify({ compilerOptions: {} }),
"utf-8",
);
await fs.writeFile(indexPath, "<html>sentinel</html>\n", "utf-8"); await fs.writeFile(indexPath, "<html>sentinel</html>\n", "utf-8");
await fs.writeFile( await fs.writeFile(