← Back to list

I Built an Agentic Visual Regression System That Replaced a $50k/Year Vendor

Visual regressions are one of the hardest frontend bugs to catch at scale. A single token change can silently shift spacing across dozens…

Victor Tsang · 2026-05-27 06:42 · 6 claps · 3.3 min read
#design-systems #playwright-automation #visual-regression-testing #storybook
Open on Medium ↗
Wiki topics: AGT · AI Agents ML · Machine Learning PRD · Product Design 🌐 · Web Development 🧘 · Spirituality

I Built an Agentic Visual Regression System That Replaced a $50k/Year Vendor

Visual regressions are one of the hardest frontend bugs to catch at scale. A single token change can silently shift spacing across dozens of components while unit tests and type checks still pass.

While working on a large design system, I built a self-hosted visual regression pipeline that replaced a premium SaaS tool (~$50K/year) while maintaining full CI quality coverage — and unlocked something more interesting: agent-driven UI validation workflows.

The Challenge

Our existing visual regression tooling worked well operationally, but the economics stopped scaling with the design system.

As the component library expanded across themes, states, and variants, snapshot volume increased significantly.

The cost model created an unintended organizational bottleneck: onboarding additional product teams meant increasing recurring spend even further.

Visual regression testing became something teams had to budget around instead of a capability the platform could freely provide.

That limited adoption across the organization.

We needed a solution that:

  • Eliminated per-snapshot SaaS pricing
  • Ran entirely within our own CI infrastructure
  • Supported deterministic visual approvals
  • Scaled horizontally across large Storybook environments
  • Integrated directly into GitHub workflows
  • Could be operated autonomously by AI coding agents
  • Could be reused and adopted by additional teams without introducing incremental vendor costs

The goal wasn’t simply to replace a tool, it was to build a visual regression pipeline that could scale across multiple teams while also supporting autonomous development workflows.

What I Built

I designed and implemented a fully self-hosted visual regression system using:

  • Playwright for deterministic screenshot capture and comparison
  • GitHub Actions for orchestration and parallel execution
  • GitHub Pages for lightweight review delivery
  • GitHub-native approval workflows via labels and status checks
  • baseline versioning and artifact-based promotion
  • agent-compatible interfaces for automated validation loops

The core workflow:

Push PR
  → Capture Storybook screenshots in parallel
  → Compare against approved baseline
  → Generate visual diffs
  → Deploy review bundle
  → Approve via GitHub label
  → Promote approved screenshots as new baseline

No external services. No API dependencies. Fully CI-native.

Designing for Agentic Workflows

The biggest shift wasn’t technical.

It was conceptual.

We stopped designing for humans reviewing CI.

We started designing for agents executing changes.

1. Give agents pixels, not pass/fail

“Tests passed” is not useful for UI correctness.

But:

“Your change shifted this button by 2px”

is actionable.

Pixels become the feedback signal.

2. Deterministic exit conditions enable autonomy

The system works because correctness is binary:

0 pixel diffs = success

No ambiguity. No subjective judgment. This determinism is what enables long-running autonomous loops.

3. Scope the feedback loop

Full Storybook runs are too slow for iteration.

So the system supports:

  • full capture (global validation)
  • affected capture (fast local loop)

This makes both CI confidence and agent iteration speed possible.

4. Structure everything for machines

Agents don’t need dashboards.

They need:

  • manifests
  • structured diffs
  • story-level failure lists

Once outputs are structured, automation becomes natural.

5. Labels > UI buttons

Traditional tools require:

  • open dashboard
  • inspect build
  • click approve

Instead, GitHub labels become the control plane — fully scriptable, fully automatable.

6. GitHub-native systems enable autonomy

By staying entirely within GitHub primitives:

  • Actions
  • Artifacts
  • Labels
  • Status checks

agents can operate the full lifecycle:

detect → analyze → decide → fix → approve

No external orchestration layer required.

Stress test: Autonomous Migration (80+ Components)

The system was validated through a proof-of-concept migration across the entire design system:

  • 80+ shared components
  • hundreds of Storybook stories
  • full styling primitive overhaul
  • zero consumer-facing API changes

This replaced a runtime CSS-in-JS system with a build-time atomic CSS architecture.

In practice, even as a proof-of-concept, this level of coverage would reasonably require 6–8 weeks of coordinated frontend and QA effort to execute safely and build confidence in parity across the system.

Instead, the visual regression platform enabled an autonomous execution loop.

I used Claude Code’s /goal mode:

Goal: Fix all visual regressions
Exit condition: 0 pixel diffs

Excution loop:

Capture screenshots
→ Detect visual diffs
→ Diagnose regressions
→ Apply fixes
→ Re-run validation
→ Repeat until clean

The migration completed in roughly 12 hours with zero visual regressions.

Once visual correctness becomes deterministic and machine-readable, it stops being a QA process.

It becomes a closed-loop optimization problem.

Unit tests can’t validate UI structure. Type systems can’t validate layout behavior. But pixel-level comparison can — and once that signal exists, both humans and agents can operate on top of it.

Conclusion

Once visual correctness becomes deterministic and machine-readable, it stops being a QA process and starts becoming a computation problem.

Instead of humans inspecting UI changes after the fact, agents can continuously resolve them inside a closed loop: detect, reason, fix, verify.

In that model, visual regression testing is no longer just a safety net. It becomes infrastructure for autonomous frontend systems — where UI correctness is continuously enforced rather than periodically reviewed.

Unit tests validate logic. Type systems validate contracts. But pixel-level comparison validates reality.

And once “reality” is machine-readable, both humans and agents can build on top of it with far less friction — and far more scale.


메타데이터
post_id
8dad27665a9f
slug
i-built-an-agentic-visual-regression-system-that-replaced-a-50k-year-vendor-8dad27665a9f
url
https://medium.com/@vktrwlt/i-built-an-agentic-visual-regression-system-that-replaced-a-50k-year-vendor-8dad27665a9f
canonical_url
https://medium.com/@vktrwlt/i-built-an-agentic-visual-regression-system-that-replaced-a-50k-year-vendor-8dad27665a9f
author_url
https://medium.com/@vktrwlt
status
ok
fetched_at
2026-06-09 15:37:30