fix: preserve loopback ws cdp tab ops (#31085) (thanks @shrey150)

This commit is contained in:
Peter Steinberger
2026-03-08 18:47:48 +00:00
parent 4d904e7b7d
commit 9914b48c57
7 changed files with 158 additions and 31 deletions

View File

@@ -1,5 +1,9 @@
import { describe, expect, it, vi } from "vitest";
import { appendCdpPath, getHeadersWithAuth } from "./cdp.helpers.js";
import {
appendCdpPath,
getHeadersWithAuth,
normalizeCdpHttpBaseForJsonEndpoints,
} from "./cdp.helpers.js";
import { __test } from "./client-fetch.js";
import { resolveBrowserConfig, resolveProfile } from "./config.js";
import { shouldRejectBrowserMutation } from "./csrf.js";
@@ -155,6 +159,18 @@ describe("cdp.helpers", () => {
expect(url).toBe("https://example.com/chrome/json/list?token=abc");
});
it("normalizes direct WebSocket CDP URLs to an HTTP base for /json endpoints", () => {
const url = normalizeCdpHttpBaseForJsonEndpoints(
"wss://connect.example.com/devtools/browser/ABC?token=abc",
);
expect(url).toBe("https://connect.example.com/?token=abc");
});
it("strips a trailing /cdp suffix when normalizing HTTP bases", () => {
const url = normalizeCdpHttpBaseForJsonEndpoints("ws://127.0.0.1:9222/cdp?token=abc");
expect(url).toBe("http://127.0.0.1:9222/?token=abc");
});
it("adds basic auth headers when credentials are present", () => {
const headers = getHeadersWithAuth("https://user:pass@example.com");
expect(headers.Authorization).toBe(`Basic ${Buffer.from("user:pass").toString("base64")}`);