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

Playwright测试执行成功但未生成视频录制文件

Playwright视频录制未生成的排查与解决步骤

1. 确认配置文件的正确性

首先确保playwright.config.js中的视频配置在use区块内,模式设置正确,也可自定义视频输出目录(未指定时默认存放在test-results目录):

module.exports = {
  use: {
    video: 'on', // 可选值: 'on' | 'off' | 'retain-on-failure' | 'on-first-retry'
    outputDir: './test-videos', // 自定义视频输出目录,可省略
    // 其他基础配置:viewport, baseURL等
  },
  // 其他配置:projects, reporter等
};

注意:video配置需放在全局use或对应项目的use块中,不能独立于这些区块设置。

2. 修复afterEach钩子的视频处理逻辑

你的handleTestVideo函数可能未正确获取视频对象,Playwright中需通过test.info().video获取视频,而非直接读取附件。正确的处理示例:

const fs = require('fs').promises;

test.afterEach(async ({}, testInfo) => {
  if (testInfo.video) {
    const videoPath = testInfo.video.path();
    console.log(`视频已生成:${videoPath}`);
    // 示例:重命名视频文件以便识别
    await fs.rename(videoPath, `./test-videos/${testInfo.title.replace(/\s+/g, '-')}.webm`);
  } else {
    console.log("未录制到视频");
  }
});

注意:test.info().attachments不会自动包含视频文件,视频需通过testInfo.video单独获取。

3. 排查常见环境与执行问题

  • 无头模式兼容:Playwright 1.47默认使用headless: 'new',该模式支持视频录制;手动设置headless: false(有头模式)也可正常录制,无需额外配置。
  • 目录权限检查:Windows下确认outputDir所在目录有写入权限,避免因权限不足导致视频无法保存。
  • 测试完整性验证:若测试用例被test.skip()跳过,或执行中提前终止(如未完成所有步骤),可能不会生成视频。
  • Node.js版本适配:Playwright 1.47推荐使用Node.js 18+,16.x虽能兼容,但升级到18.x可避免潜在的版本适配问题。

4. 直接验证配置生效

执行测试后,直接查看指定的outputDir或默认的test-results目录,确认是否存在.webm格式的视频文件。若目录中有视频但钩子未检测到,需检查钩子逻辑是否有误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:22:16