65 lines
1.7 KiB
TypeScript
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);
|
|
}
|