mcpField
Q
qe-visual-testing-advanced

qe-visual-testing-advanced

github.com/proffesor-for-testing测试与质量51984 次安装今天更新
代码仓库

关于 qe-visual-testing-advanced

qe-visual-testing-advanced 是规划 UI 视觉回归检查的技能,涵盖截图基线、差异比较、动态内容遮罩及多种视口审查,并提供 Playwright 和 AI 比较示例。

主要功能

  1. 01采集截图基线并比较变化
  2. 02遮罩时间戳等动态元素
  3. 03使用像素、结构或 AI 比较
  4. 04检查桌面、平板和手机视口
  5. 05审阅视觉差异并集成到 CI/CD

适用场景

  1. 01发现 CSS 修改后的布局或颜色回归
  2. 02比较不同设备尺寸下的响应式 UI
  3. 03依据截图基线检查组件更新

安装

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

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-visual-testing-advanced

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

详细介绍

高级视觉测试

<default_to_action> 检测视觉回归或验证 UI 时:

  1. 捕获基准截图(首次运行时建立基准)
  2. 将新截图与基准进行比较(逐像素比较或使用 AI)
  3. 遮罩动态内容(时间戳、广告、用户数量)
  4. 在不同设备上测试(桌面、平板、移动设备视口)
  5. 审查并批准有意的更改,发现回归时则测试失败

快速视觉测试步骤:

  • 在主分支上设置基准
  • 将功能分支与基准进行比较
  • 遮罩动态元素(时间戳、头像)
  • 使用 AI 驱动的比较来减少误报
  • 集成到 CI/CD 中,以阻止视觉回归

关键成功因素:

  • 功能测试无法捕捉视觉错误
  • AI 驱动的工具可以减少误报
  • 审查差异,不要仅自动批准 </default_to_action>

快速参考卡

适用场景
  • UI 组件更改
  • CSS/样式修改
  • 响应式设计验证
  • 跨浏览器一致性检查
视觉错误类型
错误类型描述
布局偏移元素位置发生移动
颜色变化非预期的颜色修改
字体渲染排版问题
对齐间距/对齐问题
图像缺失图像路径失效
溢出内容被裁切
比较算法
算法最适合
像素差异要求精确匹配
结构相似度处理抗锯齿
AI 语义比较忽略无关紧要的变化

使用 Playwright 进行视觉回归测试

import { test, expect } from '@playwright/test';

test('homepage visual regression', async ({ page }) => {
  await page.goto('https://example.com');

  // Capture and compare screenshot
  await expect(page).toHaveScreenshot('homepage.png');
  // First run: saves baseline
  // Subsequent runs: compares to baseline
});

test('responsive design', async ({ page }) => {
  // Mobile viewport
  await page.setViewportSize({ width: 375, height: 667 });
  await page.goto('https://example.com');
  await expect(page).toHaveScreenshot('homepage-mobile.png');

  // Tablet viewport
  await page.setViewportSize({ width: 768, height: 1024 });
  await expect(page).toHaveScreenshot('homepage-tablet.png');
});

处理动态内容

test('mask dynamic elements', async ({ page }) => {
  await page.goto('https://example.com');

  await expect(page).toHaveScreenshot({
    mask: [
      page.locator('.timestamp'),     // Dynamic time
      page.locator('.user-count'),    // Live counter
      page.locator('.advertisement'), // Ads
      page.locator('.avatar')         // User avatars
    ]
  });
});

AI 驱动的视觉测试(Percy)

import percySnapshot from '@percy/playwright';

test('AI-powered visual test', async ({ page }) => {
  await page.goto('https://example.com');

  // Percy uses AI to ignore anti-aliasing, minor font differences
  await percySnapshot(page, 'Homepage');
});

test('component visual test', async ({ page }) => {
  await page.goto('https://example.com/components');

  // Snapshot specific component
  const button = page.locator('.primary-button');
  await percySnapshot(page, 'Primary Button', {
    scope: button
  });
});

Playwright 配置

// playwright.config.js
export default {
  expect: {
    toHaveScreenshot: {
      maxDiffPixels: 100,      // Allow 100 pixel difference
      maxDiffPixelRatio: 0.01, // Or 1% of image
      threshold: 0.2,          // Color similarity threshold
      animations: 'disabled',  // Disable animations
      caret: 'hide'            // Hide cursor
    }
  }
};

Agent 驱动的视觉测试

// Comprehensive visual regression
await Task("Visual Regression Suite", {
  baseline: 'main-branch',
  current: 'feature-branch',
  pages: ['homepage', 'product', 'checkout'],
  devices: ['desktop', 'tablet', 'mobile'],
  browsers: ['chrome', 'firefox', 'safari'],
  threshold: 0.01
}, "qe-visual-tester");

// Returns:
// {
//   comparisons: 27,  // 3 pages × 3 devices × 3 browsers
//   differences: 2,
//   report: 'visual-regression-report.html'
// }

Agent 协作提示

记忆命名空间
aqe/visual-testing/
├── baselines/*          - Baseline screenshots
├── comparisons/*        - Diff results
├── components/*         - Component snapshots
└── reports/*            - Visual regression reports
Fleet 协作
const visualFleet = await FleetManager.coordinate({
  strategy: 'visual-testing',
  agents: [
    'qe-visual-tester',   // Screenshot comparison
    'qe-test-executor',   // Cross-browser execution
    'qe-quality-gate'     // Block on visual regressions
  ],
  topology: 'parallel'
});

相关技能


请记住

功能测试无法捕捉视觉错误。 布局偏移、颜色变化、字体渲染、对齐问题——这些对功能测试不可见,但用户看得见。

AI 驱动的工具可以减少误报。 Percy、Applitools 使用 AI 忽略无关紧要的差异(抗锯齿、轻微的字体渲染差异)。

使用 Agents: qe-visual-tester 可自动执行跨浏览器和设备的视觉回归测试,使用 AI 过滤噪声,并生成视觉差异报告。可在用户发现 UI 回归之前将其捕获。

评论

支持 Markdown