Max

Browser tests that heal themselves.

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 put self-healing behind a quote-only sales call. 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. PiperTest is part of ToolPiper Max at $49/month.

By , Founder & Lead Engineer— Updated
PiperTest recording a test, running it with self-healing, and exporting to Playwright
Architecture

Why AX-Native Testing?

Every major testing tool targets the DOM, which is a build artifact. PiperTest targets the accessibility tree, which represents what users actually see.

Real Accessibility Tree

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.

Self-Healing Selectors

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.

Framework-Proof

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.

Capabilities

Everything You Need

Full testing toolkit built on raw CDP. No wrappers, no abstractions, no compromises.

Visual Recording

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.

7 Assertion Types

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.

Temporal Assertions

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.

Health Monitors

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.

Coverage Reports

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.

Playwright / Cypress Export

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.

AI Integration

20 MCP Tools for AI Agents

Any MCP-capable AI client (Claude Code, Cursor, Windsurf) can create, run, heal, and export tests.

browser_snapshot

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.

browser_action

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.

test_run

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.

test_export

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 vs The Competition

PiperTestPlaywrightCypressTestim/mabl
Selector strategyAX tree native (CDP Accessibility.queryAXTree)DOM-level ARIA simulation (injected JS)CSS / jQuery / data attributesDOM + AI healing layer
Self-healing3 modes: passive, fuzzy AX, AI-assisted. Local, included in MaxNonecy.prompt() cloud AI (rate-limited)AI-powered. Paid
Test formatJSON (visual UI + MCP + executable)TypeScript/JavaScript codeTypeScript/JavaScript codeProprietary visual
Test authoringVisual recorder + MCP + inline editCode + codegen + Test Agents (v1.56)Code + Studio + cy.prompt()Visual recorder + AI
Speed per step10-50ms (direct CDP WebSocket)Fast (bundled browser)~23% slower than PlaywrightVaries (cloud execution)
AI integration20 MCP tools. Local, no rate limits25 MCP tools (no assertions/healing)cy.prompt() (cloud, rate-limited)Built-in (closed)
Coverage trackingPiperProbe elements + JS + CSS, weightedNone built-inNone built-inLimited
ExportPlaywright + Cypress codeNative runnerNative runnerProprietary
Browser supportChrome (CDP)Chromium, Firefox, WebKitChrome, Firefox, EdgeChrome, Firefox, Edge
Multi-tabYes (CDP page switching)YesNoVaries
Price$49/mo MaxFree (Apache 2.0)Free runner / $67-267/mo CloudQuote only
Vendor lock-inExport anytime. JSON formatOpen source, JS ecosystemOpen runner, paid Cloud featuresEnterprise contracts

How It Works

1

Download ToolPiper

Signed DMG from modelpiper.com/download. One app, nothing else to install.

2

Open Chrome

PiperTest auto-connects via Chrome DevTools Protocol. No extensions, no configuration.

3

Record

Browse your app normally. Every interaction becomes a test step with AX selectors, element metadata, and mutation diffs.

4

Run

Self-healing fixes broken selectors automatically. Each step executes in 10-50ms. A 20-step test completes in under a second.

5

Export

One click to Playwright or Cypress code for your CI pipeline. Clean, idiomatic output ready to commit.

Runs Locally

Your pages, form data, and test content never leave your Mac.

Flat Pricing

Self-healing, recording, assertions, and export are all included in ToolPiper Max at $49/month. No per-seat pricing.

No Lock-in

Export to Playwright or Cypress anytime. Your tests are JSON, not proprietary format.

What PiperTest costs

PiperTest ships inside ToolPiper. The app and its local model runner are free; PiperTest itself is part of the Max plan.

Free

Free

forever

  • Native llama.cpp engine — run any GGUF model
  • Unlimited model downloads, multi-model switching
  • Local OpenAI-compatible API + embeddings
  • MCP server with 358 free tools
  • All speech: transcription, text-to-speech, voice cloning, dictation
  • Chat with bundled model
  • Apple Intelligence on the Neural Engine
  • Full browser automation, vision, and system control
  • Visual pipeline builder
  • Free companion apps (VisionPiper, AudioPiper, MediaPiper)
Try ModelPiper

Pro

$10/mo

  • Everything in Free
  • Local RAG over your files
  • Web scraping and YouTube transcripts
  • Cloud API proxy (bring your own keys)
Get Pro

Studio

$29/mo

  • Everything in Pro
  • Image upscaling (ANE-native)
  • Video upscaling (60fps real-time)
  • Video editing pipeline
  • Pose detection (60fps streaming)
  • Outreach toolkit (queue, posting, Firehose)
Get Studio

Max

$49/mo

  • Everything in Studio
  • Code (agentic AI code editor)
  • PiperTest (self-healing browser tests)
  • API discovery toolkit
  • Priority support
Get Max

Frequently Asked Questions

Does PiperTest replace Playwright?

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.

Is PiperTest free?

The browser automation underneath it is. The 14 browser MCP tools, the CDP connection, and Chrome's real accessibility tree are free on every tier, with no account. PiperTest itself is part of ToolPiper Max ($49/month): the 6 test tools (test_save, test_run, test_list, test_get, test_export, test_delete), sieve self-healing, visual recording, assertions, health monitoring, temporal assertions, coverage, and Playwright/Cypress export.

How does self-healing work without AI?

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.

Can AI write tests for me?

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.

Why AX selectors instead of data-testid?

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.

Stop maintaining broken selectors.

Download ToolPiper and record your first self-healing test in 60 seconds.