用途:检测 UI 组件与页面的意外视觉变化,防止视觉缺陷被合并到生产环境。方法为截取已知良好状态的基线截图,代码变更后重新截图并逐像素对比,标记差异供人工审查。框架采用 Playwright + jest-image-snapshot,方法参考 Ant Design 的视觉回归测试实践。
主要能力:基线截图管理(自动捕获、版本控制存储、支持多视口与主题、有意变更时更新);视觉对比测试(tests/shared/imageTest.tsx 实现,可配置阈值,如 threshold: 0.1 表示 0.1% 像素差异容忍);CI/CD 集成(.github/workflows/visual-regression-pr.yml 在 PR 运行,visual-regression-baseline.yml 在主分支更新基线,visual-regression-report.yml 生成并上传差异报告);差异截图生成、产物上传与 PR 评论预览。
使用方式:常用命令包括 npm run visual:baseline、npm run visual:test、npm run visual:report、npm run visual:update-baseline。CI 中安装 Playwright 浏览器(npx playwright install --with-deps chromium)、启动开发服务器并等待就绪后运行测试,失败时上传 image_snapshots/diff/ 产物并生成报告。
适用场景:组件库开发、PR 视觉审查、响应式断点与明暗主题验证、多浏览器(Chromium/Firefox/WebKit)测试。
限制与注意事项:跨操作系统字体渲染、抗锯齿、动画时序、浏览器版本差异易造成误报,建议在 CI 或 Docker 中生成基线、冻结动画、统一浏览器版本并适当调整阈值;基线更新需人工确认是否为有意变更。具体收费、平台支持与效果数据暂未提供。