Manual test cases · for developers

Handle your tests like
a developer. No ceremony.

Write cases in markdown, pick a few into an explicit run, judge each one, and it seals into a report you can share. Local-first — your cases are plain files you own.

local-firstmarkdown casesfrozen runs
Pre-release regressionsealed
5 passed1 failed1 blocked71%
Sign in with valid credentialspassed
Password reset email arrivesfailed
Lockout after five bad attemptsblocked
The product

The whole loop, in one place.

No dashboards to configure, no suites to maintain. This is the actual UI — projects, a live run, and the coverage it rolls up to.

Workspace

Projects, not suites.

Flat cases with an optional group and a distribution bar per project. Open runs sit at the top; everything else is one hairline away.

runcase.app / workspace
RunCase workspace — open runs and projects
Coverage

The latest verdict per case.

Not "the last run's outcome" — a case nobody ran shows as untested, never silently dropped. Stale groups get flagged, and "what keeps breaking" lists the tests that fail again and again.

runcase.app / auth-service / coverage
RunCase coverage — ring, per-group composition and what keeps breaking
Sign in

A run is frozen.

Starting a run snapshots its cases. Edit them afterwards and the run doesn't change — it stays a record of what was true that afternoon.

runcase.app / sign-in
RunCase sign-in with a sealed-run report
The loop

Write → run → seal → share.

One motion, run right before a release. A batch of cases in, a decision out.

01WriteA case is a markdown blob — ## Title, a Given/When/Then body, Key: value metadata. Paste a whole file and each heading becomes a case.
02Pick a runA run is an explicit set of cases you choose — not a saved filter. Run the four flows a hotfix touches, not all three hundred.
03JudgeMark each one from the keyboard — p pass, f fail, s skip, b block. Fail and block require a note: what went wrong, where. That rule is enforced.
04SealThe run seals into a report — stat tiles, a diff against the previous run, results in order. Reopen to fix, or rerun just the failures.
05ShareA read-only link shows the report to someone with no account — no sidebar, no test steps. Coverage rolls the latest verdicts up across the project.
What it does today

Shipped, not promised.

Markdown-first
A case is a markdown file — editable in any IDE, diffable in git, yours to keep. Export the project back to markdown and push an edited file in.
Frozen runs
Starting a run snapshots its scope. The run stays a record of what was true, even after the cases change. Environment and build labels ride along.
Keyboard judging
Walk a run with p / f / s / b, j/k to move. The prior verdict shows next to each case — "failed 3 of 5 runs". Attach or paste a screenshot as evidence.
Rerun failures
Spin a fresh run from the failed and blocked cases of an old one. The source run stays frozen forever as the record of what happened.
Coverage
Latest verdict per case, per group, with a stale-group flag and a "what keeps breaking" list. Untested cases are counted, never hidden.
Share a report
A read-only capability link. The shared page omits the test steps — it shows the verdicts, not how you got them.
The format is the contract

A test case is a plain file.

The rules are short enough to hold in your head. ## Title starts a case,Key: value lines become metadata, and Given / When / Then are highlighted on render — never rewritten, never validated.

## Password reset link expiresGroup: AuthPriority: highGiven a reset link issued 16 min agoWhen the user opens itThen the link is rejected as expiredAnd a fresh link can be requested
Password reset link expires
group Authpriority high
Givena reset link issued 16 min ago
Whenthe user opens it
Thenthe link is rejected as expired
Anda fresh link can be requested
## Title → one case  ·  Key: value → metadata, stripped from the body  ·  only Priority is validated (a bad value warns, never blocks)  ·  everything else stays plain text.
Command line · coming soon

Your markdown, in step with the workspace.

The CLI keeps local files and the workspace in sync, and drafts cases from a diff against a model running on your machine — the code never leaves it. In private beta now.

~/work/web-app — runcase
$ runcase generate --since main
∙ diff main..HEAD 7 files, +214 −38
∙ engine ollama · qwen2.5-coder:7b detected :11434 · local
proposed 3 cases · imported to Auth
Password reset link rejects tokens older than 15 min
Checkout blocks a second charge on double-submit
Refund webhook stays idempotent on retry
$ runcase push
pushed 3 cases → runcase-io / auth-service
runcase pullExport the project's cases to local markdown files.
runcase pushPush edited markdown back up — revision history records that it came from the CLI.
runcase generate --since <ref>Draft cases from a diff using a local, OpenAI-compatible engine. No key, no cloud.
runcase runWalk a run and mark verdicts from the terminal, keyboard-first.
Coming soon

Two more surfaces, same product.

The web app is live. These are next — the same data, judged wherever you already are.

Command line private beta

A first-class terminal surface — sync your markdown, generate from a diff locally, and judge a run without leaving your shell.

  • pull / push keep files and workspace in step
  • Local, on-device case generation
  • Keyboard judging in the terminal

Desktop app soon

The same app, native and offline-first on your machine. Open a workspace, run a batch, and seal a report with no browser tab.

  • Native window, system fonts, fast start
  • Works offline — local-first by design
  • macOS, Windows & Linux builds
Pricing

Unlimited runs on every tier.

That's deliberate — you're never charged for testing more. The plan line is projects and team size, not how often you run.

Free
$0/ forever
Up to 3 projects, single user. The whole loop — cases, runs, seal, coverage, share links.
3 projects·1 user·Unlimited runs
Starter
$9/ mo
Room to grow — more projects, unlimited cases, plus local AI case generation from the CLI.
10 projects·Local AI generate·CLI sync
Prosoon
$19/ mo
Unlimited projects and cases, plus hosted AI generation from RunCase's provider — no local model to run.
Unlimited·Hosted AI generate·CLI sync
Teamsoon
$39/ mo
Everything in Pro, plus roles and shared workspaces for a whole team.
Unlimited·Roles·Shared workspaces
Unlimited runs, always. The paywall is projects and team size — never how often you test. Prices are provisional while RunCase is in early access.
Early access

Get the first build.

RunCase isn't public yet. Leave an email and we'll send it when the first build is ready — no drip campaign.

You're on the list. We'll email you when it's ready.
No account needed to be on the list — one email when the build is out.