You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Karate Docker CI执行中彻底禁用视频录制?

Karate UI自动化CI环境视频录制问题解决办法

问题描述

我使用Karate 1.5.0进行UI自动化测试,通过Docker(镜像:karatelabs/karate-chrome:1.5.0)在CI环境运行测试,配置如下:

karate.configure('driverTarget', {
  docker: 'karatelabs/karate-chrome:1.5.0',
  showDriverLog: false,
  timeout: 60000
});

尽管已尝试设置video: false,但master分支的CI执行时,target/karate-reports目录仍会生成.mp4文件,导致CPU和存储占用过高;其他分支运行时不会录制视频。怀疑原因是karate.env未正确识别为ci,或是Docker入口点覆盖了配置。需要找到在CI Docker执行中完全停止视频录制的方法,降低CPU/内存负载。

解决方案

1. 强制在driver配置中关闭视频录制

确保video: false直接写入driverTarget核心配置,同时检查测试代码中是否有单个driver启动时的配置覆盖全局设置:

karate.configure('driverTarget', {
  docker: 'karatelabs/karate-chrome:1.5.0',
  showDriverLog: false,
  timeout: 60000,
  video: false // 明确添加此配置项
});

若存在单独启动driver的代码,也需显式关闭视频:

driver { type: 'chrome', video: false }

2. 确保karate.env正确设置为ci

Karate在ci环境下默认会禁用视频录制,但如果环境变量未正确传递,会导致识别失败。需在CI流水线中强制设置环境变量:

  • Jenkins:在构建步骤添加命令 export karate.env=ci
  • GitLab CI:在.gitlab-ci.yml中添加变量配置:
variables:
  karate.env: ci

可在测试代码中添加日志验证环境是否正确识别:

karate.log('当前运行环境:', karate.env);

3. 覆盖Docker镜像的默认视频录制行为

karatelabs/karate-chrome镜像可能默认启用视频录制,可通过传递环境变量给容器强制关闭:

  • 直接运行Docker容器时添加参数:
docker run -e KARATE_VIDEO=false karatelabs/karate-chrome:1.5.0 ...
  • 通过Karate的docker配置传递环境变量:
karate.configure('driverTarget', {
  docker: {
    image: 'karatelabs/karate-chrome:1.5.0',
    env: { KARATE_VIDEO: 'false' }
  },
  showDriverLog: false,
  timeout: 60000,
  video: false
});

4. 检查分支特定配置差异

master分支可能存在单独的配置文件(如karate-config.js的分支版本差异),对比master与其他分支的配置文件,确认没有强制开启视频录制的差异化设置。

5. 流水线添加视频清理步骤

若以上方法仍有残留视频文件,可在CI测试执行完成后添加清理命令:

rm -rf target/karate-reports/*.mp4

内容的提问来源于stack exchange,提问作者satheesh kannan k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:57:10