针对 chrome 扩展的 Jest-Puppeteer 测试 - 测试通过,但测试套件由于需要网站而失败

问题描述 投票:0回答:1

我正在构建一个 Chrome 扩展程序,用于测试我无法控制的外部网站。该网站有很多内部错误,导致我的测试套件失败,尽管测试通过并且 puppeteer 工作流程有效。 (我确实为该网站的实际用户感到遗憾)。我尝试定义丢失的引用,但这只会导致任何工作不起作用。我已经添加了各种侦听器来处理网站的错误,但到目前为止还没有运气,尽管测试完成,但套件仍然失败。

我将不得不省略任何识别信息,但希望这是一个好的开始,我将根据请求尽可能添加。


  ● Test suite failed to run

    ReferenceError: module is not defined


  ● Test suite failed to run

    ReferenceError: getItemKeyValue is not defined

  ● Test suite failed to run

    TypeError: Cannot read properties of undefined (reading 'template')


  ● Test suite failed to run

    ReferenceError: global is not defined

Test Suites: 1 failed, 1 total
Tests:       4 passed, 4 total

我试图忽略我必须测试我的扩展的网站中固有的所有错误,以便测试套件可以通过。所有这些结果都是运行测试并通过它们,然后套件失败,或者无法运行网站,因此一切都会失败,因为我定义了缺少的变量..

await page.evaluateOnNewDocument(() => {
    window.addEventListener('error', event => {
      console.warn('Error intercepted:', event.message);
      event.preventDefault(); // Prevent the default handler
    });
  });

  //This error captures and gets past page errors, but doesn't work on the reference errors 
  page.on('pageerror', error => {
    if (error instanceof ReferenceError) {
      // Handle ReferenceError differently
      console.log('ref error', error)

    } else {
      // Handle or log other types of errors
      console.error('Page error:', error.message);
    }
  });

  // Stops all progress, but technically can run the suite :(
  await page.evaluateOnNewDocument(() => {
    window.getItemKeyValue = window.getItemKeyValue || function () { }; // Stubbing the function
    window.global = window; // Defining 'global'
  });
javascript jestjs window puppeteer
1个回答
0
投票

您很可能需要设置

exitOnPageError=false
。 由于默认值为
true
,测试可能会通过,但之后, 该页面创建了一个错误,并且运行者退出了测试套件。

来自文档 https://github.com/argos-ci/jest-puppeteer?tab=readme-ov-file#configuring-jest-puppeteer :

  /**
   * Exit on page error.
   * @default true
   */
  exitOnPageError?: boolean;
© www.soinside.com 2019 - 2024. All rights reserved.