要使backstop / puppeteer显示哪个URL失败了,可以添加一个错误处理程序来捕获超时错误并记录失败的URL。以下是一个示例代码,演示如何实现此功能:
const backstop = require('backstopjs');
const puppeteer = require('puppeteer');
// 设置超时时间(以毫秒为单位)
const TIMEOUT = 5000;
// 配置backstop.js
const config = {
// 配置其他参数...
scenarios: [
{
// 配置场景参数...
url: 'https://example.com',
},
// 其他场景...
],
};
// 执行backstop测试
backstop('test', { config })
.then(() => {
console.log('测试已完成!');
})
.catch((error) => {
// 检查是否是超时错误
if (error.message.includes('Timeout exceeded')) {
const failedUrl = getFailedUrl(error);
console.error(`URL失败:${failedUrl}`);
} else {
console.error('发生错误:', error);
}
});
// 获取失败的URL
async function getFailedUrl(error) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 获取失败的URL
const failedUrl = await page.evaluate(() => {
return window.location.href;
});
await browser.close();
return failedUrl;
}
在上面的示例中,我们首先设置了一个超时时间(5秒)。然后,我们配置了backstop.js,其中包含要测试的URL列表。在执行backstop测试时,我们添加了一个错误处理程序来捕获超时错误。如果发生超时错误,我们调用getFailedUrl
函数来获取失败的URL,并将其记录在控制台中。
getFailedUrl
函数使用puppeteer来启动一个浏览器实例,并打开一个新页面。然后,它使用page.evaluate
方法来获取当前页面的URL。最后,它关闭浏览器并返回失败的URL。
请注意,上述代码仅演示了如何获取失败的URL。您可以根据需要进行修改和调整,以满足您的具体要求。