About

Why TestivAI
exists.

Visual bugs got past test suites that passed. TestivAI is the tool I wanted for catching them.

The problem Who builds it
The problem

Where visual
testing goes wrong.

Three problems kept coming up.

1. Green CI, broken layout: unit and integration tests pass while a layout breaks, because they do not look at the page.

2. Noisy screenshot diffs: a timestamp or a font-rendering difference fails a comparison, and each one needs a person to look at it.

3. CI time: visual tests add browser time to every build, so they have to fit the pipeline you already run.

The approach: save the DOM and computed styles with every screenshot. A diff is read as a kind of change, not a count of pixels. A timestamp is one ignoreSelectors entry, not 100 reviews.

example-bug.log (illustrative)
Bug: checkout button hidden on mobile
Cause: a CSS change in a pull request
 
// Unit tests: passing
// Integration tests: passing
// Visual tests: not set up
// The pull request's CI was green
 
Fix: one line of CSS
Found by: a user, not a test
A mobile screenshot test would have shown it
Who builds it

One developer.

I'm Budi Sugianto. I build and maintain TestivAI.

The visual testing tools I used raised too many false positives and said too little about what changed. A timestamp could fail dozens of comparisons.

TestivAI saves the DOM and, on most adapters, computed styles with each screenshot, and attributes each changed region to an element. It labels likely render noise instead of hiding it, and lets you ignore dynamic content by selector.

It is free and open source. If you try it, tell me what works for your team and what does not.

Budi Sugianto on LinkedIn → TestivAI on LinkedIn →

principles.md
✓ Fits into the tests you already have
✓ Runs on your machine and in CI
✓ Noise is labeled, never hidden
✓ AI is optional and never decides what changed
✓ Every exclusion and auto-pass shows in the report
✓ Says what it does and does not do
Status

What works
today.

status.md
✓ Pixel, DOM and computed-style comparison, with element attribution
✓ Captures that wait for the page to settle, in every language
✓ Adapters for Playwright (TS/JS, Python), WebdriverIO, Selenium (JS / Python) and Ruby (Capybara / RSpec)
✓ Java, and a CLI sidecar for Cypress, Puppeteer and Robot Framework: experimental
✓ No test suite: npx testivai witness <url> finds and captures your pages
✓ Mobile web through Playwright device emulation
✓ Self-contained HTML report with diff images
✓ GitHub Action: report on the pull request, approve with a comment
✓ Sharded CI: capture on many machines, compare once
✓ @testivai/mcp for AI-agent review; approvals from Claude Code ask you to confirm
✓ Chromium, Firefox and WebKit via the Playwright adapters
✓ Free to use, including commercially
Feedback

Try it, and say
what is missing.

Issues and feedback on GitHub.

GitHub repository → Email