Karma无法捕获Chrome v93并超时放弃执行的问题咨询
问题成因
该故障由Chrome 93版本的默认配置变更与旧版Karma工具链不兼容导致:
Chrome 93默认启用了全新的无头模式实现,你当前使用的Karma v3.0.0及配套的低版本karma-chrome-launcher无法适配新的无头Chrome启动逻辑,加上Windows CI代理通常以无图形界面的服务身份运行,Chrome启动后无法与Karma服务建立连接,最终触发60秒捕获超时、构建失败。
可行解决方案
按落地优先级排序:
- 快速临时修复:修改项目根目录下的
karma.conf.js配置,新增自定义Chrome启动配置,强制使用旧版无头模式启动,参考配置如下:
module.exports = function(config) { config.set({ // 其余原有配置保持不变 browsers: ['ChromeHeadlessCI'], customLaunchers: { ChromeHeadlessCI: { base: 'ChromeHeadless', flags: [ '--no-sandbox', '--disable-gpu', '--headless=old', '--disable-dev-shm-usage' ] } } }) }
修改后无需调整原有CI执行命令,直接重新运行构建即可生效。
- 兼容版本升级:将相关前端测试依赖升级至适配Chrome 93+的版本:
karma升级到v6.3.4及以上karma-chrome-launcher升级到v3.1.0及以上- Angular项目同步升级
@angular-devkit/build-angular到v12.2.0及以上
升级完成后无需强制指定旧版无头模式即可正常运行测试。
- 长期稳定性优化:在所有Windows构建代理上禁用Chrome自动更新,固定Chrome大版本,避免后续Chrome自动升级再次引入不兼容问题,Windows环境可通过修改组策略、禁用Chrome更新服务实现版本锁定。
内容的提问来源于stack exchange,提问作者Craig Fowler
相关产品推荐
相关产品推荐

