AI software testing: who owns the tests after you cancel?
Every guide on this topic compares monthly prices and feature checklists. None of them ask the question that determines long-term value: when you stop paying, does your test suite survive? Assrt stores each test case as plain markdown, caches it at ~/.assrt/scenarios/, and uses a UUID v4 as the only access token. No key server. No subscription gate. The scenario file is just 0 text file you already own.
The format question every guide skips
When you evaluate AI testing tools, you typically compare: which platforms support my stack, which ones have self-healing, what does the AI actually do? What the comparisons almost never surface is the format question: what does the tool write your tests as, where does it store them, and can you get them out if the vendor folds or raises prices?
Most commercial platforms use a proprietary storage format — a YAML schema, a binary blob, a vendor-specific JSON tree — that is only readable through their API. The API requires a subscription token. Cancel the subscription: the token is revoked and the tests become inaccessible. You may get a CSV of test names. You will not get runnable test logic.
Proprietary storage vs. plain markdown
Tests stored in vendor cloud database Format: proprietary YAML or binary schema Access: subscription API key (revoked on cancel) Portability: export to CSV of names only Cost: $1,000 to $7,500+ per month Cancel subscription → test suite inaccessible
- Tests in vendor database, not your repo
- Proprietary format, no git history
- API key tied to subscription
- Cancel = lose test logic
How Assrt actually stores and runs a test
Test plan to results: the full data path
What the test plan looks like
Assrt test cases are numbered English instructions under a #Case N: heading. No selector syntax. No YAML schema to learn. The file reads like a QA checklist and can be written by anyone who understands the flow being tested.
This file lives in your repo. Commit it. Review changes in pull requests. Roll back to a previous version with git revert. The test logic belongs to the same version control history as the application it covers.
The git workflow in practice
After any run, Assrt writes the scenario to ~/.assrt/scenarios/<uuid>.json. The JSON wraps the same markdown plan, so it is readable in any text editor. You can inspect it, add it to your repo, or run it offline without any network call.
How the test execution loop works
Write a test plan in plain markdown
Each '#Case N:' block is a numbered list of English instructions. No selector knowledge required. The plan lives in a file you own and commit.
Assrt MCP reads the plan and launches a browser
The MCP server parses the '#Case' blocks, preflight-checks the target URL with an 8-second timeout, then hands control to the agentic loop.
LLM receives a live accessibility tree snapshot
Before every action, the agent calls snapshot() and receives the current DOM as a compact text tree with element references like ref=e5. No selectors are pre-baked into the plan.
LLM decides the next tool call
The model chooses from 18 browser tools: navigate, click, type_text, assert, wait_for_stable, and more. It calls complete_scenario when the case is done. There is no hard step limit.
Results and video saved locally
Pass/fail, assertion evidence, and a .webm recording write to /tmp/assrt/results/latest.json. A local HTTP server serves a video player at 127.0.0.1 with speed controls and seeking.
The cost of commercial AI testing vs. running your own
Commercial AI testing platforms price on a per-seat or per-run model. Entry-level plans start around $1,000 per month. Midmarket enterprise contracts for tools like Mabl or testRigor run $7,500 and above per month. Assrt MCP has no subscription tier. The only cost is your Anthropic API usage, which runs to a few cents per test scenario with Claude Haiku.
What you are actually comparing
| Feature | Commercial AI testing platforms | Assrt |
|---|---|---|
| Monthly license | $1,000 to $7,500+ | Free (open-source) |
| Test storage format | Proprietary YAML or vendor binary | Plain markdown (#Case N:) |
| Test access model | API key tied to subscription | UUID v4 is the only token |
| Tests after cancellation | Inaccessible (key revoked) | Still in your repo and ~/.assrt/ |
| Self-hosted option | Cloud-only (most vendors) | Yes — MCP server runs locally |
| Version control | Vendor dashboard history | Git — full diff, blame, revert |
| Source code | Closed | Open-source (MIT) |
What you own with Assrt from day one
Tests live in your repo
The '#Case N:' markdown format is plain text. Version-control it, diff it, review it in a PR — the same way you treat any other source file.
UUID as access token
No API key required. The UUID v4 is the only credential. Share it, revoke it by discarding it.
Local cache at ~/.assrt/
Every scenario is cached at ~/.assrt/scenarios/<uuid>.json after the first run. Offline access is built in.
Open MCP protocol
The runner speaks standard MCP. Any MCP-compatible client or model can drive it. No proprietary RPC layer to depend on.
Open-source runner
The full server is at github.com/assrt-ai/assrt-mcp. Read every line. Fork it. Deploy it on your CI without a vendor API call.
The complete ownership checklist
Every item below is verifiable by reading the source at assrt-mcp/src/core/scenario-store.ts and scenario-files.ts.
What Assrt gives you on first run
- Test plan markdown files, git-committable from day one
- Local scenario cache at ~/.assrt/scenarios/<uuid>.json
- Pass/fail JSON at /tmp/assrt/results/latest.json
- Video recordings (.webm) on your own disk
- Open-source MCP runner you can fork and self-host
- Scenario UUID as access token — no subscription-gated API key
- Auto-sync of file edits with 1-second debounce (scenario-files.ts)
Want to see your test cases stay yours?
Bring a URL and a flow to test. We will run it together, commit the scenario file, and show you exactly where it lives on disk.
Book a call →Frequently asked questions
What format does Assrt store test cases in?
Test cases are stored as plain markdown using a '#Case N: name' heading format. Each case is a numbered list of natural language instructions: navigate here, fill this field, assert that text. Assrt writes the live plan to /tmp/assrt/scenario.md and caches completed scenarios as JSON at ~/.assrt/scenarios/<uuid>.json. The JSON wraps the same markdown string, so the test plan is always readable in a text editor and committable to git.
What happens to my test suite when I cancel a commercial AI testing platform?
With most commercial platforms, your tests are stored in their proprietary format inside their cloud. The access token that lets you fetch them is tied to your paid subscription. Cancel and the token is revoked; you get at most a CSV export of test names if the vendor is generous. With Assrt, the UUID that identifies a scenario also functions as the access token — no subscription required. Tests are cached locally before and after each run, so cancelling an API plan (there is none) or losing connectivity does not erase anything.
What is the capability-URL model Assrt uses for scenario sharing?
Each Assrt scenario is identified by a UUID v4. That UUID IS the access token: anyone who knows the UUID can load the scenario from app.assrt.ai without presenting any separate credential. This is the capability-URL model, the same pattern used by shared Google Docs with 'anyone with the link' access. Practically: sharing a test means sharing a UUID. Revocation means discarding the UUID. The source comment at scenario-store.ts line 8 spells this out: 'No auth required: the UUID v4 IS the access token.'
Can Assrt run tests without an internet connection?
Yes. After any scenario runs, the full scenario object (plan, URL, variables, tags) is written to ~/.assrt/scenarios/<uuid>.json. The next run checks the local cache first; it only calls app.assrt.ai to sync updates or load a scenario you have not seen before. The MCP server itself runs on your machine or your CI, so the execution path is entirely local: Claude Haiku drives the browser through Playwright MCP, results write to /tmp/assrt/results/, and the video player is a localhost HTTP server. Nothing in the test loop requires an external service.
How does LLM-driven test execution differ from AI-generated test code?
AI-generated test code produces a .spec.ts or .yaml file that a conventional runner then executes. The AI is a one-time author; all adaptation to UI changes happens at the next authoring session. LLM-driven execution never produces a script file. The model receives a live accessibility tree snapshot, sees element references like ref=e5, and decides each tool call turn-by-turn. When the UI changes between two runs, the model binds to whatever element name matches today, not the name from yesterday's authoring session. The adaptation happens at click time, not at the next code-gen cycle.
What is the MCP protocol and why does Assrt use it instead of a proprietary API?
MCP (Model Context Protocol) is an open standard for connecting AI models to tool surfaces. Assrt's test runner is implemented as an MCP server, which means the tool definitions are expressed in the same schema that any MCP-compatible model can consume. You can run Assrt from Claude Code, from any IDE with MCP support, or from the CLI. Because the protocol is open, the runner is not coupled to a single AI vendor: swap the model parameter and the same scenario runs against a different underlying LLM. Proprietary APIs for AI testing tend to lock both the format and the AI layer simultaneously.
How do I version-control my Assrt test cases with git?
The simplest approach: commit the test plan markdown files alongside your application code. Assrt watches /tmp/assrt/scenario.md with a 1-second debounce and syncs edits to the cloud; you can also commit that file directly or maintain it in a tests/ directory. The local cache at ~/.assrt/scenarios/<uuid>.json is also plain JSON — git-committable, diff-readable, mergeable. A team workflow looks like: write test cases in markdown, commit them, run assrt run on CI pointing at the committed file, push results as CI artifacts.
Is Assrt free? What is the actual cost to run it?
Assrt MCP is open-source and free to install and run. Each test run uses Claude Haiku via the Anthropic API, which charges per token. A typical 10-step scenario runs to about 20,000 input tokens and 2,000 output tokens per turn, across roughly 10 turns, putting the per-run API cost in the range of a few cents depending on Anthropic's current pricing. There is no Assrt subscription, no per-seat fee, and no vendor-locked cloud where your tests live. The cost ceiling is your Anthropic API usage.
How did this page land for you?
React to reveal totals
Comments (••)
Leave a comment to see what others are saying.Public and anonymous. No signup.