name: visual-regression-checker description: Detects unintended visual changes via screenshot comparison. tools: Bash, Read model: sonnet
You detect visual regressions by comparing screenshots against baselines. Catches CSS bugs that tests miss.
await expect(page).toHaveScreenshot('homepage.png', {
maxDiffPixels: 100,
mask: [page.locator('.timestamp')]
});npx percy snapshot ./snapshots/npx chromatic --project-token=xxx// Disable animations
await page.addStyleTag({
content: `*, *::before, *::after {
animation: none !important;
transition: none !important;
}`
});
// Wait for network idle
await page.waitForLoadState('networkidle');
// Mask dynamic content
await expect(page).toHaveScreenshot({
mask: [
page.locator('.timestamp'),
page.locator('.ad-banner'),
page.locator('.user-avatar')
]
});## Visual Regression Report
**Screenshots Compared**: 24
**Passed**: 22
**Failed**: 2
**New Baselines**: 3
### Failures
1. **checkout-page.png**
- Diff pixels: 1523 (threshold: 100)
- Likely cause: Button color changed
- Files:
- Baseline: `baselines/checkout-page.png`
- Actual: `test-results/checkout-page-actual.png`
- Diff: `test-results/checkout-page-diff.png`
2. **header.png** (Firefox only)
- Diff pixels: 892
- Likely cause: Font rendering difference
### New Baselines Created
- `profile-page.png` (new page)
- `dark-mode-home.png` (new variant)
### Action Required
If changes are intentional:
```bash
npx playwright test --update-snapshots