如何在puppeteer pageerror上使mocha测试失败

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

我正在使用mocha和puppeteer来测试页面。如果页面抛出未捕获的异常,我希望测试失败。

这是我到目前为止所尝试的:

it('should fail because page has an error', async () => {
  const browser = await puppeteer.launch({});
  const page = await browser.newPage();

  page.on('pageerror', (e) => {
    // TODO: Make the test fail somehow
    throw e;
  });

  await page.goto('http://example.com/page-that-throws-an-error');
});

当我运行mocha时,这个测试成功但在我的终端留下了UnhandledPromiseRejectionWarning

我不认为我可以使用done(error)回调,因为我已经在使用异步函数,而mocha会抱怨Error: Resolution method is overspecified

mocha puppeteer
1个回答
1
投票

我意识到我可以跟踪页面抛出的错误,然后在测试结束时检查页面是否抛出任何错误。

it('should fail because page has an error', async () => {
  const browser = await puppeteer.launch({});
  const page = await browser.newPage();

  const pageErrors = [];
  page.on('pageerror', (e) => {
    pageErrors.push(e);
  });

  await page.goto('http://example.com/page-that-throws-an-error');

  for (const e of pageErrors) {
    throw e;
  }
});

这可行,但测试仅在检查没有错误时才会失败。理想情况下,我希望找到一种方法,一旦页面抛出错误,测试就会失败。

© www.soinside.com 2019 - 2024. All rights reserved.