Harbor Test Workbench for VS Code
当前切片提供 Test Case Working Copy 的最小原生工作台:
- 空工作区会显示 CLI 连接检查、脚本用例/Flow 拉取和 CLI 路径配置入口,不再留下无法解释的空白 Tree;
- 连接检查读取
harbor help --json 的真实命令目录,能识别版本号相同但缺少 Working Copy 命令的旧构建;
- 在受信任 Workspace 中通过 Quick Pick 显式选择 deployment、Workspace、Project/Test Suite 和一条脚本用例;
- 选择 Workspace 内的父目录和新目录名后,按需执行单条
working-copy pull,不切换 CLI 全局上下文、不拉整棵树;
- 扫描当前 VS Code Workspace 中的
test-case.harbor.json;
- 通过
harbor test-case working-copy inspect 复验本地文件并显示标题、deployment、dirty 状态和固定目录;
- 点击节点打开同目录
script.ts;
- “检查同步状态”通过
sync-status 只读显示 base/local/remote 状态;“同步线上版本”会在本地 clean 时更新当前副本,冲突时让用户选择保留本地合并或备份后覆盖;
- 用户手动点击上传按钮后,先执行零写入
upload-preview;只有预检可上传、脚本已保存且用户在模态框中再次确认,才执行带 --yes 的 CAS Revision 上传;
- 上传成功只更新本地基线并刷新 Tree,不会启动本地或线上运行;截图、Trace、本地运行产物、Storage State 与下载的 Secret 永不上传;
- 用户手动点击本地运行按钮后,才会以已保存的当前脚本启动 CLI Local Runner;运行支持取消,dirty 脚本无需先上传;
- 本地运行状态写入独立 Output,结束后可打开首张截图或
.harbor-local/runs/<run-id> 证据目录;这些结果固定为 localOnly 且没有上传动作;
- 已存在 Working Copy 的 Workspace 会激活原生 Testing API;Test Explorer 的
Run Locally 支持 Stop,失败分类映射到保存的 script.ts 行列,关闭窗口或停用扩展会取消在途 CLI;
- 对 clean、已上传的副本显示独立线上运行按钮;点击后先读取默认 Environment 的远端最终计划,再以模态框确认 deployment、目标、Revision、浏览器、资源和证据策略;
- 只有用户再次点击
Start Online Run 才把完整计划指纹与 --yes 交回 CLI;计划在确认后变化会零入队失败,Extension 不自动等待运行终态;
- Extension Host 只以参数数组启动
harbor CLI,不经过 shell,不读取 CLI Credential 或 Harbor HTTP API。
开发验证:
pnpm --filter harbor-test-workbench test
pnpm --filter harbor-test-workbench typecheck
pnpm --filter harbor-test-workbench build
pnpm --filter harbor-test-workbench package:vsix
Marketplace 本地发布从仓库根目录执行:
pnpm vscode:publish
根目录跟踪的 .env.vscode-marketplace 保存内网共享的 VSCE_PAT。首次使用时,由 Publisher 管理员把占位值替换为
qysharbor 的 Marketplace (Manage) PAT 并提交;所有能读取仓库及 Git 历史的成员都将获得相同发布权限。该文件位于 Extension
打包目录之外,并被 Docker Context 排除,不会进入公开 VSIX。
只验证共享 Token,不递增版本或发布:
pnpm vscode:publish:verify
命令要求发布前工作树干净且当前分支已配置上游。它会先验证 Token 对 qysharbor 的发布权限,再自动递增 patch 版本(例如
0.1.0 → 0.1.1)、构建并上传;上传成功后显式创建 chore(vscode): release v0.1.1 commit 和 v0.1.1 tag,再执行
git push --follow-tags。若 Marketplace 上传失败,package.json 会保留未提交的新版本,应先核对线上版本;若仅 Git push 失败,市场版本已经
生效,只需修复连接后重试 git push --follow-tags,不要再次递增发布。人员离开、仓库权限扩大或疑似泄漏时必须立即在 Azure DevOps 撤销旧 Token、替换文件并提交;
从 Git 删除旧值不能替代服务端撤销。发布工具固定使用 @vscode/vsce@3.9.2;旧版 2.26.0 无法正确验证当前 Azure DevOps PAT,
会把有效 Publisher Owner 误报为 TF400813。
harbor.cli.path 是默认 CLI 路径,留空时使用 PATH 中的 harbor;harbor.cli.deploymentPaths 可以按命名部署覆盖它,其他 API URL、
登录态、Workspace 和 target 仍保留在 Harbor CLI 自己的部署配置中。例如本机开发可配置:
{
"harbor.cli.path": "",
"harbor.cli.deploymentPaths": {
"harbor-local": "/Users/yishuai/qiyuesuo/q-harbor/apps/cli/dist/main.js",
"q-harbor": ""
}
}
空的 deployment 值继承默认 CLI,因此 q-harbor 的其他配置不会改变。本地开发路径使用构建后的 JavaScript 入口,才能同时支持普通命令
和 VS Code Debug;CLI 源码变化后先重新执行 pnpm --filter @harbor/cli build。harbor.localRun.timeoutSeconds 配置显式本地运行的业务超时。
Extension 在未信任 Workspace 中停用,并在拉取、上传和运行命令内再次检查 Trust。
拉取前 Extension 会先检查 harbor help --json 的实际命令目录;选择 deployment 后再执行 harbor --version 和
harbor config deployment check,只接受 >=0.1.0 <0.2.0 的 CLI 及 schema v1/API v1 部署。package:vsix 生成的
dist/harbor-test-workbench.vsix 只包含 manifest、README、图标和 bundle。
当前尚未提供关联 Webview、内置 Trace Viewer、新用例 Candidate 上传或命名 Environment Picker;这些能力按
docs/changes/vscode-test-authoring-workbench/implementation-plan.md 后续切片推进。