refactor(browser): split pw tools + agent routes
This commit is contained in:
64
src/browser/pw-tools-core.activity.ts
Normal file
64
src/browser/pw-tools-core.activity.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user