SuperAPI AI 工具集

terminal-capture

测试与质量

查看项目

更新于 10-16 09:53

技能介绍

用途:terminal-capture 用于自动化终端 UI 截图测试,驱动 CLI 命令交互并生成截图,适用于审查会影响 CLI 输出的 PR,以及测试斜杠命令(如 /about、/context、/auth 等)等场景。

架构与核心文件:通过 node-pty 伪终端产生 ANSI 字节流,交给 xterm.js(Playwright 无头浏览器)渲染,再截图。核心文件位于 integration-tests/terminal-capture/ 下,包括 terminal-capture.ts(底层 PTY、xterm.js 与 Playwright 引擎)、scenario-runner.ts(场景执行器,处理配置、交互与截图)、run.ts(批量场景 CLI 入口)以及 scenarios/*.ts 场景配置文件。

准备:npm install 安装项目依赖;本地开发需 npx playwright install chromium 安装浏览器。CI/verify 环境设置 QWEN_VERIFY_CHROMIUM=1 时浏览器已安装且 PLAYWRIGHT_BROWSERS_PATH 指向它,不要运行 playwright install,否则会下载约 170 MB 并因系统依赖安装失败。

使用方式:在 scenarios/ 下新建 .ts 配置,导出包含 name、spawn、flow 等字段的 ScenarioConfig;用 npx tsx integration-tests/terminal-capture/run.ts 加单个场景文件或目录运行,截图输出到 scenarios/screenshots/{name}/。flow 步骤支持 type(输入文本,自动输入→截图→回车→稳定后截图)、key(发送按键,支持方向键、Enter、Tab、Escape 等)、streaming(按 delayMs、intervalMs、count 抓取执行过程,可生成 GIF,需 ffmpeg)、capture/captureFull(指定视口或全滚动缓冲截图)。terminal 可配置行列、主题、标题、字号、工作目录等。

限制与注意:若下一非 key 步骤,按键后自动截图;流式捕获在输出连续三个间隔不变时提前停止,重复帧自动跳过;缺少 ffmpeg 时 GIF 生成跳过并给出警告;排查无头浏览器未安装、空白截图、node-pty 模块未编译、输出不稳定等问题时,可按资料中的对应方法处理。