Works with GitHub

AI code reviewer that actually runs your app.

TestDriver automatically runs every pull request in a real desktop sandbox, finds bugs, and builds regression tests.

Try It Free · No CC Required

Add end-to-end test for sign up flow #247

Open TestDrivertestdriveraiBot opened this 3 minutes ago

Adds a TestDriver end-to-end test that creates a new account and verifies the user lands on the dashboard.

Test flow (tests/signup.test.mjs):

  1. Opens the app and clicks Sign up
  2. Fills the email and password fields
  3. Submits the sign up form
  4. Asserts the dashboard loads with the new account signed in
All checks have passed1 successful check
TestDriverTestDriver/ signup.test.mjsDetails
1 file changed+13−0
tests/signup.test.mjsnew file
+import { test } from "testdriverai";
+
+test("new user can sign up", async (td) => {
+ await td.find("signup button").click();
+
+ await td.find("new user email input").click();
+ await td.type(email);
+ await td.pressKeys(["tab"]);
+ await td.type(password, { secret: true });
+
+ await td.find("submit button").click();
+ await td.assert("dashboard is visible");
+});
Hours Saved
0K+
Test Runs Executed
0K+
Regression Tests Created
0K+
Elements Tested with AI
0M+

Trusted by leading engineering teams

AtlassianPiecesPubNubWave

The AI QA Engineer for Every Pull Request

How it compares

TestDriver reviews every pull request by running your application and testing it like a real user; not just reviewing code or driving a browser.

TestDriverAI Code ReviewPlaywright MCPScreenshot Testing
Reviews Your Changes Automatically tests every pull request, so regressions are caught before they merge.Automatically tests every pull request, so regressions are caught before they merge.YesYesNoNo
Runs Your Actual App Actually executes the running UI to catch real runtime and visual bugs, instead of only reading code or diffs.Actually executes the running UI to catch real runtime and visual bugs, instead of only reading code or diffs.YesNoYesYes
Tests Like a Real User Tests any app, web, desktop, or mobile, across complete end-to-end user flows, not just a single browser or component.Tests any app, web, desktop, or mobile, across complete end-to-end user flows, not just a single browser or component.YesNoNoYes
Runs Unattended in CI The agent drives tests automatically on every commit or pull request, with no human in the loop.The agent drives tests automatically on every commit or pull request, with no human in the loop.YesNoYesYes
Adapts to UI Changes Tests keep passing when colors, layout, or selectors change, instead of breaking on every UI tweak.Tests keep passing when colors, layout, or selectors change, instead of breaking on every UI tweak.YesNoNoNo

Product Tour

How it works

Validate PRs

Validates pull requests with AI Vision

TestDriver reviews every pull request automatically. The vision agent reads the diff to understand what changed, then generates end-to-end tests straight from the PR content, clicking, typing, and reading the screen to prove the new behavior works. No selectors, no DOM, no setup.

Analyzing UI…
Third-party web apps.
Test apps you don't own or control without access to source code.
Chrome extensions.
Browser extensions with popups, content scripts, and background pages.
Desktop apps.
Native Windows and macOS applications with full interaction support.
VS Code extensions.
Test your editor extensions in real development environments.
Rich media & embedded content.
Canvas, video players, images, iFrames, and OAuth flows that break selector-based tools.
Documents & AI content.
File uploads, PDFs, LLM chatbots, and spelling & grammar validation.

Contributes Tests

Contributes tests back as a new PR

Once the agent has a passing test, it opens a fresh pull request with the generated test code committed for you. Review the diff, approve it, and the coverage lands in your repo alongside the change it protects, with no hand-written boilerplate.

1 file changed+13−0
tests/upload.test.mjsnew file
+it("should trigger the upload modal", async (context) => {
+
+ const testdriver = TestDriver(context);
+
+ await testdriver.provision.chrome({
+ url: 'https://example.com',
+ });
+
+ let button = await testdriver.find("upload button");
+ await button.click();
+
+ await testdriver.assert("upload dialog appears");
+});

Runs in CI

Runs in CI

Tests are plain Vitest, so they run the same on your machine and in CI, across web, desktop, and extensions on real VMs. Wire them into the pipeline you already have.

Self-Heals

Self-heals when elements move or change

When the UI shifts and a cached element no longer matches, TestDriver re-invokes the AI to find it, updates the cache, and keeps going. Tests survive redesigns instead of breaking on every pixel, with no rewrites.

Adapt to UI changes Reading cache…

Debugs Failures

Makes it easy to debug failing tests.

Jump from a red build straight to a video replay of the run that broke it, with network logs and every click in order. See what happened instead of guessing.

Prevents Regressions

Catches regressions and monitors software quality

Track pass rates, flaky tests, and failure trends across every run, so a regression shows up the moment it lands. Export to JUnit XML to feed any reporter you already use.

Platform overview

The whole platform in two minutes

A guided tour of TestDriver showing how tests are written, run on real desktops, and reported on. No selectors, no flaky scripts.

Pricing

Simple, Predictable Pricing

Choose how you want to run TestDriver.

Pro

$20/ month / seatA seat is any user who has opened a pull request, run a test, or logged into TestDriver in that billing period.

Plus Per-Minute Usage

Get Pro

Run TestDriver yourself.

  • Unlimited test generation
  • Run tests on every Pull Request
  • Tag @testdriverai anywhere in GitHub
  • 2 Testing Hours / Month (then $0.14/minute)

Business

Starting at

$600/month

Configure Deployment

We set up and maintain TestDriver for you.

  • We buld and maintain your tests
  • Custom deployments for your app and workflow
  • Private support via Slack Connect