edit | blame | history | raw

7.9.0 QA 测试用例集:容器内 App 手动排序

1. 测试目标

验证用户可以在同一容器内拖动 App 改变显示顺序,并确保顺序在刷新、重启、语言切换、导入导出、恢复、SmartStart 等路径中保持一致,同时不破坏现有跨容器拖动改标签行为。

2. 测试范围

  • 数据模型兼容性。
  • 同容器拖动排序。
  • 旧拖拽行为回归。
  • 多显示模式和标签位置。
  • 导入导出、恢复、重置、SmartStart。
  • macOS 14 兼容性。

3. 测试环境

  • macOS 14 Apple Silicon 真机。
  • 当前开发机最新 macOS。
  • 干净用户数据一份。
  • 旧版 tags.json fixture 一份。
  • 含多标签 App、未分类 App、Apple 内置 App、已卸载 path 的测试数据一份。

4. 自动化用例

ID 优先级 类型 用例 期望结果
DATA-001 P0 自动 tags.jsoncontainerAppOrder 字段时解码 加载成功,默认顺序与旧版本一致
DATA-002 P0 自动 tags.jsoncontainerAppOrder 字段时解码 加载成功,顺序字段保留
DATA-003 P0 自动 导出后再导入含顺序的分类与布局 导入后每个容器顺序一致
DATA-004 P0 自动 CategorySchemeFingerprint 包含顺序字段 只改变顺序也能触发上一方案快照
DATA-005 P0 自动 恢复上一方案 标签、App 归属、容器内顺序都恢复
DATA-006 P0 自动 重置为未分类 清空旧普通标签归属,并按既定策略清理旧容器顺序
DATA-007 P0 自动 SmartStart replace 新方案顺序可预测,不复用旧容器顺序
DATA-008 P1 自动 tag rename/delete/relocalize 顺序 key 正确迁移或清理
DATA-009 P1 自动 卸载 App path 出现在顺序字段 不显示空位,不崩溃,必要时懒清理
DATA-010 P1 自动 新 App 不在顺序字段内 已排序 App 保持,新增 App 追加并按默认名称排序

5. 手工功能用例

ID 优先级 用例 步骤 期望结果
UI-001 P0 同容器拖动到最前 在某容器中把第 3 个 App 拖到第 1 个位置 App 顺序立即改变,不启动 App
UI-002 P0 同容器拖动到中间 把最后一个 App 拖到中间位置 插入位置正确,顺序保存
UI-003 P0 跨行/跨列拖动 在网格容器中跨行拖动 App 目标位置正确,无错位
UI-004 P0 拖回原位 长按拖动后放回原位置 不写入无意义变更,不闪烁
UI-005 P0 松手未移动 长按 App 后直接松手 不启动 App,不改变顺序
UI-006 P0 多标签 App 独立顺序 App 同时在 A/B 容器,重排 A A 顺序改变,B 顺序不变
UI-007 P0 重开 App Grid 排序后关闭再打开 App Grid 顺序保持
UI-008 P0 重启 App 排序后退出并重启 TagLauncher 顺序保持
UI-009 P1 语言切换 排序后切换中英文/日文 顺序保持,显示名变化不影响位置
UI-010 P1 新安装 App 排序后新增一个 App 并刷新 旧顺序保持,新 App 按默认规则追加

6. 旧拖拽行为回归

ID 优先级 用例 步骤 期望结果
DRAG-001 P0 跨容器移动标签 从 A 容器拖 App 到 B 容器 App 获得/移动到 B 标签,旧逻辑保持
DRAG-002 P0 Option 复制标签 按住 Option 从 A 拖到 B App 同时保留 A/B 标签
DRAG-003 P0 拖到空白移除来源标签 从容器拖到空白区域 继续出现现有确认逻辑
DRAG-004 P0 拖到未分类 拖到未分类目标 继续走未分类确认与记忆逻辑
DRAG-005 P0 拖到 Apple 内置组 拖到 Mac 自带 / Apple 内置组 继续被保护,不改变标签
DRAG-006 P1 标签栏拖拽排序 拖动顶部/侧边标签排序 不受 App 排序拖拽影响

7. 显示模式矩阵

ID 优先级 displayMode 验收
MODE-001 P0 flat 顺序读取一致;是否允许拖动按产品最终边界验收
MODE-002 P0 container 可同容器排序
MODE-003 P0 coloredContainer 可同容器排序,颜色填充不遮挡插入提示
MODE-004 P0 gridContainer 可同容器排序,跨行插入正确
MODE-005 P0 coloredGridContainer 可同容器排序,跨行插入正确

8. 标签位置矩阵

ID 优先级 标签位置 验收
NAV-001 P1 左侧 App 排序和标签导航互不冲突
NAV-002 P1 右侧 App 排序和标签导航互不冲突
NAV-003 P1 顶部 App 排序和标签导航互不冲突

9. 尺寸与显示矩阵

ID 优先级 条件 验收
VIEW-001 P1 hide app names 开 拖动排序时不因名称隐藏误触发气泡
VIEW-002 P1 hide app names 关 名称不遮挡插入提示
VIEW-003 P1 icon size 40 小图标可拖动,命中正确
VIEW-004 P1 icon size 64 默认尺寸可拖动
VIEW-005 P1 icon size 80 大图标可拖动,布局不重叠

10. 异常与取消

ID 优先级 用例 期望结果
EDGE-001 P0 拖出窗口后松手 状态清理干净,不残留拖拽影子
EDGE-002 P1 拖动中按 Esc 取消拖动,顺序不变
EDGE-003 P1 拖动中滚动 不出现错位插入;若暂不支持滚动拖拽,边界表现明确
EDGE-004 P1 拖动中切换 Space/窗口 不崩溃,不残留 hover/bubble 状态
EDGE-005 P1 拖动中打开 Quick Search/Settings 拖动状态清理,窗口行为正常

11. 现有 QA 脚本

实现完成后至少运行;本轮 7.9.0 (20260611.2212) 已按下列脚本回归:

cd /Users/ar/Projects/Taglauncher/src
bash Scripts/app_ordering_data_qa.sh
bash Scripts/macos14_availability_typecheck_qa.sh
bash Scripts/macos14_build_metadata_qa.sh
bash Scripts/quick_search_app_name_qa.sh
bash Scripts/quick_search_system_app_qa.sh
bash Scripts/smartstart_catalog_resource_qa.sh
bash Scripts/window_logic_qa.sh

自动化覆盖说明:

  • Scripts/app_ordering_data_qa.sh 覆盖排序字段兼容、JSON roundtrip、分类方案 fingerprint、导入导出、备份恢复、SmartStart 清理、ContentView wiring、AppGrid 同容器 payload 和 AppDragCoordinator 解析。
  • Scripts/window_logic_qa.sh 覆盖 Dock 重开、Quick Search、Settings、文件面板、全屏/Split View、隐藏 Dock 场景下的窗口行为回归。
  • macOS 14 专项脚本覆盖 arm64-apple-macosx14.0 typecheck 和构建 metadata。

12. 发布阻断条件

  • 顺序在刷新、重启、语言切换、导入导出、恢复上一方案任一路径丢失。
  • 同容器排序破坏跨容器移动、Option 复制、拖空白移除、Apple 内置保护。
  • 旧数据无法加载或升级后默认顺序改变。
  • macOS 14 typecheck/build metadata/window logic 任一失败。
  • 手工发现拖拽残影、误启动 App、窗口关闭、UI 重叠或插入位置不可理解。