fix(browser): persist role refs per targetId
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user