test(browser): route discovery sockets through proxy

This commit is contained in:
N0zoM1z0 2026-07-14 21:37:08 +00:00
parent 74c512130c
commit e363f0eab8
1 changed files with 16 additions and 1 deletions

View File

@ -18,10 +18,11 @@ export async function startPageCdpProxy(upstreamEndpoint) {
return;
}
const value = await upstreamJson(upstreamEndpoint, request.url);
const rewritten =
const pageScoped =
request.url === "/json/version"
? await pageScopedVersion(upstreamEndpoint, value)
: value;
const rewritten = rewriteWebSocketEndpoints(pageScoped, server);
const body = JSON.stringify(rewritten);
response.writeHead(200, {
"Content-Type": "application/json",
@ -103,6 +104,20 @@ async function pageScopedVersion(upstreamEndpoint, version) {
return { ...version, webSocketDebuggerUrl: page.webSocketDebuggerUrl };
}
function rewriteWebSocketEndpoints(value, server) {
const address = server.address();
if (address === null || typeof address === "string")
throw new Error("Page CDP proxy has no TCP address");
const rewrite = (entry) => {
if (typeof entry.webSocketDebuggerUrl !== "string") return entry;
const url = new URL(entry.webSocketDebuggerUrl);
url.hostname = "127.0.0.1";
url.port = String(address.port);
return { ...entry, webSocketDebuggerUrl: url.href };
};
return Array.isArray(value) ? value.map(rewrite) : rewrite(value);
}
async function upstreamJson(endpoint, path) {
const response = await fetch(new URL(path, endpoint));
if (!response.ok)