OPEN SOURCE · MIT

The packages,
all MIT.

MIT-licensed and free to use, including commercially. Runs on your machine and in CI; no account, nothing uploaded.

GitHub repository Docs
MIT
License. Free to use, including commercially.
100%
Runs on your machine and in CI
0
Accounts, API keys or uploads
Packages

One repo.
Independent versions.

Versioned independently; npm with provenance, PyPI, RubyGems.

@testivai/witness
Core SDK
CLI, diff engine, baseline store and the HTML report. npx testivai witness <url> captures a running app with no test suite.
@testivai/witness-playwright
Playwright adapter
One call, witness(page, testInfo, 'name'), in any test; reports through the reporter API.
@testivai/witness-webdriverio
WebdriverIO service
Same baselines, report and approvals, including the style check.
@testivai/witness-selenium
Selenium adapter (JavaScript)
Native WebDriver capture, any test runner. Full-page screenshots on Chrome and Edge.
testivai (PyPI)
Python adapter
playwright-python and Selenium, with a pytest plugin that compares at session end.
testivai (RubyGems)
Ruby adapter
Capybara, RSpec and Cucumber, through the browser the suite already drives. No sidecar, no debug port.
ai.testiv:testivai
Java adapter (experimental)
playwright-java and Selenium, with a JUnit 5 extension. Not on Maven Central yet; build from the repo.
@testivai/mcp
MCP server
Claude Code, Cursor or any MCP client reads your results: verdicts, diff images, explain_snapshot. In Claude Code, each approval asks you to confirm unless you turn the prompt off.
testivai/testivai-oss@v1
GitHub Action — PR reporter
Posts the report on the pull request as a comment and commit status, and uploads the report artifact. Several visual lanes per repo via status-context.
testivai/testivai-oss/approve@v1
GitHub Action — approvals
Comment /testivai approve on the PR and the updated baselines are committed back, write access verified. The reply names the run you approved and links its report when that is on GitHub Pages.
testivai/testivai-oss/publish@v1
GitHub Action — reports on Pages
Publishes each run's report to the repository's GitHub Pages site and links it from the PR comment. Keeps the last runs of every open PR and the default branch's latest; never checks out PR code. A private repository publishes only if you opt in.
Quickstart

First
comparison.

One capture call in the tests you already have.

First run writes baselines to .testivai/baselines/; commit them.

Later runs diff against them: pixels against your tolerances, DOM and style checks for the verdict.

Approve intended changes with npx testivai approve, or from the PR with a /testivai approve comment.

terminal
# 1. Install the Playwright adapter
npm i -D @testivai/witness-playwright
 
# 2. Register the reporter in playwright.config.ts
reporter: [['list'], ['@testivai/witness-playwright/reporter']]
 
# 3. Capture in any test
import { witness } from '@testivai/witness-playwright';
await witness(page, testInfo, 'checkout');
 
# 4. Run tests, then open visual-report/index.html
npx playwright test
 
# Approve an intended change
npx testivai approve "checkout"
Development

Built
in the open.

One repo: SDKs, GitHub Actions, and the E2E suite that gates every release. testivai-example shows a full setup with a live report. Issues and pull requests are welcome.

This site tests itself. Every pull request captures every page and compares it with the approved baselines. Claude reviews the diff through @testivai/mcp; a person approves. An hourly job loads the live pages in Chrome and files an issue if one breaks.