refactor(browser): trim observe endpoints

This commit is contained in:
Peter Steinberger
2025-12-20 02:07:27 +00:00
parent 0e94c6b025
commit 479720c169
11 changed files with 12 additions and 405 deletions

View File

@@ -3,7 +3,6 @@ import type {
BrowserContext,
ConsoleMessage,
Page,
Request,
} from "playwright-core";
import { chromium } from "playwright-core";
@@ -15,14 +14,12 @@ export type BrowserConsoleMessage = {
};
export type BrowserNetworkRequest = {
requestId?: string;
url: string;
method: string;
resourceType?: string;
status?: number;
ok?: boolean;
fromCache?: boolean;
failureText?: string;
timestamp: string;
resourceType?: string;
timestamp?: string;
};
type SnapshotForAIResult = { full: string; incremental?: string };
@@ -47,8 +44,6 @@ type ConnectedBrowser = {
type PageState = {
console: BrowserConsoleMessage[];
network: BrowserNetworkRequest[];
requestMap: Map<Request, BrowserNetworkRequest>;
};
const pageStates = new WeakMap<Page, PageState>();
@@ -56,7 +51,6 @@ const observedContexts = new WeakSet<BrowserContext>();
const observedPages = new WeakSet<Page>();
const MAX_CONSOLE_MESSAGES = 500;
const MAX_NETWORK_REQUESTS = 1000;
let cached: ConnectedBrowser | null = null;
let connecting: Promise<ConnectedBrowser> | null = null;
@@ -71,8 +65,6 @@ export function ensurePageState(page: Page): PageState {
const state: PageState = {
console: [],
network: [],
requestMap: new Map(),
};
pageStates.set(page, state);
@@ -88,34 +80,6 @@ export function ensurePageState(page: Page): PageState {
state.console.push(entry);
if (state.console.length > MAX_CONSOLE_MESSAGES) state.console.shift();
});
page.on("request", (req: Request) => {
const entry: BrowserNetworkRequest = {
url: req.url(),
method: req.method(),
resourceType: req.resourceType(),
timestamp: new Date().toISOString(),
};
state.network.push(entry);
state.requestMap.set(req, entry);
if (state.network.length > MAX_NETWORK_REQUESTS) state.network.shift();
});
page.on("requestfinished", async (req: Request) => {
const entry = state.requestMap.get(req);
if (!entry) return;
const response = await req.response().catch(() => null);
if (response) {
entry.status = response.status();
entry.ok = response.ok();
entry.fromCache = response.fromServiceWorker();
}
state.requestMap.delete(req);
});
page.on("requestfailed", (req: Request) => {
const entry = state.requestMap.get(req);
if (!entry) return;
entry.failureText = req.failure()?.errorText;
state.requestMap.delete(req);
});
page.on("close", () => {
pageStates.delete(page);
observedPages.delete(page);