2
0

PuppeteerEnvironment.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const { readFile } = require('fs').promises;
  2. const os = require('os');
  3. const path = require('path');
  4. const puppeteer = require('puppeteer');
  5. const NodeEnvironment = require('jest-environment-node');
  6. const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup');
  7. /**
  8. * Custom Puppeteer environment as documented on https://jestjs.io/docs/puppeteer.
  9. * We don’t use jest-puppeteer because it’s unreliable.
  10. */
  11. class PuppeteerEnvironment extends NodeEnvironment {
  12. async setup() {
  13. await super.setup();
  14. // get the wsEndpoint
  15. const wsEndpoint = await readFile(path.join(DIR, 'wsEndpoint'), 'utf8');
  16. if (!wsEndpoint) {
  17. throw new Error('wsEndpoint not found');
  18. }
  19. this.global.TEST_ORIGIN = process.env.TEST_ORIGIN ?? 'http://localhost:8000';
  20. // connect to puppeteer
  21. this.global.browser = await puppeteer.connect({
  22. browserWSEndpoint: wsEndpoint,
  23. defaultViewport: {
  24. width: 1024,
  25. height: 768,
  26. },
  27. });
  28. this.global.page = await this.global.browser.newPage();
  29. }
  30. async teardown() {
  31. await this.global.page.close();
  32. await super.teardown();
  33. }
  34. getVmContext() {
  35. return super.getVmContext();
  36. }
  37. }
  38. module.exports = PuppeteerEnvironment;