TestStudio

TestStudio

Black-box acceptance tests, as data.

Author Playwright tests in the same shell as the rest of your work. Lifecycle phases, fixture dependencies, assertion counts. No CI, no per-machine licenses.

See features
TestStudio workspace

The problem with tests-as-code.

Cypress and Playwright Test live in your repo. They run in CI. They log to CI artifacts in a third place. The team that ships the feature doesn't see the test until it breaks. The team that wrote the test forgets which fixture it depends on.

Tests are code, not data. You can't query your test suite the way you query your application. You can't sync tests between environments through the same tools that sync your data. Tests drift from the application they cover.

Key features

A test framework that knows it lives in a workspace.

Lifecycle phases as first-class fields.

Setup, Verify, Cleanup, On Failure — each references a saved Script Runner script. Cleanup runs always in finally. On Failure runs only on prior-phase failure for diagnostics. Status precedence (failed > cleanup_failed > setup_failed > complete) makes flaky cascade failures impossible.

Lifecycle phase selectors
Script editor

Three assertion APIs.

expect — Playwright native, throws sync on failure.

softExpect — failures collect into a soft-fail list; the script keeps running so you see every mismatch in one shot.

assert(cond, msg) — plain truthy check for non-DOM conditions. Every call increments the run's assertion counter, persisted to the run document.

Declare fixture dependencies; runner enforces.

Add fixture tenant slugs to a test. The runner verifies the fixture exists before setup fires. Missing fixture? The test is marked setup_failed immediately — no flaky cascade of "was it the data or the code?"

Fixture dependencies chip selector
Schedule editor

Scheduled runs with quota enforcement.

Click + Schedule, pick a cron expression and timezone. Schedules respect tenant monthly quotas — hit the cap and the next fire marks last_status as quota_denied, logs the denial, skips dispatch without inflating failure_count.

Run history inline. No CI dashboard hop.

Every run produces a _test_pilot_run document with status, duration, assertion tally, per-phase trace, log streams, error stacks, and screenshots. The run-detail panel renders all of it inline.

Run detail panel

What only TestStudio offers

Things Cypress and Playwright Test cannot do.

Fixture-dependency declaration enforced before dispatch. No flaky cascades.
Tests live in MongoDB. Queryable, syncable, comparable across envs via Bulk Compare.
Lifecycle phases as Script Runner references. Share setup logic across many tests, edit it in one place.
Tenant-level quota enforcement on scheduled test runs — schedules that hit the cap bounce cleanly.
Run-detail panel inline in the same workspace as your DataStudio queries and TemplateStudio editors.

Use cases

What teams build with TestStudio.

Phase acceptance gates

Tag tests with a test_suite, run them all before promoting to staging. Failed assertions point at the exact scenario.

Per-tenant smoke tests

Scheduled run every morning against each fixture tenant. Quota-denied runs flag plan-limit issues. Failed runs page on-call.

Negative-path regression

Set expected_outcome to fail for "this should be 403" tests. Pass criterion: the assertion threw. Cleaner than skip-with-comment.

Visual sanity

Cleanup phase takes a full-page screenshot, stores the R2 URL. Diff against a baseline manually or via the Visual Regression scaffold (Enterprise).

Test like your team works.

TestStudio is included in every Solo and Team subscription. No per-parallel charges. No per-execution charges.

View pricing