用途:Storybook 快照是视觉回归测试的基线图片。当组件样式、布局或结构有意变更,或新增带 story 的 UI 组件、设计系统更新影响组件外观时,需要更新快照以反映新的预期外观。若未有意改动 UI、差异显示的是 bug 或回归、或不清楚外观为何变化,则不应更新快照。
使用方式:先运行 pnpm test:storybook 查看失败项,失败会生成 diff 图片,保存在 packages/keychain/image_snapshots/diff_output/,每张图左侧为预期基线、中间为高亮差异、右侧为当前实际,确认变更为有意后再继续。执行 pnpm test:storybook:update 可基于当前组件渲染重新生成全部快照图片。随后用 git status packages//image_snapshots/ 查看变更文件,用 ls packages/keychain/image_snapshots/.png 查看具体图片,再通过 git add packages/*/image_snapshots/ 和 git commit -m "chore: update storybook snapshots" 提交。
常见场景:新增组件时创建组件、在 packages/keychain/src/components/ 添加 story、运行 pnpm test:storybook:update 生成初始快照并提交;设计系统或主题更新影响多个组件时,可一次性运行更新,用 git diff --stat packages/*/image_snapshots/ 审查,并以描述性信息提交。CI 工作流(test.yml)在 PR 分支且仅存在视觉差异失败时,可自动更新快照并创建 chore: update storybook snapshots 提交。
限制与排错:测试超时需确保 Storybook 能启动,可 pkill -f storybook 结束已有进程、用 lsof -i :6006 检查端口、先手动运行 pnpm storybook;本地与 CI 快照不一致时,应确保 Node 版本一致(20.x),字体渲染可能因平台而异,CI 使用特定 Docker 镜像保证一致性;依赖缺失可运行 pnpm clean && pnpm i && pnpm build:deps。另有辅助脚本 ./scripts/update-storybook-snapshot.sh。建议逐张审查 diff、单独提交快照更新、使用描述性提交信息、不要提交 diff 图片(已被 gitignore 忽略),本地通过而 CI 失败时应排查差异原因。