1 | import NodeEnvironment = require("jest-environment-node");
|
2 | import { Browser, BrowserContext, Page } from "puppeteer";
|
3 | import { Context } from "vm";
|
4 |
|
5 | interface JestPuppeteer {
|
6 | /**
|
7 | * Reset global.page
|
8 | *
|
9 | * ```ts
|
10 | * beforeEach(async () => {
|
11 | * await jestPuppeteer.resetPage()
|
12 | * })
|
13 | * ```
|
14 | */
|
15 | resetPage(): Promise<void>;
|
16 |
|
17 | /**
|
18 | * Reset global.browser
|
19 | *
|
20 | * ```ts
|
21 | * beforeEach(async () => {
|
22 | * await jestPuppeteer.resetBrowser()
|
23 | * })
|
24 | * ```
|
25 | */
|
26 | resetBrowser(): Promise<void>;
|
27 |
|
28 | /**
|
29 | * Suspends test execution and gives you opportunity to see what's going on in the browser
|
30 | * - Jest is suspended (no timeout)
|
31 | * - A debugger instruction to Chromium, if Puppeteer has been launched with { devtools: true } it will stop
|
32 | *
|
33 | * ```ts
|
34 | * it('should put test in debug mode', async () => {
|
35 | * await jestPuppeteer.debug()
|
36 | * })
|
37 | * ```
|
38 | */
|
39 | debug(): Promise<void>;
|
40 | }
|
41 |
|
42 | interface Global extends NonNullable<NodeEnvironment["global"]> {
|
43 | browser: Browser;
|
44 | context: Context;
|
45 | page: Page;
|
46 | jestPuppeteer: JestPuppeteer;
|
47 | }
|
48 |
|
49 | /** Note: TestEnvironment is sandboxed. Each test suite will trigger setup/teardown in their own TestEnvironment. */
|
50 | declare class PuppeteerEnvironment extends NodeEnvironment {
|
51 | global: Global;
|
52 | }
|
53 |
|
54 | declare global {
|
55 | const browser: Browser;
|
56 | const context: BrowserContext;
|
57 | const page: Page;
|
58 | const jestPuppeteer: JestPuppeteer;
|
59 | }
|
60 |
|
61 | export = PuppeteerEnvironment;
|