| name | managing-snapshot-tests |
| description | Create and validate component snapshots for UI regression testing.
Use when performing specialized testing.
Trigger with phrases like "update snapshots", "test UI snapshots", or "validate component snapshots".
|
| allowed-tools | Read, Write, Edit, Grep, Glob, Bash(test:snapshot-*) |
| version | 1.21.0 |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| license | MIT |
| tags | ["testing","snapshot-tests"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Snapshot Test Manager
Overview
Create, update, and maintain snapshot tests for UI components and data structures using Jest, Vitest, or pytest snapshot plugins. Manages serialized output snapshots (HTML, JSON, component trees) to detect unexpected changes in rendered output.
Prerequisites
- Jest or Vitest with built-in snapshot support, or
pytest-snapshot/syrupy for Python
- React Testing Library, Vue Test Utils, or equivalent for component rendering
- Snapshot files committed to version control (
.snap files or __snapshots__/ directory)
- Component library with stable prop interfaces
- Code review process that includes snapshot diff review
Instructions
- Identify components and data structures suitable for snapshot testing:
- UI components with complex rendered output (navigation bars, forms, cards).
- API response transformers producing structured JSON.
- Configuration generators outputting YAML or TOML.
- Avoid snapshots for highly dynamic content (timestamps, random IDs).
- Write snapshot tests for each target:
- Render the component with representative props.
- Call
expect(result).toMatchSnapshot() or toMatchInlineSnapshot().
- Create separate snapshots for each meaningful prop combination.
- Use inline snapshots for small outputs (under 20 lines) for better readability.
- Organize snapshot files:
- Group snapshots by component in
__snapshots__/ComponentName.test.ts.snap.
- Name each snapshot descriptively:
"renders with error state", "displays loading skeleton".
- Keep snapshot files in the same directory as the test file.
- Review and update snapshots when intentional changes occur:
- Run
jest --updateSnapshot or vitest --update after verifying changes are correct.
- Review every line of the snapshot diff in pull requests -- do not blindly update.
- Add a comment in the PR explaining why snapshots changed.
- Clean up obsolete snapshots:
- Run
jest --ci to detect obsolete snapshots that no longer match any test.
- Delete orphaned
.snap files for removed components.
- Periodically run snapshot cleanup to prevent stale data.