Files
clawdbot/src/browser/pw-tools-core.activity.ts
2026-01-14 05:39:44 +00:00

65 lines
1.7 KiB
TypeScript

import type {
BrowserConsoleMessage,
BrowserNetworkRequest,
BrowserPageError,
} from "./pw-session.js";
import { ensurePageState, getPageForTargetId } from "./pw-session.js";
export async function getPageErrorsViaPlaywright(opts: {
cdpUrl: string;
targetId?: string;
clear?: boolean;
}): Promise<{ errors: BrowserPageError[] }> {
const page = await getPageForTargetId(opts);
const state = ensurePageState(page);
const errors = [...state.errors];
if (opts.clear) state.errors = [];
return { errors };
}
export async function getNetworkRequestsViaPlaywright(opts: {
cdpUrl: string;
targetId?: string;
filter?: string;
clear?: boolean;
}): Promise<{ requests: BrowserNetworkRequest[] }> {
const page = await getPageForTargetId(opts);
const state = ensurePageState(page);
const raw = [...state.requests];
const filter = typeof opts.filter === "string" ? opts.filter.trim() : "";
const requests = filter ? raw.filter((r) => r.url.includes(filter)) : raw;
if (opts.clear) {
state.requests = [];
state.requestIds = new WeakMap();
}
return { requests };
}
function consolePriority(level: string) {
switch (level) {
case "error":
return 3;
case "warning":
return 2;
case "info":
case "log":
return 1;
case "debug":
return 0;
default:
return 1;
}
}
export async function getConsoleMessagesViaPlaywright(opts: {
cdpUrl: string;
targetId?: string;
level?: string;
}): Promise<BrowserConsoleMessage[]> {
const page = await getPageForTargetId(opts);
const state = ensurePageState(page);
if (!opts.level) return [...state.console];
const min = consolePriority(opts.level);
return state.console.filter((msg) => consolePriority(msg.type) >= min);
}