mcpField
V
visual-regression-testing

visual-regression-testing

github.com/aj-geddes测试与质量373721 次安装34 周前更新
代码仓库

关于 visual-regression-testing

面向前端开发者和测试人员的视觉回归测试指南,通过截图对比不同版本的界面,发现非预期的视觉变化。

主要功能

  1. 01截图与基线对比
  2. 02跨视口验证响应式设计
  3. 03测试浏览器差异
  4. 04处理动态内容
  5. 05覆盖组件交互状态

适用场景

  1. 01检测 CSS 回归问题
  2. 02审查拉取请求中的视觉变更
  3. 03验证设计系统组件
  4. 04发现布局偏移与重叠

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill visual-regression-testing

安装后在 Claude Code 中输入/visual-regression-testing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
backstopjs-configuration.md
chromatic-for-storybook.md
cypress-visual-testing.md
handling-dynamic-content.md
percy-visual-testing.md
playwright-visual-testing.md
testing-responsive-components.md
templates/
component-template.tsx

详细介绍

视觉回归测试

目录

概述

视觉回归测试会捕获 UI 组件和页面的截图,然后跨版本进行比较,以检测意外的视觉变化。这种自动化方法能够发现传统功能测试无法检测到的 CSS 缺陷、布局问题和设计回归。

适用场景

  • 检测 CSS 回归缺陷
  • 验证不同视口下的响应式设计
  • 跨不同浏览器进行测试
  • 验证组件的视觉一致性
  • 发现布局偏移和重叠问题
  • 测试主题更改
  • 验证设计系统组件
  • 在 PR 中审查视觉变化

快速开始

最简可用示例:

// tests/visual/homepage.spec.ts
import { test, expect } from "@playwright/test";

test.describe("Homepage Visual Tests", () => {
  test("homepage matches baseline", async ({ page }) => {
    await page.goto("/");

    // Wait for images to load
    await page.waitForLoadState("networkidle");

    // Full page screenshot
    await expect(page).toHaveScreenshot("homepage-full.png", {
      fullPage: true,
      maxDiffPixels: 100, // Allow small differences
    });
  });

  test("responsive design - mobile", async ({ page }) => {
    await page.setViewportSize({ width: 375, height: 667 }); // iPhone SE
    await page.goto("/");

    await expect(page).toHaveScreenshot("homepage-mobile.png");
  });

  test("responsive design - tablet", async ({ page }) => {
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
Playwright Visual TestingPlaywright 视觉测试
Percy Visual TestingPercy 视觉测试
Chromatic for StorybookStorybook 的 Chromatic
Cypress Visual TestingCypress 视觉测试
BackstopJS ConfigurationBackstopJS 配置
Handling Dynamic Content处理动态内容
Testing Responsive Components测试响应式组件

最佳实践

✅ 应该做
  • 隐藏或模拟动态内容(时间戳、广告)
  • 在多个视口下进行测试
  • 等待动画结束并确保图片加载完成
  • 使用一致的视口尺寸
  • 截图时禁用动画
  • 测试交互状态(悬停、焦点)
  • 批准前仔细审查差异
  • 在版本控制中存储基准图
❌ 不应该做
  • 测试内容持续变化的页面
  • 忽略合理的细微差异
  • 跳过响应式测试
  • 设计更改后忘记更新基准图
  • 测试包含随机数据的页面
  • 使用过于严格的阈值(0% 差异)
  • 跳过浏览器和设备差异测试
  • 提交未经批准的差异

评论

支持 Markdown