Skip to content

Issue 29 Validation

clean edited this page Sep 17, 2026 · 2 revisions

Issue #29:验证与界面记录

  • 日期:2026-09-16
  • 设计 · Issue #29 · PR #38
  • 代码:bcc9beb
  • 环境:macOS 15.5 arm64、Node.js 25.5.0、Git 2.43.1、Electron 44.2.0。
  • 数据:隔离 SQLite、127.0.0.1 SSH 测试服务和临时 Git 仓库;未使用真实连接、凭证或用户仓库。

自动验证

命令或场景 结果
npm test -w web 58 项通过;登记及标签去重、关闭保留、草稿隔离、列表更新竞争及状态/Diff 乱序
npm test -w server -- --runInBand repository git.service new-file-deletion ai 63 项通过;跨父仓库并发打开、别名复用、连接隔离、失败不登记、超时及原登记删除后不复活
npm test -w @remote-git/ssh-client 63 项通过、2 项 Windows 专用测试跳过;真实 Git/SSH/SFTP、三类 Diff、暂存/提交隔离、locked、目录替换及权限失败
node --test packages/ssh-client/tests/worktrees.test.cjs 新增 Windows SFTP 路径规范化后复跑,最终 5 项全部通过
npm run desktop:test:worktrees 构建和 Electron 验收通过;独立标签、自动登记、已暂存 Diff、暂存隔离、去重、关闭保留、游离 HEAD、320px 无横向溢出
git diff --check 通过

全量服务端测试另有 4 个原有初始化测试失败:connection.controller、git.controller、file.controller、file.service 的脚手架测试未提供构造函数依赖。已在未修改的 development@f0fddaa 上执行相同 4 个测试并复现。本次相关的 63 项服务端验证通过,这 4 项不标记为通过。

桌面专项命令将构建好的应用复制到临时目录,使用隔离应用数据和真实 loopback SSH,结束时清理。不连接已保存的服务器,也不触发更新安装。

浏览器验收

使用 ego-browser 打开 apps/web/tests/worktrees-fixture.cjs 提供的页面。fixture 运行实际 NestJS、SQLite、SSH 和 Git;静态构建复制到临时目录,避免隐藏 worktree 路径影响 Express 文件限制。

  • 主工作区、功能分支、游离 HEAD 和已删除目录正确显示。
  • 打开功能 worktree 后原标签保留,左侧新增登记;重复打开不增加标签。
  • 同名 tracked.txt 的已暂存与未暂存 Diff、未跟踪文件预览均属于所选目录。
  • 主工作区和功能 worktree 输入不同草稿,切换后各自保留。
  • 失效目录显示“目录不存在或已移走”,保留原标签并支持刷新重试。
  • 只有当前目录时显示“暂无其他关联 worktree”;Enter 打开入口、Escape 收起。
  • 320px 下长路径折行、列表可滚动,页面无横向溢出。

截图

改动前为同一开发基线的隔离 UI fixture;改动后使用实际 Git/SSH fixture,文件数量及临时目录因此不同。截图不含私人服务器或凭证。

改动前

改动前无 Worktree 入口

关联列表与独立标签

关联列表

独立标签与已暂存 Diff

错误与空状态

失效目录错误

没有其他 worktree

窄窗口

Web 窄窗口

Electron 窄窗口

未验证项

Windows、Linux 实机、Windows OpenSSH、外部 SSH 主机与旧版 Git 未验收。Windows 专用既有测试在当前系统跳过,新增路径规范化完成单元验证。本次不涉及 worktree 创建/删除、跨重启标签恢复或安装包发布,不将这些能力列为已交付。

Clone this wiki locally