static _requirePuppeteer() {
    try {
      // eslint-disable-next-line import/no-extraneous-dependencies
      return require('puppeteer');
    } catch (_) {}

    try {
      // @ts-ignore - puppeteer-core is API-compatible with puppeteer
      // eslint-disable-next-line import/no-extraneous-dependencies
      return require('puppeteer-core');
    } catch (_) {}

    // Try relative to the CWD too in case we're installed globally
    try {
      return require(path.join(process.cwd(), 'node_modules/puppeteer'));
    } catch (_) {}

    try {
      return require(path.join(process.cwd(), 'node_modules/puppeteer-core'));
    } catch (_) {}
  }
Returns the puppeteer module. First attempts to require `puppeteer` and then `puppeteer-core`
if puppeteer is not available. They are the exact same API but puppeteer-core requires explicit
setting of `collect.chromePath`.
@return {typeof import('puppeteer')|undefined}