文档
Storybook 文档

可视化测试

可视化测试可以捕获 UI 外观中的错误。它们通过对每个故事进行屏幕截图并将其与先前版本进行比较来识别视觉更改。这非常适合验证布局、颜色、大小、对比度以及 UI 的任何其他视觉方面。

Storybook 原生支持跨浏览器可视化测试,使用 Chromatic,这是一项由 Storybook 团队提供的云服务。启用可视化测试后,每个故事都会自动转换为测试。这使您能够在 Storybook 中直接获得有关 UI 错误的即时反馈。

安装插件

通过安装 @chromatic-com/storybook(Storybook 维护人员提供的官方插件)将可视化测试添加到您的项目中。

npx storybook@latest add @chromatic-com/storybook

需要 Storybook 7.6 或更高版本。请阅读 迁移指南 以升级您的项目。

启用可视化测试

启动 Storybook 后,您将看到一个用于可视化测试的新插件面板,您可以在其中运行测试并查看结果。

Visual Tests addon enabled

要启用可视化测试,请注册 Chromatic 并创建一个项目。这将使您可以访问一系列云浏览器。

Visual Tests addon project selection

从您的项目列表中选择一个项目以完成设置。如果您是第一次设置插件,则会自动为您添加配置文件和必要的项目标识符。

配置

插件默认包含涵盖大多数用例的配置选项。您还可以通过 ./chromatic.config.json 文件微调插件配置以匹配项目的要求。以下是可用选项以及如何使用它们的示例。

选项描述
projectId自动配置。设置项目标识符的值
"projectId": "Project:64cbcde96f99841e8b007d75"
buildScriptName可选。定义自定义 Storybook 构建脚本
"buildScriptName": "deploy-storybook"
debug可选。将详细的调试信息输出到控制台。
"debug": true
zip可选。对于大型项目推荐使用。配置插件将您的 Storybook 作为 zip 文件部署到 Chromatic。
"zip": true
// ./chromatic.config.json
{
  "buildScriptName": "deploy-storybook",
  "debug": true,
  "projectId": "Project:64cbcde96f99841e8b007d75",
  "zip": true
}

运行可视化测试

点击 Storybook 侧边栏中的 ▶️ 播放按钮以运行可视化测试。这会将您的故事发送到云端以进行快照并检测视觉更改。

Storybook running visual tests with the addon

审查更改

如果您的故事中存在视觉更改,则侧边栏中会将其🟡突出显示。点击故事并转到可视化测试插件面板以查看哪些像素发生了变化。

如果更改是故意的,则✅在本地将其接受为基线。如果更改并非有意,请修复故事并使用 ▶️ 播放按钮重新运行测试。

Confirm UI changes in Storybook

在插件中完成将更改接受为基线后,您就可以将代码推送到远程存储库。这会将基线同步到云端,以便任何检出您的分支的人员都可以访问。

Accept UI changes in Storybook

使用 CI 自动化

该插件旨在与 CI 结合使用。我们建议使用该插件检查开发过程中的更改,然后在准备合并时在 CI 中运行可视化测试。

您在插件中接受为基线的更改将自动在 CI 中接受为基线,因此您无需重复审查。

  1. 向您的 CI 工作流程添加一个步骤以运行 Chromatic。

PR 检查

一旦您在 CI 中成功设置了 Chromatic,您的拉取/合并请求将被标记为 UI 测试检查。该标记会通知您测试错误或需要团队验证的 UI 更改。在您的 Git 提供程序中将此检查设置为必选,以防止意外的 UI 错误被合并。

PR badge for visual tests


视觉测试和快照测试有什么区别?

快照测试 将每个故事的渲染标记与已知的基线进行比较。这意味着测试比较的是 HTML 块,而不是用户实际看到的。这反过来会导致误报增加,因为代码更改并不总是会产生组件的视觉更改。

视觉测试将每个故事的渲染像素与已知的基线进行比较。因为您正在测试用户实际体验的内容,所以您的测试将更加丰富且易于维护。

了解其他 UI 测试