feat: harden test and registry evidence
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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 };
|
||||
Reference in New Issue
Block a user