Playwright测试异常:超时设置不生效且UI模式与无头模式表现不一致
Playwright测试异常:超时设置不生效且UI模式与无头模式表现不一致
兄弟,我太懂你这糟心的情况了——想跑个15分钟的长游戏测试,结果每次都卡在1分钟就超时,还是在UI模式下。我帮你梳理几个关键的排查点和解决方案,应该能搞定这个问题:
1. 先把配置文件的超时拉满
Playwright有好几层级的超时设置,UI模式的默认全局超时可能刚好是1分钟,你得在playwright.config.js里明确把全局和用例超时调到15分钟以上(留1分钟缓冲更稳妥)。把你的配置补全成这样:
// @ts-check const { defineConfig, devices } = require('@playwright/test'); module.exports = defineConfig({ // 全局最大超时,设成16分钟 globalTimeout: 16 * 60 * 1000, // 单个测试用例的超时 timeout: 16 * 60 * 1000, // 单个动作(比如点击、填充)的超时,默认30秒够的话不用改 actionTimeout: 30 * 1000, // 断言的超时时间 expect: { timeout: 10 * 1000, }, // 你原有的其他配置,比如项目、设备之类的 projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, ], });
2. 调整UI模式的专属超时设置
UI模式有自己独立的超时配置,有时候会覆盖config文件的设置。打开UI后,点右上角的⚙️设置图标,找到「Test timeout」和「Global timeout」,手动改成16分钟(960000ms),保存后再重新跑测试。
3. 检查测试用例里有没有单独设超时
要是你某个测试用例里单独写了test.setTimeout(60000)这种代码,会直接覆盖全局配置,导致还是1分钟超时。赶紧检查你的测试代码,把这种单独设置的超时要么删掉,要么改成和全局一致的16分钟。
4. 区分超时类型,别瞎调全局
有时候不是全局超时,而是某个动作(比如等元素出现)超时了,你以为是全局问题。UI模式里能看到详细日志,跑测试时留意日志里的超时提示——如果是某个click或waitForSelector超时,那得针对性优化等待逻辑,而不是单纯改全局超时。
另外,无头模式和UI模式默认配置不一样,所以你在UI模式调好后,要是跑无头模式也得确保config里的设置生效,可以加--verbose参数看日志确认:
npx playwright test --config=playwright.config.js --verbose
备注:内容来源于stack exchange,提问作者Pianoman
相关产品推荐
相关产品推荐

