test: stabilize pw-session cdp mocking in parallel runs

This commit is contained in:
Peter Steinberger
2026-02-22 08:03:17 +00:00
parent 0c1a52307c
commit 0194d50339
2 changed files with 18 additions and 10 deletions

View File

@@ -1,7 +1,11 @@
import { chromium } from "playwright-core";
import { afterEach, describe, expect, it, vi } from "vitest"; import { afterEach, describe, expect, it, vi } from "vitest";
import * as chromeModule from "./chrome.js";
import { InvalidBrowserNavigationUrlError } from "./navigation-guard.js"; import { InvalidBrowserNavigationUrlError } from "./navigation-guard.js";
import { closePlaywrightBrowserConnection, createPageViaPlaywright } from "./pw-session.js"; import { closePlaywrightBrowserConnection, createPageViaPlaywright } from "./pw-session.js";
import { connectOverCdpMock, getChromeWebSocketUrlMock } from "./pw-session.mock-setup.js";
const connectOverCdpSpy = vi.spyOn(chromium, "connectOverCDP");
const getChromeWebSocketUrlSpy = vi.spyOn(chromeModule, "getChromeWebSocketUrl");
function installBrowserMocks() { function installBrowserMocks() {
const pageOn = vi.fn(); const pageOn = vi.fn();
@@ -43,15 +47,15 @@ function installBrowserMocks() {
close: browserClose, close: browserClose,
} as unknown as import("playwright-core").Browser; } as unknown as import("playwright-core").Browser;
connectOverCdpMock.mockResolvedValue(browser); connectOverCdpSpy.mockResolvedValue(browser);
getChromeWebSocketUrlMock.mockResolvedValue(null); getChromeWebSocketUrlSpy.mockResolvedValue(null);
return { pageGoto, browserClose }; return { pageGoto, browserClose };
} }
afterEach(async () => { afterEach(async () => {
connectOverCdpMock.mockReset(); connectOverCdpSpy.mockReset();
getChromeWebSocketUrlMock.mockReset(); getChromeWebSocketUrlSpy.mockReset();
await closePlaywrightBrowserConnection().catch(() => {}); await closePlaywrightBrowserConnection().catch(() => {});
}); });

View File

@@ -1,11 +1,15 @@
import { chromium } from "playwright-core";
import { describe, expect, it, vi } from "vitest"; import { describe, expect, it, vi } from "vitest";
import * as chromeModule from "./chrome.js";
import { closePlaywrightBrowserConnection, getPageForTargetId } from "./pw-session.js"; import { closePlaywrightBrowserConnection, getPageForTargetId } from "./pw-session.js";
import { connectOverCdpMock, getChromeWebSocketUrlMock } from "./pw-session.mock-setup.js";
const connectOverCdpSpy = vi.spyOn(chromium, "connectOverCDP");
const getChromeWebSocketUrlSpy = vi.spyOn(chromeModule, "getChromeWebSocketUrl");
describe("pw-session getPageForTargetId", () => { describe("pw-session getPageForTargetId", () => {
it("falls back to the only page when CDP session attachment is blocked (extension relays)", async () => { it("falls back to the only page when CDP session attachment is blocked (extension relays)", async () => {
connectOverCdpMock.mockReset(); connectOverCdpSpy.mockReset();
getChromeWebSocketUrlMock.mockReset(); getChromeWebSocketUrlSpy.mockReset();
const pageOn = vi.fn(); const pageOn = vi.fn();
const contextOn = vi.fn(); const contextOn = vi.fn();
@@ -34,8 +38,8 @@ describe("pw-session getPageForTargetId", () => {
close: browserClose, close: browserClose,
} as unknown as import("playwright-core").Browser; } as unknown as import("playwright-core").Browser;
connectOverCdpMock.mockResolvedValue(browser); connectOverCdpSpy.mockResolvedValue(browser);
getChromeWebSocketUrlMock.mockResolvedValue(null); getChromeWebSocketUrlSpy.mockResolvedValue(null);
const resolved = await getPageForTargetId({ const resolved = await getPageForTargetId({
cdpUrl: "http://127.0.0.1:18792", cdpUrl: "http://127.0.0.1:18792",