Tintype
The bugs tests don't catch
Change one token in a design system and dozens of components can shift. Unit tests check that code behaves, not that it still looks right, so a padding change, a broken font or a colour that's slightly off sails straight through review and into every product that uses the system.
Hosted visual testing services solve this well, but they charge per screenshot and need your components sent to someone else's servers. For a large design system, or a company that can't send unreleased work to a third party, neither is a good fit. And open-source alternatives tend to fall at the first hurdle: screenshots that differ slightly from run to run, so every build cries wolf.
What changes with Tintype
Every visual change is reviewed
Change a component, and Tintype shows exactly which stories changed, side by side with a highlighted diff. Changes are accepted or denied in a web review interface, and the result is reported on the pull request as a GitHub check, so nothing merges unreviewed.
No false alarms
Visual testing is only useful if an unchanged component produces an identical screenshot every single time. Tintype captures in a pinned browser environment, freezes time and randomness, and settles animations and fonts before each shot. On a test Storybook built to trip it up, with web fonts, animations, random values and right-to-left text, every comparable screenshot was byte-identical across 20 runs, in Chromium, Firefox and WebKit.
Fast enough for every pull request
A design system with 320 stories, captured at two screen sizes in two browsers, is 1,280 screenshots. On a single laptop, Tintype captures and compares all of them in about 80 seconds, and on AWS the capture workers scale out with the queue.
Your AI agent can review it too
A built-in MCP server lets Claude Code, Cursor and other AI assistants look at builds, view the before, after and diff images, and accept changes with the same permissions as the person using them. CI jobs can't approve their own changes.
It runs on your infrastructure
Tintype is MIT-licensed and self-hosted, with Docker images and Terraform for AWS included. Your components never leave your infrastructure, and there's no per-screenshot bill.
How I built it
- Reproducible pixels. The browser image is pinned, fonts come from a dated snapshot, font smoothing is fixed, and external network requests are blocked or cached. Screenshots taken in CI matched those taken on a laptop byte for byte.
- Measured, not assumed. Determinism and throughput each have their own repeatable benchmark. The first throughput run took over 20 minutes per build and silently dropped results; fixing a race condition and a server bottleneck brought it down to 80 seconds with nothing lost.
- Tested against the real thing. End-to-end tests run the full flow against a real server, capture worker and CLI, and a live GitHub App run found two bugs that mocked tests couldn't.
- Built with AI agents, held to a high bar. I built it in a matter of days, working with AI coding agents throughout, with strict static analysis, test suites across every package, and every claim in the documentation backed by a recorded result.
Where it is now
All planned phases are complete, Storybook 9 and 10 are supported, and the code is on GitHub. The next step is confirming the throughput numbers on AWS.
What this means for your project
If your design system ships changes nobody meant to make, I can help you put visual testing in place, whether that's Tintype on your own infrastructure or a hosted service. And if you're wondering how far AI coding agents can take a team, this is what a few days of carefully directed agentic engineering looks like. Get in touch.