SuperAPI AI 工具集

run-desktop

测试与质量

查看项目

更新于 10-16 01:15

技能介绍

用途:为 Argo 桌面端(apps/desktop)提供无显示环境下启动、截图和检查运行中 Electron 应用的路径,基于 Playwright 的 _electron 启动器,与 e2e/*.spec.ts 使用同一测试工具。所有命令在 apps/desktop 下运行。

前置条件:在仓库根目录或 apps/desktop 执行 bun install。驱动会导入 @playwright/test 并启动仓库本地 Electron,未安装过的代码树缺少这两者。冷树首次安装较慢且需要可用的原生工具链:会编译 node-pty 并下载 Electron 二进制。应用为 ESM,driver.mjs 在 node 下运行。

先构建:驱动启动的是 out/main/index.js,因此每次运行前必须构建;out/ 不被监听,修改 src/ 后需重新构建:bun run build(electron-vite build → out/{main,preload,renderer})。

智能体路径:node .claude/skills/run-desktop/driver.mjs --out /tmp/cockpit.png --eval "document.querySelector('[data-testid=cockpit-root] a')?.innerText"。它会启动已构建应用、等待 [data-testid="cockpit-root"]、写入截图并打印窗口标题。选项:--out <path> 截图路径,相对当前目录解析,默认 run-desktop.png;--transcripts <dir> 设置 ARGO_TRANSCRIPT_ROOT,使观察器读取 fixture 世界(<dir>/<project>/<session>.jsonl)而非 ~/.claude/projects,否则干净机器会停在空轨道的引导页;--user-data <dir> 对应 Electron 的 --user-data-dir,Argo 的 Project 注册表存于此,写入 projects.json 可越过引导页并注册 Project,e2e/rail.spec.ts 的 buildWorld() 是两个标志的示例;--testid <id> 打印该 testid 元素的内文本;--eval <expr> 在渲染器求值 JS 表达式并打印 JSON;--wait <testid> 截图前等待的元素,默认 cockpit-root。读完 PNG 确认应用已渲染,退出码为绿并不证明窗口已渲染;未传 --transcripts/--user-data 时结果是引导空状态。

人工路径:bun run dev 启动 electron-vite dev,渲染器在 http://localhost:5173 并打开窗口,适合热重载交互,不面向无头智能体;同样支持 ARGO_TRANSCRIPT_ROOT=<dir> bun run dev。没有 demo 种子开关,轨道显示实际观察到的内容。

注意:从 apps/desktop 运行驱动;Playwright 关闭时会输出无害的清理噪声(kill EPERM、<will force kill>),以打印标题和 PNG 判断成功;过期的 out/ 会渲染旧代码。排错:找不到 out/main/index.js 则运行 bun run build;cockpit-root 等待超时说明渲染器挂载失败,可改传已知存在的 --wait 或运行 bun run dev 查看控制台;驱动导入错误(找不到 @playwright/test)先执行 bun install。