You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AI-native visual regression testing engine. Captures screenshots with Playwright, pre-filters with pixelmatch, and uses LLM vision as the diff engine — Claude locally, Gemini in CI.
[](https://github.com/DojoCodingLabs/dojowatch)
4
7
5
-
**Zero incremental cost.** Uses models you already pay for (Claude Code subscription, Gemini free-tier tokens) and infrastructure already in place (GitHub Actions).
8
+
### Open-source visual regression testing that uses AI to tell you *what* changed, *why*, and *how to fix it* — by [Dojo Coding](https://dojocoding.io)
6
9
7
-
## How it works
10
+
**DojoWatch** is a **Claude Code plugin** and **GitHub Actions CI tool** that catches visual regressions before they reach production. Unlike Percy, Chromatic, or Applitools — it costs nothing. It uses the AI models you already have.
11
+
12
+
---
13
+
14
+
## The Problem
15
+
16
+
Visual regressions reach production because:
17
+
18
+
-**No one tests visually.** Manual QA can't keep up with multiple deploys per day.
19
+
-**Commercial tools are expensive.** Percy starts at $500/mo. Chromatic at $149/mo. Applitools at $1K+/mo. For an early-stage team, that's unjustifiable.
20
+
-**Pixel-diff tools generate noise, not insight.** A red overlay of 10,000 changed pixels doesn't tell you *what broke* or *how to fix it*.
21
+
22
+
## The Insight
23
+
24
+
Claude Code is already multimodal. It can look at a screenshot *and* read your source code in the same context. It doesn't just see that pixels changed — it can trace the regression to the exact CSS property on the exact line.
25
+
26
+
No API keys. No per-screenshot pricing. No context-switching to a separate dashboard.
27
+
28
+
## The Solution
29
+
30
+
DojoWatch captures screenshots with Playwright, pre-filters with pixelmatch (to avoid wasting tokens on unchanged pages), and uses AI vision to classify every visual change:
31
+
32
+
-**REGRESSION** — an unintended visual change (bug). Severity: high / medium / low.
33
+
-**INTENTIONAL** — a deliberate change (new feature, design update).
|**FULL_ANALYSIS**| 500+ pixels or spatially clustered | Full analysis |~2,400 |
75
+
76
+
**The guarantee:** Only byte-identical screenshots are skipped. Every other screenshot — even a single changed pixel — is analyzed. The tiers control *depth*, not *whether analysis occurs*.
77
+
78
+
---
79
+
80
+
## Installation
81
+
82
+
### Claude Code Plugin (recommended)
21
83
22
84
```bash
23
-
# From GitHub (recommended)
24
-
claude plugin add --git https://github.com/DojoCodingLabs/dojowatch
85
+
claude plugin marketplace add DojoCodingLabs/dojowatch
86
+
claude plugin install dojowatch@dojowatch
87
+
```
25
88
26
-
# Local development
27
-
claude --plugin-dir /path/to/dojowatch
89
+
That's it. Run `/vr-init` in any project to get started.
90
+
91
+
> **Requires:**[Claude Code](https://code.claude.com) with plugin support.
92
+
> Scripts use [Playwright](https://playwright.dev) — install browsers with `npx playwright install chromium`.
93
+
94
+
### Updating
95
+
96
+
```bash
97
+
claude plugin marketplace update DojoCodingLabs/dojowatch
98
+
claude plugin update dojowatch@dojowatch
28
99
```
29
100
30
-
### For CI
101
+
Restart your Claude Code session after updating.
31
102
32
-
Clone or add as a git submodule. The CI scripts run standalone via `npx tsx`.
103
+
### For CI Only
33
104
34
-
## Quick start
105
+
Clone or add as a git submodule. CI scripts run standalone via `npx tsx`.
35
106
36
-
1.**Initialize** — run `/vr-init` in Claude Code. This detects your framework, discovers routes, and creates initial baselines.
107
+
---
37
108
38
-
2.**Make changes** — edit your UI code as usual.
109
+
## Quick Start
39
110
40
-
3.**Check for regressions** — run `/vr-check`. Claude captures fresh screenshots, compares them against baselines, and reports any visual differences with classification and severity.
Add `data-vr-mask` to elements that change between captures (timestamps, user avatars, live counters):
189
+
Add `data-vr-mask` to elements that change between captures — timestamps, avatars, live counters:
112
190
113
191
```html
114
192
<span data-vr-mask>March 27, 2026</span>
115
193
```
116
194
117
-
## Architecture
195
+
DojoWatch replaces masked elements with solid placeholders before capture, preventing false positives.
196
+
197
+
### Storybook Support
198
+
199
+
Point `storybookUrl` at your Storybook instance. DojoWatch crawls `stories.json`, captures every story in isolation, and provides component-level regression detection — equivalent to Chromatic's core offering.
200
+
201
+
### Supabase Integration (Optional)
202
+
203
+
Add `supabase` to your config to enable shared baselines and historical tracking:
204
+
205
+
```json
206
+
{
207
+
"supabase": {
208
+
"url": "https://your-project.supabase.co",
209
+
"anonKey": "your-anon-key",
210
+
"serviceKeyEnv": "SUPABASE_SERVICE_KEY"
211
+
}
212
+
}
213
+
```
214
+
215
+
This eliminates git bloat from baseline PNGs, enables shared baselines across your team, and stores run history with diff images accessible via signed URLs.
| **Storybook** | Full crawl | Full crawl | Full crawl | Full crawl |
273
+
| **Open source** | MIT | No | No | No |
274
+
275
+
---
138
276
139
277
## Contributing
140
278
279
+
DojoWatch is open source and contributions are welcome:
280
+
281
+
- **Better classification prompts** — improve the AI analysis accuracy
282
+
- **Framework detection** — add route discovery for more frameworks
283
+
- **Performance** — optimize capture parallelization and prefilter speed
284
+
- **New viewports** — add common device presets
285
+
- **Bug fixes** — found an issue? Open a PR
286
+
141
287
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
142
288
289
+
---
290
+
291
+
## Built by Dojo Coding
292
+
293
+
[Dojo Coding](https://dojocoding.io) is a LATAM-first tech ecosystem building tools for developers. DojoWatch was built to serve our multi-SBU product portfolio — then open-sourced because every team deserves visual regression testing, not just those with enterprise budgets.
294
+
295
+
---
296
+
143
297
## License
144
298
145
-
MIT — see [LICENSE](LICENSE).
299
+
MIT License — free to use, modify, and distribute.
300
+
301
+
---
302
+
303
+
<p align="center">
304
+
<strong>Stop shipping visual regressions. Start shipping with confidence.</strong><br>
305
+
<em>Free. Open source. By <a href="https://dojocoding.io">Dojo Coding</a>.</em>
0 commit comments