-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconsole.fixture.ts
More file actions
41 lines (37 loc) · 1.05 KB
/
Copy pathconsole.fixture.ts
File metadata and controls
41 lines (37 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import {
expect as baseExpect,
test as baseTest,
type Page,
type ConsoleMessage,
} from "@playwright/test";
class PageConsole {
readonly messages: ConsoleMessage[] = [];
constructor(page: Page) {
page.on("console", (message) => this.messages.push(message));
}
}
export const test = baseTest.extend<{ pageConsole: PageConsole }>({
pageConsole: async ({ page }, use) => {
const pageConsole = new PageConsole(page);
await use(pageConsole);
// await expect(pageConsole).toHaveNoConsoleErrors();
},
});
export const expect = baseExpect.extend({
async toHaveNoConsoleErrors(pageConsole: PageConsole) {
const errors = pageConsole.messages.filter(
(message) => message.type() === "error"
);
const pass = errors.length === 0;
const message = () =>
this.utils.matcherHint("toHaveNoConsoleErrors", undefined, "") +
"\n\n" +
`Errors: ${this.utils.stringify(errors.map((e) => e.text()))}\n`;
return {
message,
pass,
name: "toHaveNoConsoleErrors",
actual: errors,
};
},
});