perf(test): eliminate resetModules via injectable seams

This commit is contained in:
Peter Steinberger
2026-02-13 16:20:31 +00:00
parent a844fb161c
commit b272158fe4
21 changed files with 223 additions and 188 deletions

View File

@@ -1,8 +1,23 @@
import { describe, expect, it, vi } from "vitest";
import { closePlaywrightBrowserConnection, getPageForTargetId } from "./pw-session.js";
const connectOverCdpMock = vi.fn();
const getChromeWebSocketUrlMock = vi.fn();
vi.mock("playwright-core", () => ({
chromium: {
connectOverCDP: (...args: unknown[]) => connectOverCdpMock(...args),
},
}));
vi.mock("./chrome.js", () => ({
getChromeWebSocketUrl: (...args: unknown[]) => getChromeWebSocketUrlMock(...args),
}));
describe("pw-session getPageForTargetId", () => {
it("falls back to the only page when CDP session attachment is blocked (extension relays)", async () => {
vi.resetModules();
connectOverCdpMock.mockReset();
getChromeWebSocketUrlMock.mockReset();
const pageOn = vi.fn();
const contextOn = vi.fn();
@@ -31,24 +46,16 @@ describe("pw-session getPageForTargetId", () => {
close: browserClose,
} as unknown as import("playwright-core").Browser;
vi.doMock("playwright-core", () => ({
chromium: {
connectOverCDP: vi.fn(async () => browser),
},
}));
connectOverCdpMock.mockResolvedValue(browser);
getChromeWebSocketUrlMock.mockResolvedValue(null);
vi.doMock("./chrome.js", () => ({
getChromeWebSocketUrl: vi.fn(async () => null),
}));
const mod = await import("./pw-session.js");
const resolved = await mod.getPageForTargetId({
const resolved = await getPageForTargetId({
cdpUrl: "http://127.0.0.1:18792",
targetId: "NOT_A_TAB",
});
expect(resolved).toBe(page);
await mod.closePlaywrightBrowserConnection();
await closePlaywrightBrowserConnection();
expect(browserClose).toHaveBeenCalled();
});
});