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

Allure报告中Docker录制视频无法播放问题及解决方案咨询

解决Docker录屏文件未就绪时无法添加至Allure报告的问题

方案一:等待录屏文件写入完成

核心思路:WebDriverManager的Docker录屏进程可能在测试结束前仍后台写入视频,因此需先确认文件大小稳定(停止变化),再读取文件内容添加至报告。

实现代码

先封装等待文件就绪的工具方法:

private void waitForFileReady(String filePath, long timeoutMs, long checkIntervalMs) throws InterruptedException {
    File videoFile = new File(filePath);
    long previousSize = -1;
    long startTime = System.currentTimeMillis();

    while (System.currentTimeMillis() - startTime < timeoutMs) {
        long currentSize = videoFile.length();
        if (currentSize > 0 && currentSize == previousSize) {
            // 文件大小稳定,判定写入完成
            return;
        }
        previousSize = currentSize;
        Thread.sleep(checkIntervalMs);
    }
    throw new RuntimeException("等待视频文件就绪超时,路径:" + filePath);
}

修改allureVid方法,先等待文件就绪再读取:

public void allureVid() {
    String videoPath = "recordings\\chrome_25651151651.mp4";
    try {
        // 等待10秒,每500毫秒检查一次文件状态
        waitForFileReady(videoPath, 10000, 500);
        
        byte[] byteArr = IOUtils.toByteArray(new FileInputStream(videoPath));
        Allure.addAttachment("测试失败录屏", "video/mp4", new ByteArrayInputStream(byteArr), "mp4");
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

方案二:添加本地文件链接至Allure报告

核心思路:不将视频内容嵌入报告,而是添加本地文件的直接链接,报告打开时直接访问本地已完成的视频文件,避免提前读取未写完的内容。

实现代码

修改allureVid方法,生成本地文件链接并添加到报告:

public void allureVid() {
    String videoPath = new File("recordings\\chrome_25651151651.mp4").getAbsolutePath();
    try {
        // 可选:先等待文件写入完成
        waitForFileReady(videoPath, 10000, 500);
        
        // 生成符合本地路径规则的Markdown链接
        String linkMarkdown = String.format("[查看测试失败录屏](file:///%s)", videoPath.replace("\\", "/"));
        Allure.addAttachment("测试录屏链接", "text/markdown", new ByteArrayInputStream(linkMarkdown.getBytes()), "md");
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

注意事项

  • 该方式仅在本地打开Allure报告时有效,若报告部署到远程服务器,需同步上传视频文件并替换为远程访问路径。
  • Windows系统下本地链接需使用file:///前缀,路径反斜杠需替换为正斜杠。

额外优化建议

  • 避免使用固定文件名,可结合测试用例名称或UUID生成唯一文件名,防止多个测试用例覆盖同一视频文件。
  • 将文件检查逻辑移至afterTest阶段执行,而非beforeTestStop,确保WebDriver完全关闭、录屏进程结束后再处理文件。

内容的提问来源于stack exchange,提问作者Serhio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:07:58