如何为运行Puppeteer的Jest测试设置最大超时时间?
设置Puppeteer测试用例的最大超时时间
别担心,这个功能其实很好实现,主要分两种场景来处理:测试框架层面的全局/单例超时控制和Puppeteer自身操作的超时限制,结合你的代码给你具体方案:
1. 针对单个测试用例设置总超时(Jest框架)
从你的代码来看,你应该是用Jest写的测试。Jest本身支持给单个测试用例设置总超时时间,只需要在test函数的第三个参数里配置即可,比如设置10秒超时:
import puppeteer from 'puppeteer' test('App loads', async() => { const browser = await puppeteer.launch({ headless: false, slowMo: 250 }); const page = await browser.newPage(); await page.goto('http://localhost:3000'); await browser.close(); }, 10000); // 这里的10000就是超时时间,单位为毫秒
如果想给所有测试用例设置全局默认超时,可以在Jest配置文件(比如jest.config.js)里添加:
module.exports = { testTimeout: 10000, // 全局默认测试超时10秒 };
2. 控制Puppeteer单个操作的超时
如果只是担心某个特定的Puppeteer操作(比如page.goto)耗时过长,可以给这个操作单独设置超时:
// 给page.goto设置5秒超时,超时会直接抛出错误 await page.goto('http://localhost:3000', { timeout: 5000 });
也可以给整个Page实例设置默认超时,后续所有页面操作都会沿用这个设置:
const page = await browser.newPage(); page.setDefaultTimeout(5000); // 所有页面操作默认5秒超时
3. 两种方式结合使用
如果既想限制整个测试用例的总执行时长,又要控制单个Puppeteer操作的耗时,可以同时配置,这样能更精准地把控测试的执行节奏,避免某个慢操作拖垮整个测试。
内容的提问来源于stack exchange,提问作者Atav32
相关产品推荐
相关产品推荐

