47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import {
|
|
expect,
|
|
test as base,
|
|
type ConsoleMessage,
|
|
type Page,
|
|
} from "@playwright/test";
|
|
|
|
function ignoredConsole(message: ConsoleMessage) {
|
|
return (
|
|
message.type() === "warning" &&
|
|
message.text().includes("NO_COLOR")
|
|
);
|
|
}
|
|
|
|
export const test = base.extend({
|
|
page: async ({ page }, use) => {
|
|
const failures: string[] = [];
|
|
const onConsole = (message: ConsoleMessage) => {
|
|
if (
|
|
["error", "warning"].includes(message.type()) &&
|
|
!ignoredConsole(message)
|
|
) {
|
|
failures.push(`console:${message.type()}:${message.text()}`);
|
|
}
|
|
};
|
|
const onPageError = (error: Error) => {
|
|
failures.push(`pageerror:${error.name}`);
|
|
};
|
|
const onRequestFailed = (request: import("@playwright/test").Request) => {
|
|
failures.push(
|
|
`requestfailed:${request.method()}:${new URL(request.url()).pathname}:${request.failure()?.errorText ?? "unknown"}`,
|
|
);
|
|
};
|
|
page.on("console", onConsole);
|
|
page.on("pageerror", onPageError);
|
|
page.on("requestfailed", onRequestFailed);
|
|
await use(page);
|
|
page.off("console", onConsole);
|
|
page.off("pageerror", onPageError);
|
|
page.off("requestfailed", onRequestFailed);
|
|
expect(failures, "unexpected browser console/page errors").toEqual([]);
|
|
},
|
|
});
|
|
|
|
export { expect };
|
|
export type { Page };
|