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 * as chromeModule from "./chrome.js";
import { InvalidBrowserNavigationUrlError } from "./navigation-guard.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() {
const pageOn = vi.fn();
@@ -43,15 +47,15 @@ function installBrowserMocks() {
close: browserClose,
} as unknown as import("playwright-core").Browser;
connectOverCdpMock.mockResolvedValue(browser);
getChromeWebSocketUrlMock.mockResolvedValue(null);
connectOverCdpSpy.mockResolvedValue(browser);
getChromeWebSocketUrlSpy.mockResolvedValue(null);
return { pageGoto, browserClose };
}
afterEach(async () => {
connectOverCdpMock.mockReset();
getChromeWebSocketUrlMock.mockReset();
connectOverCdpSpy.mockReset();
getChromeWebSocketUrlSpy.mockReset();
await closePlaywrightBrowserConnection().catch(() => {});
});

View File

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