我正在构建一个 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'
});
您很可能需要设置
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;