Skip to main content

visual-testing-advanced

Advanced visual regression testing with pixel-perfect comparison, AI-powered diff analysis, responsive design validation, and cross-browser visual consistency. Use when detecting UI regressions, validating designs, or ensuring visual consistency.

소스 정보

저장소
proffesor-for-testing/sentinel-api-testing
최근 소스 활동
2025년 12월 8일 14:35
감지된 SKILL.md 언어
영어
스타
48
포크
14

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
visual-testing-advanced
description
Advanced visual regression testing with pixel-perfect comparison, AI-powered diff analysis, responsive design validation, and cross-browser visual consistency. Use when detecting UI regressions, validating designs, or ensuring visual consistency.
category
specialized-testing
priority
high
tokenEstimate
900
agents
["qe-visual-tester","qe-test-executor","qe-quality-gate"]
implementation_status
optimized
optimization_version
1
last_optimized
2025-12-02T00:00:00.000Z
dependencies
[]
quick_reference_card
true
tags
["visual","regression","screenshot","pixel-diff","percy","playwright","responsive"]
# Advanced Visual Testing <default_to_action> When detecting visual regressions or validating UI: 1. CAPTURE baseline screenshots (first run establishes baseline) 2. COMPARE new screenshots against baseline (pixel-by-pixel or AI) 3. MASK dynamic content (timestamps, ads, user counts) 4. TEST across devices (desktop, tablet, mobile viewports) 5. REVIEW and approve intentional changes, fail on regressions **Quick Visual Testing Steps:** - Set up baseline on main branch - Compare feature branch against baseline - Mask dynamic elements (timestamps, avatars) - Use AI-powered comparison to reduce false positives - Integrate in CI/CD to block visual regressions **Critical Success Factors:** - Functional tests don't catch visual bugs - AI-powered tools reduce false positives - Review diffs, don't just auto-approve </default_to_action> ## Quick Reference Card ### When to Use - UI component changes - CSS/styling modifications - Responsive design validation - Cross-browser consistency checks ### Visual Bug Types | Bug Type | Description | |----------|-------------| | Layout shift | Elements moved position | | Color change | Unintended color modification | | Font rendering | Typography issues | | Alignment | Spacing/alignment problems | | Missing images | Broken image paths | | Overflow | Content clipping | ### Comparison Algorithms | Algorithm | Best For | |-----------|----------| | **Pixel diff** | Exact match requirement | | **Structural similarity** | Handle anti-aliasing | | **AI semantic** | Ignore insignificant changes | --- ## Visual Regression with Playwright ```javascript 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'); }); ``` --- ## Handling Dynamic Content ```javascript 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-Powered Visual Testing (Percy) ```javascript 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 Configuration ```javascript // 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-Driven Visual Testing ```typescript // 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 Coordination Hints ### Memory Namespace ``` aqe/visual-testing/ ├── baselines/* - Baseline screenshots ├── comparisons/* - Diff results ├── components/* - Component snapshots └── reports/* - Visual regression reports ``` ### Fleet Coordination ```typescript 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' }); ``` --- ## Related Skills - [accessibility-testing](../accessibility-testing/) - Visual a11y checks - [compatibility-testing](../compatibility-testing/) - Cross-browser visuals - [regression-testing](../regression-testing/) - Regression suite --- ## Remember **Functional tests don't catch visual bugs.** Layout shifts, color changes, font rendering, alignment issues - all invisible to functional tests but visible to users. **AI-powered tools reduce false positives.** Percy, Applitools use AI to ignore insignificant differences (anti-aliasing, minor font rendering). **With Agents:** `qe-visual-tester` automates visual regression across browsers and devices, uses AI to filter noise, and generates visual diff reports. Catches UI regressions before users see them.
GitHub에서 보기