Agent skill
debug-visual-regression
Analyze visual regression test failures in Vizzly. Use when the user mentions failing visual tests, screenshot differences, visual bugs, diffs, or asks to debug/investigate/analyze visual changes.
Install this agent skill to your Project
npx add-skill https://github.com/vizzly-testing/cli/tree/main/vizzly-plugin/plugins/vizzly/skills/debug-visual-regression
SKILL.md
Debug Visual Regression
When a user mentions failing visual tests or screenshot differences, follow these steps to investigate and help them understand what changed.
Step 1: Read the Comparison Data
Use the Read tool to get .vizzly/report-data.json:
Read .vizzly/report-data.json
If the file is too large, use Bash to extract just the failing comparisons:
cat .vizzly/report-data.json | node -e "
const data = JSON.parse(require('fs').readFileSync('/dev/stdin', 'utf8'));
console.log(JSON.stringify(data.comparisons?.filter(c => c.status === 'failed'), null, 2));
"
Find the failing comparison in the comparisons array. Each comparison has:
name- Screenshot identifierstatus- "failed", "passed", or "new"diffPercentage- How much the screenshot differs (percentage)threshold- The allowed difference thresholdcurrent- Path to current screenshot (relative, like/images/current/name.png)baseline- Path to baseline screenshotdiff- Path to diff image
Step 2: View the Screenshots
Convert the paths from report-data.json to filesystem paths:
/images/current/name.png→.vizzly/current/name.png/images/baselines/name.png→.vizzly/baselines/name.png
Note: If paths don't match this format, use the screenshot name field directly:
- Baseline:
.vizzly/baselines/{name}.png - Current:
.vizzly/current/{name}.png
Use the Read tool to view both images:
- Read the baseline image:
.vizzly/baselines/<name>.png - Read the current image:
.vizzly/current/<name>.png
Skip the diff image (.vizzly/diffs/): The diff images are algorithmically generated overlays that highlight pixel differences. They're useful for humans in the dashboard but not helpful for AI analysis - comparing the actual baseline and current images directly gives you better context about what changed.
Step 3: Analyze the Visual Differences
Compare the two images and describe what you observe:
Look for:
- Layout shifts (elements moved, spacing changed)
- Color changes (backgrounds, text, borders)
- Content changes (text, images, icons)
- Missing or added elements
- Typography changes (font size, weight, family)
- State differences (hover, focus, loading states)
Categorize by diff percentage:
- < 1%: Anti-aliasing, font rendering, subpixel differences - often acceptable
- 1-5%: Layout shifts, padding/margin changes, color variations - investigate
- > 5%: Significant changes - likely needs attention
Step 4: Identify Possible Causes
Based on what you observe, suggest likely causes:
CSS changes:
- Margin/padding adjustments
- Positioning changes
- Color or background modifications
- Font changes
Content changes:
- Dynamic text or data
- Date/time displays
- User-generated content
State issues:
- Screenshot captured during loading
- Hover state captured unintentionally
- Animation frame captured
Environment differences:
- Browser version changed
- Font availability
- Screen resolution
Step 5: Suggest Next Steps
If the change is intentional: Explain that they can accept the new baseline:
- Via the TDD dashboard at
http://localhost:47392 - Via CLI (cloud):
vizzly comparisons -b <build-id>to find ID, thenvizzly approve <id> - Via file copy (local TDD):
cp .vizzly/current/<name>.png .vizzly/baselines/<name>.png
If the change is unintentional: Help them investigate:
- Suggest specific files to check based on what changed
- Recommend git commands to find recent changes:
git diff --name-only HEAD~5 - Point to likely CSS or component files
If it's unclear: Ask clarifying questions:
- "Was this change expected as part of recent work?"
- "Should the button text have changed from X to Y?"
Example Analysis
Based on the comparison data and viewing both screenshots:
**Screenshot:** homepage
**Diff:** 2.3% (threshold: 0.1%)
**What I observed:**
The navigation header has shifted down by approximately 15 pixels. The logo
is now positioned lower, and the nav items are overlapping slightly with
the hero section below.
**Likely cause:**
This appears to be a margin or padding change on the header element. The
layout shift suggests CSS was modified.
**Suggested investigation:**
Check recent changes to header styles:
- `src/components/Header.css` or similar
- Any global layout styles
Run: `git diff HEAD~3 -- "*.css" | grep -A5 -B5 "header\|nav"`
**If intentional:**
Accept the new baseline:
- TDD dashboard at `http://localhost:47392`
- Cloud: `vizzly comparisons -b <build-id>` → `vizzly approve <id>`
- Local TDD: `cp .vizzly/current/homepage.png .vizzly/baselines/homepage.png`
When TDD Server Isn't Running
If .vizzly/report-data.json doesn't exist or is empty, the TDD server may not be running:
- Check if server is running: Look for
.vizzly/server.json - If not running, suggest:
vizzly tdd start - Then run tests to generate screenshots
Tips for Better Analysis
- Always view BOTH baseline and current images before analyzing
- Be specific about what changed (not just "it looks different")
- Quantify changes when possible ("shifted ~15px", "color changed from #fff to #f0f0f0")
- Consider the context of recent code changes
- Ask if you need more information about what the user was working on
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
visual-testing-philosophy
Visual testing best practices and philosophy. Use when the user is adding visual tests, writing test code, deciding where to add screenshots, or asking about screenshot best practices.
vizzly-knowledge
Core knowledge about Vizzly visual testing - file structure, CLI commands, and how it works. Use when working with Vizzly, running visual tests, or helping with screenshot-related tasks.
check-visual-tests
Check the status of Vizzly visual regression tests. Use when the user asks about test status, test results, what's failing, how tests are doing, or wants a summary of visual tests.
obsidian-vault
Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
handoff
Compact the current conversation into a handoff document for another agent to pick up.
Didn't find tool you were looking for?