From 4556707cb7d844df26da2d7ab2d3697d0da946c6 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 4 May 2026 22:29:08 +0100 Subject: [PATCH] test(browser): mirror route URL guard in existing-session helper --- .../routes/existing-session.test-support.ts | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/extensions/browser/src/browser/routes/existing-session.test-support.ts b/extensions/browser/src/browser/routes/existing-session.test-support.ts index 4d1313fbc19..83049920409 100644 --- a/extensions/browser/src/browser/routes/existing-session.test-support.ts +++ b/extensions/browser/src/browser/routes/existing-session.test-support.ts @@ -1,4 +1,9 @@ import { vi } from "vitest"; +import { + assertBrowserNavigationResultAllowed, + withBrowserNavigationPolicy, +} from "../navigation-guard.js"; +import type { BrowserRouteContext } from "../server-context.js"; import type { BrowserRequest } from "./types.js"; export const existingSessionRouteState = { @@ -37,14 +42,33 @@ export function createExistingSessionAgentSharedModule() { typeof body.targetId === "string" ? body.targetId : undefined, ), withPlaywrightRouteContext: vi.fn(), - withRouteTabContext: vi.fn(async ({ run }: { run: (args: unknown) => Promise }) => { - await run({ - profileCtx: existingSessionRouteState.profileCtx, - cdpUrl: "http://127.0.0.1:18800", - tab: existingSessionRouteState.tab, - resolveTabUrl: vi.fn(async (fallbackUrl?: string) => fallbackUrl ?? routeStateUrl()), - }); - }), + withRouteTabContext: vi.fn( + async ({ + ctx, + enforceCurrentUrlAllowed, + run, + }: { + ctx: BrowserRouteContext; + enforceCurrentUrlAllowed?: boolean; + run: (args: unknown) => Promise; + }) => { + if (enforceCurrentUrlAllowed) { + const ssrfPolicyOpts = withBrowserNavigationPolicy(ctx.state().resolved.ssrfPolicy); + if (ssrfPolicyOpts.ssrfPolicy) { + await assertBrowserNavigationResultAllowed({ + url: existingSessionRouteState.tab.url, + ...ssrfPolicyOpts, + }); + } + } + await run({ + profileCtx: existingSessionRouteState.profileCtx, + cdpUrl: "http://127.0.0.1:18800", + tab: existingSessionRouteState.tab, + resolveTabUrl: vi.fn(async (fallbackUrl?: string) => fallbackUrl ?? routeStateUrl()), + }); + }, + ), }; }