What users see
UI exploration, accessibility checks, visual diffs and performance budgets.
Every unit test can pass while the page is broken. These tools drive the real interface, check it against accessibility rules, compare screenshots and hold the line on load time. Rule 18 says to put the work in front of the customer, so it pays to look at it first.
Show tools for
65 tools
End-to-end and UI exploration
Start here
Capybara
Writes browser tests in Ruby as user actions like click and fill in, on Rack or Selenium.
The default system-test layer for Rails gives agent-written features a user-level check in the same language.
Start here
Detox
Gray-box end-to-end tests for React Native that sync with the app to avoid flaky waits.
Flaky waits hurt most when a gate runs on every agent change, and syncing with the app cuts them.
Start here
Espresso
Google's in-process UI test framework for Android that waits for the UI thread to go idle.
Fast, stable instrumented tests run in CI against emulators for every agent-written Android change.
Start here
Flutter integration_test
Runs full-app tests of a Flutter app on a device or emulator, written in Dart.
The built-in path for Flutter UI gates, with widget tests as a cheaper first layer.
The eBay golden_toolkit package was discontinued. Use flutter_test goldens or alchemist.
Start here
Playwright
Drives Chromium, Firefox and WebKit from code, with a test runner, tracing and screenshot assertions.
Most coding agents already use it as their browser layer, and its tests are plain code a machine can rerun.
Screenshot baselines are OS-specific, so run them in a pinned container.
Start here
XCUITest
Apple's built-in UI testing framework for iOS, macOS and other Apple platforms.
The native gate for Swift apps, and it runs in Xcode Cloud or on any macOS CI runner.
-
Android UI/Application Exerciser Monkey
Sends pseudo-random taps and key events to an Android app to look for crashes.
A crash smoke test that needs no setup for any Android build in CI.
-
Appium
Automates native, hybrid and desktop apps through the WebDriver protocol with pluggable drivers.
One protocol spans many platforms, and agent-based test tools often sit on top of it.
-
Cypress
Runs end-to-end and component tests inside the browser, with time-travel debugging.
Teams with a large Cypress suite give agents a base of tests to extend and a CI gate to satisfy.
Cypress Cloud is the paid dashboard.
-
Fastbot
ByteDance's model-based random UI exploration tool for mobile apps.
It reaches deeper screens in agent-built apps than plain monkey testing does.
Activity has slowed.
-
Katalon Studio
An all-in-one test authoring and execution suite for web, mobile, API and desktop.
One commercial tool for teams that want non-coders to author the gates, with AI test generation and self-healing.
-
mabl
A cloud platform for low-code and agent-assisted end-to-end, API and accessibility testing.
One service covers UI, API and accessibility gates for teams with no in-house test engineers.
-
Maestro
Runs mobile and web UI flows written as short YAML files, with no driver setup.
YAML flows are easy for an agent to write and read, and the Maestro MCP lets agents run them directly.
Maestro Cloud and Studio are paid.
-
Magnitude
Open source AI test runner that plans test steps and runs them in a live browser.
Plain-language tests let an agent state the expected behavior and have it checked on every change.
-
Meticulous
Records real user sessions and replays them against each pull request to catch UI regressions.
Tests come from actual customer behavior, so nobody has to guess what users do.
-
Midscene.js
Vision-driven agent SDK that drives and asserts on web, mobile and desktop UIs with multimodal models.
It works from screenshots, so canvas, native and desktop surfaces that accessibility trees miss get tested too.
-
Momentic
AI-assisted test platform where tests are written in plain English and heal themselves.
Plain-language tests keep up with the UI churn that agent-generated changes bring.
-
Patrol
Extends Flutter tests to reach native UI like permission dialogs and notifications.
Flutter features that hit native prompts need it, since plain integration_test cannot touch them.
-
Playwright MCP and Test Agents
Lets an AI agent drive a real browser through accessibility snapshots, with agents that plan, write and repair tests.
An agent can explore the running app, write the test and fix it when the UI shifts.
-
QA Wolf
A managed service that writes, runs and maintains Playwright end-to-end tests for you.
A vendor owns coverage and upkeep, so test growth keeps pace with agent velocity.
-
Selenium
The original browser automation standard, with bindings in most languages.
Large legacy suites already run on it, and agents can keep extending them in the team's own language.
-
Stagehand
An SDK that adds act, observe and extract commands in natural language to Playwright-style browser control.
An agent drives the UI with plain instructions and recovers when the layout changes.
Browserbase cloud browsers are paid.
-
TestCafe
A Node.js end-to-end test framework that needs no WebDriver.
Existing TestCafe suites stay useful as agent gates, though Playwright has taken most new use.
-
Testim
Low-code UI test authoring with AI-based locators that adapt when pages change.
Self-healing locators cut suite upkeep when agents rework markup.
Owned by Tricentis.
-
WebdriverIO
Automates browsers and mobile apps from Node.js using WebDriver and WebDriver BiDi.
One JavaScript suite covers web and native mobile, and an MCP server is available for agents.
Accessibility
Start here
axe-core
The rules engine that finds WCAG violations in rendered HTML.
Most other accessibility gates run on it, so a failing axe check is a dependable build breaker.
Start here
eslint-plugin-jsx-a11y
Lints JSX for accessibility mistakes like missing alt text and bad ARIA roles.
It fires at edit time, so an agent hears about the mistake in seconds and needs no browser.
-
@axe-core/playwright
Runs axe-core inside Playwright tests so accessibility violations fail the test.
The team gets an accessibility gate inside the end-to-end tests that already run on every agent change.
-
Accessibility Insights
Microsoft's accessibility tools, with automated checks, guided manual tests and a CI scanner.
Covers the manual checks automation misses, and its CI action can fail a build on agent-written pages.
-
AccessibilitySnapshot
Snapshots how VoiceOver reads an iOS view and diffs it against a saved reference.
Accessibility labels on agent-written iOS screens become a diff a reviewer can read.
-
Deque axe DevTools
Deque's paid suite for automated and guided accessibility testing on web and mobile.
Adds mobile coverage, issue tracking and reports on top of free axe-core, plus an MCP server for agents.
-
Evinced
A commercial accessibility testing platform with SDKs for CI and developer tools.
Its IDE and agent integrations can flag issues while the code is still being generated.
-
IBM Equal Access Accessibility Checker
IBM's rule engine and browser extension, with Node and Playwright integrations for CI.
A second rule set that can catch issues axe misses, usable as its own build gate.
-
jest-axe / vitest-axe
Test matchers that run axe against rendered components in unit tests.
Accessibility errors surface at component level, long before a browser is involved.
-
Lighthouse CI
Runs Lighthouse on each commit and fails the build when category scores such as accessibility drop.
One threshold covers accessibility, performance and SEO on every pull request.
Updates are infrequent, so check the repo before relying on it.
-
Pa11y
A command-line accessibility runner that tests pages with axe or HTML CodeSniffer.
One CI command exits nonzero on violations, and Pa11y CI scans whole lists of URLs.
Version 10 is current and needs Node 22.13 or newer.
-
Storybook a11y addon
Runs axe on every Storybook story, in the UI and in the test runner.
Every component state gets checked with no extra test files for an agent to write.
Visual regression
Start here
Chromatic
Cloud visual testing from the Storybook team, with a review workflow and turbo snapshots.
Agent-generated UI changes reach merge with a visual baseline a human has approved.
Start here
Roborazzi
Screenshot testing for Android built on Robolectric, with image diffs and optional AI descriptions.
It runs on the JVM and supports Compose, so wiring it into every Android pull request is easy.
Start here
swift-snapshot-testing
Snapshot assertions for Swift values, including images of views and text dumps.
SwiftUI and UIKit output gets pinned, so any agent change to it shows up as a diff.
-
Applitools Eyes
AI-based visual comparison that ignores rendering noise and flags real layout changes.
Fewer false diffs help when agents produce many small UI changes a day.
-
Argos
Open source visual review platform that works with Playwright, Cypress and Storybook.
A self-hostable option beside Percy and Chromatic, with pull request status checks.
-
BackstopJS
Config-driven screenshot comparison across viewports using Puppeteer or Playwright.
A self-hosted visual gate with no vendor attached.
The README says the project needs a new maintainer.
-
Happo
Cross-browser screenshot testing for components and pages, reviewed in pull requests.
A hosted baseline manager with strong Storybook and Cypress support.
-
Loki
Visual regression for Storybook on Chrome, iOS simulators and Android emulators.
React Native stories get covered along with web ones in a single config.
Updates are infrequent.
-
Paparazzi
Renders Android screens on the JVM with no emulator and compares them to golden images.
Fast screenshot tests in plain CI, with no device farm.
-
Percy
BrowserStack's cloud visual review that snapshots pages across browsers and widths.
Cross-browser baseline approval lives inside the pull request.
-
reg-suit
Compares screenshot sets, stores baselines in cloud storage and posts a report to the pull request.
It accepts screenshots from any source and keeps baselines out of the repo.
-
Vitest visual regression
Screenshot assertions in Vitest browser mode for component tests.
Visual checks run fast, inside the same loop as unit tests.
Performance budgets
Start here
k6
Load tests written in JavaScript, with thresholds that fail the run when latency or errors pass a limit.
Thresholds turn performance into a pass or fail check on every deploy candidate.
Start here
pytest-benchmark
Benchmarks Python code inside pytest and compares runs, failing on regressions.
An easy performance gate for a Python suite. Pair it with CodSpeed for steadier numbers.
-
Artillery
Load tests from YAML, with ensure checks that fail CI on latency or error limits.
A k6 alternative that also runs Playwright-based browser load tests.
-
Bencher
Tracks benchmark results over time and fails CI on statistical regressions.
It reads output from many benchmark harnesses and can be self-hosted.
-
Benchmark.js / mitata / tinybench
Micro-benchmark libraries for JavaScript. Vitest bench runs on tinybench.
They produce the numbers that Bencher or CodSpeed then track for regressions.
Benchmark.js itself is dormant.
-
bundlewatch
Checks file sizes against limits and reports the change on each pull request.
A plain size budget with pull request status checks.
-
CodSpeed
Runs benchmarks in CI with stable measurements, flame graphs and pull request comments.
Low-noise numbers and merge protection catch speed regressions that an agent's change introduces.
-
criterion.rs
Statistical benchmarking for Rust that compares each run with a saved baseline.
The common Rust harness, and CodSpeed or Bencher can pick up its results in CI.
-
Gatling
Load testing framework with assertions that fail a run on slow or failing requests.
JVM teams get a performance gate in CI from assertions they write in code.
-
github-action-benchmark
Stores benchmark output from many tools and comments or fails when results regress.
A free way to wire any benchmark harness into pull request checks.
-
hyperfine
Times command-line programs with warmups, statistics and JSON export.
Any CLI gets a benchmark number that a script can compare between commits.
-
iai-callgrind
Counts instructions with Valgrind so benchmarks stay stable on noisy CI machines.
Deterministic counts allow tight regression thresholds on shared runners.
-
Locust
Load tests written as Python code, with exit codes driven by failure thresholds.
Python teams keep load tests in the same language as the app.
-
size-limit
Fails the build when a JavaScript bundle grows past a limit you set.
Heavy dependencies that an agent adds without comment show up as a red build.
-
SpeedCurve
Synthetic and real-user web performance monitoring with budgets and CI integration.
Hosted budget tracking for teams that have outgrown Lighthouse CI.
Now branded SpeedCurve by Embrace.
-
Web Vitals (web-vitals + CrUX)
Measures Core Web Vitals in real browsers for budgets and monitoring.
Real-user numbers check the lab budgets that CI enforces.
Nothing in this section is built for the stacks you picked, and nothing here works with any language. Pick another stack, or .
Gone quiet 4
These tools are archived or shut down, or nobody has released or committed to them in two years. Some still work fine. Read the note before you adopt one.
-
Google Accessibility Test Framework for Android
Checks Android views for accessibility problems and powers the checks inside Espresso.
Turns on accessibility checks in Android UI tests you already have.
Dormant, with no activity since April 2024.
-
gremlins.js
A monkey tester that clicks, types and scrolls at random to see whether your web UI crashes.
Cheap random abuse finds crashes in agent-written screens that no script covered.
Dormant, with no activity since March 2023.
-
Lost Pixel
Open source visual regression for Storybook, Ladle, Histoire and custom pages.
Listed as a caution about tools whose teams move on.
Archived in April 2026 after the team joined Figma and sunset the product.
-
Octomind
Was an AI platform that found, generated and auto-fixed Playwright tests for web apps.
Listed as a warning: a hosted test service can vanish, and exported tests keep working because they are plain Playwright.
Shut down in May 2026. Its tests are plain Playwright code.
Missing a tool that belongs here? Suggest it.
Every tool here was checked against its GitHub repository or its own site on 6 October 2026. Stars and dates come from GitHub on that day.