fix(browser): persist role refs per targetId

This commit is contained in:
Peter Steinberger
2026-01-15 09:56:19 +00:00
parent 84e9401d53
commit d5d33d4848
10 changed files with 119 additions and 4 deletions

View File

@@ -1,7 +1,12 @@
import type { Page } from "playwright-core";
import { describe, expect, it, vi } from "vitest";
import { ensurePageState, refLocator } from "./pw-session.js";
import {
ensurePageState,
refLocator,
rememberRoleRefsForTarget,
restoreRoleRefsForTarget,
} from "./pw-session.js";
function fakePage(): {
page: Page;
@@ -59,6 +64,26 @@ describe("pw-session refLocator", () => {
});
});
describe("pw-session role refs cache", () => {
it("restores refs for a different Page instance (same CDP targetId)", () => {
const cdpUrl = "http://127.0.0.1:9222";
const targetId = "t1";
rememberRoleRefsForTarget({
cdpUrl,
targetId,
refs: { e1: { role: "button", name: "OK" } },
frameSelector: "iframe#main",
});
const { page, mocks } = fakePage();
restoreRoleRefsForTarget({ cdpUrl, targetId, page });
refLocator(page, "e1");
expect(mocks.frameLocator).toHaveBeenCalledWith("iframe#main");
});
});
describe("pw-session ensurePageState", () => {
it("tracks page errors and network requests (best-effort)", () => {
const { page, handlers } = fakePage();