Record tests visually. Self-heal broken selectors. Export to Playwright or Cypress. All running locally on your Mac.
End-to-end tests are the most valuable tests a team can write and the ones they write least. CSS selectors break on every refactor. Enterprise tools charge $450+/month for self-healing. PiperTest queries Chrome's real accessibility tree, heals broken selectors in 5-15ms with zero external calls, and exports clean code for your CI pipeline. No cloud dependency, no seat-based pricing, no vendor lock-in.
Every major testing tool targets the DOM, which is a build artifact. PiperTest targets the accessibility tree, which represents what users actually see.
PiperTest queries Chrome's native AX tree via CDP's Accessibility.queryAXTree. Not a DOM simulation, not injected JavaScript scanning every element. The actual computed accessibility tree that screen readers consume.
Three healing modes: passive quality improvement upgrades weak selectors silently, AX fuzzy matching resolves breaks in 5-15ms locally, and AI-assisted healing handles the rest. Enterprise-grade healing, zero enterprise pricing.
A React-to-Vue migration doesn't touch the AX tree if the UI looks and behaves the same. CSS refactors, component library swaps, build tool upgrades — none of it breaks AX selectors. Tests break when behavior changes, which is exactly when they should.
Full testing toolkit built on raw CDP. No wrappers, no abstractions, no compromises.
Browse your app normally. Every interaction becomes an AX-enriched test step with element metadata, page context, and a mutation diff showing what changed. No annotation, no code, no switching between panels.
Visible, hidden, text content, URL match, element count, attribute value, and console message. All assertions use polling with configurable timeouts and capture an AX snapshot on failure for debugging.
Three modes for time-dependent verification: always (condition holds for a duration), eventually (condition becomes true within a deadline), and next (condition holds on the very next check). No brittle waits.
Passive console error, JavaScript exception, and HTTP error checking runs after every test step. Zero configuration. If your app throws a console error during a test, you'll know.
Three coverage dimensions in one weighted report: PiperProbe element coverage (60%), CDP JavaScript coverage (30%), and CSS coverage (10%). Color-coded bar with expandable uncovered elements per page.
One-click deterministic export. AX selectors map to each framework's native format: role:button:Sign In becomes page.getByRole('button', { name: 'Sign In' }) in Playwright. Clean, idiomatic code ready for CI.
Any MCP-capable AI client — Claude Code, Cursor, Windsurf — can create, run, heal, and export tests.
Returns Chrome's real AX tree as structured plain text. Auto-connects to Chrome on first call. The AI reads the page the same way a screen reader does — semantic roles, names, and states, not raw HTML.
Click, fill, select, hover, scroll, and type using AX selectors. Self-healing resolves broken selectors automatically. Returns a structured AX diff showing exactly what changed on the page after the action.
Execute a saved PiperTest session with optional self-healing, health monitoring, temporal assertions, and coverage collection. Returns pass/fail summary with detailed results per step.
Export any PiperTest session to idiomatic Playwright or Cypress code. The AI can generate tests from a browser snapshot, save them, run them, heal failures, and export the final result — all through MCP tools.
| PiperTest | Playwright | Cypress | Testim/mabl | |
|---|---|---|---|---|
| Selector strategy | AX tree native (CDP Accessibility.queryAXTree) | DOM-level ARIA simulation (injected JS) | CSS / jQuery / data attributes | DOM + AI healing layer |
| Self-healing | 3 modes: passive, fuzzy AX, AI-assisted. Local, free | None | cy.prompt() cloud AI (rate-limited) | AI-powered. Paid |
| Test format | JSON (visual UI + MCP + executable) | TypeScript/JavaScript code | TypeScript/JavaScript code | Proprietary visual |
| Test authoring | Visual recorder + MCP + inline edit | Code + codegen + Test Agents (v1.56) | Code + Studio + cy.prompt() | Visual recorder + AI |
| Speed per step | 10-50ms (direct CDP WebSocket) | Fast (bundled browser) | ~23% slower than Playwright | Varies (cloud execution) |
| AI integration | 20 MCP tools. Local, no rate limits | 25 MCP tools (no assertions/healing) | cy.prompt() (cloud, rate-limited) | Built-in (closed) |
| Coverage tracking | PiperProbe elements + JS + CSS, weighted | None built-in | None built-in | Limited |
| Export | Playwright + Cypress code | Native runner | Native runner | Proprietary |
| Browser support | Chrome (CDP) | Chromium, Firefox, WebKit | Chrome, Firefox, Edge | Chrome, Firefox, Edge |
| Multi-tab | Yes (CDP page switching) | Yes | No | Varies |
| Price | Free / $9.99 Pro | Free (Apache 2.0) | Free runner / $67-267+/mo Cloud | $450-500+/month |
| Vendor lock-in | Export anytime. JSON format | Open source, JS ecosystem | Open runner, paid Cloud features | Enterprise contracts |
From the Mac App Store. One app, nothing else to install.
PiperTest auto-connects via Chrome DevTools Protocol. No extensions, no configuration.
Browse your app normally. Every interaction becomes a test step with AX selectors, element metadata, and mutation diffs.
Self-healing fixes broken selectors automatically. Each step executes in 10-50ms. A 20-step test completes in under a second.
One click to Playwright or Cypress code for your CI pipeline. Clean, idiomatic output ready to commit.
Your pages, form data, and test content never leave your Mac.
Self-healing, recording, assertions, export — all included. No enterprise pricing.
Export to Playwright or Cypress anytime. Your tests are JSON, not proprietary format.
For test authoring and iteration, yes. PiperTest's visual recorder, self-healing, and inline editor handle the create-and-debug loop without code. For CI execution, no — PiperTest exports to Playwright (or Cypress) code that runs in your existing pipeline. Think of PiperTest as the authoring tool and Playwright as the CI runtime.
The full testing capability ships in ToolPiper's free tier. 14 browser MCP tools, 6 test tools, visual recording, self-healing, assertions, health monitoring, temporal assertions, coverage, and Playwright/Cypress export are all free. ToolPiper Pro ($9.99/month) adds additional features across other ToolPiper capabilities but is not required for testing.
The default healing mode uses local AX fuzzy matching with zero external calls. When a selector fails, PiperTest takes a fresh AX tree snapshot and searches for nodes matching the original selector's role and approximate name. Candidates are scored by role match, name edit distance, and tree position. High-confidence matches execute automatically in 5-15ms.
Yes, through MCP tools. Any MCP-capable AI client takes a browser snapshot (which returns the AX tree as plain text), reasons about what should be tested, generates PiperTest steps, saves them, runs them, and reports results. This works with Claude Code, Cursor, Windsurf, or any MCP client.
data-testid attributes are stable anchors, but they require developers to add them to every testable element, which means test infrastructure leaks into production code. AX selectors use what's already there: the element's role and accessible name. If your app is accessible, it's testable. If an AX selector doesn't resolve, it often means the element isn't accessible — which is a bug worth knowing about.
Download ToolPiper and record your first self-healing test in 60 seconds.