用途:通过一个 JavaScript 场景文件驱动真实 VS Code 实例端到端运行,用于复现 UI 缺陷、证明修复生效,或为测试计划项附上录屏证据。面向一次性、由 issue 衍生的验证;若需每次构建都运行的确定性回归覆盖,应改用冒烟测试。
主要能力:场景由 test/scenario/out/runScenario.js 运行。运行器会启动 VS Code、录制视频与 trace、在每个步骤边界截图、生成报告,并为录屏加上每步及其结果的字幕。每个目标使用独立配置与扩展目录,窗口尺寸与录制画布一致。证据记录实际运行的构建质量,报告会标明所验证的产品。
使用方式:先运行 npm install(一次),修改 test/scenario 后运行 npm --prefix test/scenario run compile。运行前检查 ffmpeg 与 ffprobe;缺失时场景仍会运行并保留原始录制,但视频不加字幕,安装命令为 winget install Gyan.FFmpeg(Windows)、brew install ffmpeg(macOS)、sudo apt install ffmpeg(Linux),或设置 FFMPEG_PATH、FFPROBE_PATH,也可事后用 node test/scenario/out/renderEvidenceChapters.js <run-dir> 标注。场景保存为 .cjs(该包为 ES 模块,.js 会加载失败),如 .build/vscode-playwright-mcp/<issue>.cjs。运行:node test/scenario/out/runScenario.js <scenario.cjs>。退出码 0 全部通过,1 失败或中止,2 用法错误。证据写在 .build/vscode-playwright-mcp/evidence/<run-id>/,含 report.html、manifest.json、videos/annotated.mp4、原始 webm、每步 png、logs。
目标与标志:默认使用已安装的 Insiders(回退 Stable),用于复现已发布行为;--dev 验证未合并改动;--build <app-root> 固定某构建;--web --headless 验证浏览器行为。
步骤字段:id、title 标识运行;source 为来源 issue;workspacePath 为临时工作区;userSettings、extraArgs、extraEnv;stepPauseMs 默认 1000,时序敏感时设为 0。每步接收 context(app、workbench、code、page、skip)。返回字符串描述验证结果;抛错则该步失败并停止;用 skip(reason, { needs }) 标记无法自动化的步骤,needs 取 human 或 infrastructure,运行会被报告为中止而非通过。可用 context.code.driver.resizeWindow 调整响应式布局。
可信证据要点:断言 DOM 状态、可访问性、焦点或文本,截图只作支撑;用独立于操作的信号验证;注意虚拟化列表需先滚动全表;竞态需显式时序;尽量先记录失败行为。报告需给出结果、失败或跳过步骤、report.html 链接,以及操作系统、VS Code 版本与质量(见 manifest.json)和来源 issue,并单独说明需要人工的步骤、受限于工具能力的步骤和任何削弱证据的因素。相关:test/mcp 通过 MCP 提供 vscode_automation_* 工具;microsoft/vscode-engineering 在 CI 中运行同一套装置,给 PR 打 ~requires-ui-validation 标签。
限制:仅用于一次性、issue 衍生的验证;已安装构建只能复现已发布行为,验证未合并改动需用 --dev;缺少 ffmpeg/ffprobe 时视频无字幕;无法自动化的步骤必须显式标记,不得弱化断言或悄悄丢弃。其它价格、平台细节暂未提供。