关于 qe-visual-testing-advanced
qe-visual-testing-advanced 是规划 UI 视觉回归检查的技能,涵盖截图基线、差异比较、动态内容遮罩及多种视口审查,并提供 Playwright 和 AI 比较示例。
主要功能
- 01采集截图基线并比较变化
- 02遮罩时间戳等动态元素
- 03使用像素、结构或 AI 比较
- 04检查桌面、平板和手机视口
- 05审阅视觉差异并集成到 CI/CD
适用场景
- 01发现 CSS 修改后的布局或颜色回归
- 02比较不同设备尺寸下的响应式 UI
- 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 时:
- 捕获基准截图(首次运行时建立基准)
- 将新截图与基准进行比较(逐像素比较或使用 AI)
- 遮罩动态内容(时间戳、广告、用户数量)
- 在不同设备上测试(桌面、平板、移动设备视口)
- 审查并批准有意的更改,发现回归时则测试失败
快速视觉测试步骤:
- 在主分支上设置基准
- 将功能分支与基准进行比较
- 遮罩动态元素(时间戳、头像)
- 使用 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