Playwright串行执行测试时出现browserType.launch超时问题求助
问题描述
环境信息
- Playwright版本:
@playwright/test": "^1.29.2" - 浏览器:Microsoft Edge
错误信息
"browserType.launch: Timeout 180000ms exceeded at Object.playwrightFixtures.browser.scope [as fn]"
测试场景
项目包含3个测试模块,每个模块有8-9个E2E测试用例:
- 串行运行全部测试时,前2个模块约343秒完成,但执行第3个模块时抛出上述超时错误
- 单独执行每个模块测试均正常,但需要一次性执行全部测试
疑问
- 该如何解决此问题?
- 是否需要手动修改
project\node_modules@playwright\test\lib\index.js:180:51) at node_modules@playwright\test\lib\fixtures.js:95:81文件中的超时设置?
解决方案
绝对不要手动修改node_modules里的文件——一来升级依赖会直接覆盖你的修改,二来容易引入未知的兼容性问题。以下是几种可行的解决思路:
1. 直接配置浏览器启动超时
在playwright.config.js中自定义浏览器启动的超时时间,覆盖默认的180秒(180000ms):
module.exports = { use: { // 保留你的其他配置 launchOptions: { timeout: 300000, // 调整为5分钟,可根据实际耗时修改 }, }, };
如果只想针对Edge浏览器配置,可以在项目列表中单独设置:
module.exports = { projects: [ { name: 'edge', use: { browserName: 'msedge', launchOptions: { timeout: 300000, }, }, }, ], };
2. 排查资源占用问题
串行运行到第三个模块才报错,大概率是前两个模块运行后系统资源(内存、CPU)被占满,导致Edge启动缓慢。可以做这些排查:
- 检查测试用例是否有未正确关闭的页面/浏览器上下文,确保每个测试结束后资源完全释放
- 用系统监控工具(比如任务管理器)观察前两个模块运行后的内存、CPU占用情况
- 添加测试后清理钩子,强制释放资源:
test.afterEach(async ({ browser }) => { const contexts = browser.contexts(); await Promise.all(contexts.map(context => context.close())); });
3. 优化测试执行的资源消耗
- 将大模块拆分为更小的测试文件,避免单个模块持续占用过多资源
- 确认Playwright的测试隔离功能处于开启状态(默认开启),保证每个测试用例拥有独立的运行环境
- 如果机器资源允许,也可以尝试并行运行测试(但如果你必须串行,这条可忽略)
4. 升级Playwright版本
1.29.2是较旧的版本,后续官方修复了不少浏览器启动和资源管理相关的bug,升级到最新稳定版可能直接解决问题:
npm install @playwright/test@latest npx playwright install
内容的提问来源于stack exchange,提问作者Vishal R
相关产品推荐
相关产品推荐

