Webdriver.io使用video-reporter生成的视频无法正常打开问题求助
解决方案
核心问题根因
- 配置项
videoRenderTimeout参数值仅为5秒,视频渲染未完成就被程序中断,生成的是不完整的损坏文件,后续文件读取时就会抛出ENOENT错误 - wdio-video-reporter依赖本地ffmpeg工具,若本地未安装ffmpeg或ffmpeg未加入系统环境变量,会导致视频渲染失败,生成空的或不完整的损坏文件
- video-reporter和allure-reporter共用同一个输出目录
./allure-results,allure运行过程中可能会清理目录内文件,导致刚生成的视频被误删
修复步骤
- 调整reporter配置
reporters: [ [video, { saveAllVideos: false, videoSlowdownMultiplier: 3, // 渲染超时时间调整到20秒以上,预留充足渲染时间 videoRenderTimeout: 20, // 单独设置视频输出目录,不要和allure共用 outputDir: './test-videos' }], ['allure', { outputDir: './allure-results', disableWebdriverStepsReporting: true, disableWebdriverScreenshotsReporting: true, }], ],
- 验证ffmpeg安装状态
打开命令行执行ffmpeg -version,若提示找不到命令,下载对应系统版本的ffmpeg安装包,安装完成后将ffmpeg的bin目录加入系统环境变量,重启终端后再次执行命令验证是否正常返回版本信息。 - 确认目录权限
检查./test-videos和./allure-results目录的读写权限,确保当前运行测试的用户对两个目录有完整读写权限,避免权限不足导致文件写入失败。 - Windows系统适配
如果是Windows系统运行测试,建议将配置中的输出目录改为绝对路径写法,避免nodejs相对路径解析出现偏差导致找不到目录。 - 验证修复效果
重新运行测试,测试失败后查看./test-videos目录下的视频文件大小,正常生成的视频大小应该在几MB到几十MB不等,可正常打开播放,同时Allure报告中关联的视频也可正常加载。
内容的提问来源于stack exchange,提问作者Ondrej
相关产品推荐
相关产品推荐

