references/testing-and-release.md
testing-and-release.md
测试与发布
测试矩阵
| 风险 | 主要测试 | | --- | --- | | 资源 ID 与树映射 | 单元 fixture 与不变量 | | 窗口/Finder/应用状态 | 纯 reducer 测试 | | 注册表与命令行为 | 单元/组件测试 | | 查看器分发与状态 | 组件测试 | | 表单与写操作 | schema、API 集成、组件测试 | | 持久运行时 | reducer、fake adapter、生命周期组件测试 | | 键盘与焦点 | 组件测试加浏览器工作流 | | 响应式几何 | 浏览器视口矩阵 | | 视觉层级 | 截图加计算样式 | | iframe/媒体行为 | 真实浏览器资源与生命周期检查 | | 路由、SEO、revalidation | 集成测试、构建、部署后冒烟测试 |
浏览器矩阵
使用符合产品的视口。公开网站常用基线:
390x844 手机
768x1024 平板
1024x768 最小桌面
1440x900 主要桌面
1920x1080 宽屏桌面
后台界面若明确不支持移动端,应验证小屏提示,而不是压缩编辑器。
必测工作流
验证完整工作流,而不是孤立点击:
- 打开文件夹 -> 浏览历史 -> 打开资源 -> 关闭 -> 恢复焦点;
- 启动应用 -> 聚焦其他应用 -> 再聚焦 -> 关闭 -> 重开;
- 直接路由 -> 与窗口界面使用相同领域内容;
- 表单无效 -> 有效 -> pending -> 成功/失败 -> 重试;
- 媒体首次用户操作 -> 播放 -> 下一首 -> 关闭窗口 -> Dock 控制 -> 重开;
- 内容不可用 -> 显示 fallback -> 系统其他部分仍可使用;
- 调整尺寸/旋转方向 -> 活跃应用可恢复。
层叠与重叠
逐项检查:
- 桌面图标保持在窗口之下;
- 活跃窗口位于非活跃窗口之上;
- 嵌入 iframe/video 跟随所属窗口;
- 聚焦其他窗口后可覆盖嵌入媒体;
- 重新聚焦所属窗口后媒体层级恢复;
- 菜单、Dock、tooltip 和对话框使用有意设计的层级;
- 隐藏的持久媒体位于屏幕外且不可交互。
在真实重叠坐标使用 bounding rectangle 和 document.elementFromPoint()。跨 stacking context 时,只比较 z-index 数字不够。
响应式与文本质量
测量:
document.body.scrollWidth与视口宽度;- 固定区域尺寸;
- 触控目标尺寸;
- 文本溢出和最长单词行为;
- 窗口与 Dock 预留空间;
- 安全区行为;
- 独立滚动区域;
- 阅读视图中的代码块、图片和表格。
视觉构图重要时使用截图。Canvas 或 3D 内容使用 canvas/pixel 检查。
第三方运行时检查
对于 iframe、视频、地图、编辑器或外部 SDK:
- 需要懒加载时,确认用户操作前不存在对应脚本;
- 确认只有一份共享运行时,没有重复实例;
- 验证 ready/error/blocked 状态;
- 防御不完整的外部 SDK 对象;
- 验证清理和持久化语义;
- 干净重启服务器后检查 console warning 和 error;
- 区分热更新 hydration 假象与生产行为。
构建与发布
提交或发布前:
- 迭代时运行 targeted tests。
- 运行完整的受影响 regression suite。
- 契约或结构化输出受影响时运行 API/CLI 测试。
- 运行
git diff --check。 - 框架共享缓存目录时,在生产构建前停止冲突的开发服务器。
- 运行类型检查和生产构建。
- 重启开发服务器并执行干净浏览器冒烟测试。
- 只暂存自己负责的文件。
- 仅在已获授权或仓库规则要求时提交并推送。
- 发布规格应检查已部署路由、canonical、sitemap 和关键工作流。
把精确命令结果、视口结果、URL、截图和已知缺口写入 Verification Evidence。