Know what works before you ship.

Rehearsal explores your app, writes the tests and runs them on web, mobile and desktop, locally and on every pull request. It keeps them working as your app changes, so you do almost nothing.

Be first in. Early members get perks when Rehearsal opens.

Terminal, coding agents, GitHub and Vercel.

Re:agent
New test

Re:agent uses

Test accounts2
Files0
Memory0

Today

Check that an invited member can join
Parcelparcel.example.comCheck that an invited member can join

Message Re:agent

Browsers

Browsers appear here when Re:agent opens one.

Start with the flow that matters.

Re:agent uses your app the way a person would and turns what it did into a test. Here it checks that an invited member can join a project.

Explore

Explored in your real app.

Re:agent signs in, clicks and reads the page. Every step is recorded.

Re:agentWorking · 12s

Write

Saved as a Retest test.

The flow becomes a test you can read, run and change.

flow.spec.ts
await test.step('Sign in as the owner', async () => {  await owner.page.getByLabel('Password')    .fill(owner.password());  await owner.page    .getByRole('button', { name: 'Sign in' }).click();});await test.step('Open the invitation as the member', async () => {  const email = await member.latestEmail();  await member.page.goto(email.links[0]);});

Verify

Checked again from a clean start.

Rehearsal reruns the new test before marking it ready.

Flow saved
Test written41s
First run passed1m 6s
Checking it in a fresh browser

QA subagents explore your app.

Say what to check, or nothing at all. Subagents open your app in real browsers and report the bugs they find.

  • Each subagent takes one area of your app.
  • A subagent checks each case against what your app should do.
  • Each bug comes with the step it happened on and a recording.

Test every side of your app.

When a flow involves two people, each gets a browser of their own. Follow an invitation from the person sending it to the person accepting it.

  • More than one person

    Up to four people in one flow, each signed in with their own test account.

  • Every screen size

    A layout that fits a laptop can break on a phone.

    • Phone
    • Tablet
    • Laptop
    • Desktop
  • Every browser

    Date pickers, uploads and video behave differently in each browser.

    • Chromium
    • Firefox Soon
    • Safari Soon
  • Every platform

    Test your web, mobile and desktop apps in one workspace.

    • Web apps
    • iOS, Android and desktop apps, coming soon
Browsers

Browsers appear here when Re:agent opens one.

Test while you build.

Connect the app running on your machine and run your saved tests against it. Rehearsal reaches it through a connection you keep open in your terminal.

npm install -g @rehearsal-labs/cli
View on npm
rehearsal

Built on Retest.

Retest is the test library Rehearsal runs your tests on. You can read its code, run it yourself and use it without Rehearsal.

  • A flow written once runs on web, mobile and desktop.
  • It runs in your terminal and in your CI.
  • Every test Rehearsal writes runs on Retest.

Works with your coding agent.

Your agent can run the saved tests, read where one stopped, fix the app and run them again. Every command answers in JSON with the next step.

  • Gemini CLI
  • OpenCode
  • Claude Code
  • Codex
  • Cursor

Bring your tests into every release.

Connect a repository and choose which tests run on pull requests and deployments. Rehearsal tests the preview and posts the result on the commit.

Parcelparcel.example.com
New test

Deployments

Connected repositoryparcel-labs/parcel Connected Rules
Search commits
All4Passed3Failed1
Filter
TestsWhen
  1. Connect the repository.
  2. Choose which tests run and when.
  3. Rehearsal tests the preview.
  4. The check lands on the commit.

Rehearsal never reads your source code.

See what happened.

Open the run, follow its steps and watch the recording. A failed check names the step, what it expected and what the page showed.

Parcelparcel.example.com
New test
Runs

Invited member can join and see the project Run 74

Stop Open test

Runningstarted just now

https://parcel.example.com Chromium · 1440×900
Parcel ShopOrdersO
0:00

ChromiumProductionparcel.example.com

  • Failed at step 12. It expected the page to show Parcel. The page showed No projects yet.

  • Run again after the fix. 12 of 12 steps passed in 39s.

  • A run that stops because of Rehearsal is marked could not run. It never counts as a failure and is never charged.

Join the waitlist.

Leave your email. We'll tell you first when Rehearsal opens.

Join the waitlist