summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/ng-schematics/src/schematics/ng-add/files/common/e2e/tests/utils.ts.template
blob: 1e291839fe1c2e63b1da3a22e593dfe189c0e01b (plain)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<% if(testRunner == 'node') { %>
import {before, beforeEach, after, afterEach} from 'node:test';
<% } %>
import * as puppeteer from 'puppeteer';

const baseUrl = process.env['baseUrl'] ?? '<%= baseUrl %>';
let browser: puppeteer.Browser;
let page: puppeteer.Page;

export function setupBrowserHooks(path = ''): void {
<% if(testRunner == 'jasmine' || testRunner == 'jest') { %>
  beforeAll(async () => {
    browser = await puppeteer.launch();
  });
<% } %><% if(testRunner == 'mocha' || testRunner == 'node') { %>
  before(async () => {
    browser = await puppeteer.launch();
  });
<% } %>

  beforeEach(async () => {
    page = await browser.newPage();
    await page.goto(`${baseUrl}${path}`);
  });

  afterEach(async () => {
    await page?.close();
  });

<% if(testRunner == 'jasmine' || testRunner == 'jest') { %>
  afterAll(async () => {
    await browser?.close();
  });
<% } %><% if(testRunner == 'mocha' || testRunner == 'node') { %>
  after(async () => {
    await browser?.close();
  });
<% } %>
}

export function getBrowserState(): {
  browser: puppeteer.Browser;
  page: puppeteer.Page;
  baseUrl: string;
} {
  if (!browser) {
    throw new Error(
      'No browser state found! Ensure `setupBrowserHooks()` is called.'
    );
  }
  return {
    browser,
    page,
    baseUrl,
  };
}