TestDriver scales effortlessly from your first test to enterprise suites with thousands of tests running in parallel across multiple platforms.
Works with Vitest
Full integration with Vitest’s powerful features:
import { defineConfig } from 'vitest/config' ;
export default defineConfig ({
test: {
testTimeout: 120000 ,
hookTimeout: 120000 ,
maxConcurrency: 10 , // Run 10 tests in parallel
minThreads: 2 ,
maxThreads: 10 ,
} ,
}) ;
Parallel Execution Run multiple tests simultaneously for maximum throughput: # Run all tests in parallel
npx vitest run
# Control concurrency
npx vitest run --max-concurrency=5
Watch Mode Instant feedback during development: # Run in watch mode
npx vitest
# Only run changed tests
npx vitest --changed
See complete Vitest integration guide
CI/CD Compatible
TestDriver integrates seamlessly with all major CI/CD platforms:
GitHub Actions
GitLab CI
CircleCI
Jenkins
.github/workflows/test.yml
name : E2E Tests
on : [ push , pull_request ]
jobs :
test :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v3
- uses : actions/setup-node@v3
- run : npm install
- run : npx vitest run
env :
TD_API_KEY : ${{ secrets.TD_API_KEY }}
GitHub Actions guide
JUnit Reports
Generate JUnit XML reports for test result aggregation:
# Generate JUnit report
npx vitest run --reporter=junit --outputFile=test-results.xml
<? xml version = "1.0" encoding = "UTF-8" ?>
< testsuites name = "vitest tests" tests = "12" failures = "0" errors = "0" time = "125.3" >
< testsuite name = "login.test.js" tests = "3" failures = "0" time = "31.2" >
< testcase name = "user can login" time = "12.4" />
< testcase name = "invalid credentials show error" time = "9.8" />
< testcase name = "password reset works" time = "9.0" />
</ testsuite >
<!-- More test suites -->
</ testsuites >
JUnit reports integrate with Jenkins, Azure DevOps, TeamCity, and other CI platforms for test result visualization.
Familiar Test Syntax
TestDriver works with the test frameworks you already know:
import { test , describe , beforeAll , afterAll } from 'vitest' ;
import { chrome } from 'testdriverai/presets' ;
describe ( 'My Feature' , () => {
test ( 'should work' , async ( context ) => {
const { testdriver } = await chrome ( context , { url });
await testdriver . find ( 'button' ). click ();
});
});
Existing Systems Integration
Drop TestDriver into your current workflow without disruption:
import { test , expect } from 'vitest' ;
import { chrome } from 'testdriverai/presets' ;
test ( 'integrates with existing assertions' , async ( context ) => {
const { testdriver } = await chrome ( context , { url });
// Use TestDriver's AI assertions
await testdriver . assert ( 'welcome message is visible' );
// Or use traditional assertions
const button = await testdriver . find ( 'submit button' );
expect ( button . coordinates ). toBeDefined ();
expect ( button . text ). toContain ( 'Submit' );
// Mix and match as needed
const element = await testdriver . exec ( 'js' , 'document.title' );
expect ( element ). toBe ( 'My App' );
});
Scale to Thousands of Tests
TestDriver handles large test suites efficiently:
Enterprise Test Suite Example Project: E-commerce Platform
Total tests: 3,847
Test files: 412
Parallel runners: 20
Total duration: 18 minutes
Breakdown:
- Unit tests: 2,134 (3 min)
- Integration: 891 (7 min)
- E2E (TestDriver): 822 (18 min)
Cost per run: $4.32
Runs per day: 50
Monthly cost: $6,480
With caching enabled: E2E duration: 8 minutes (2.25x faster)
Cost per run: $1.89 (56% reduction)
Monthly cost: $2,835 (saves $3,645/month)
Test Sharding
Distribute tests across multiple machines:
GitHub Actions Matrix
GitLab CI Parallel
Manual Sharding
.github/workflows/test.yml
strategy :
matrix :
shard : [ 1 , 2 , 3 , 4 , 5 ]
steps :
- run : npx vitest run --shard=${{ matrix.shard }}/5
Runs 5 parallel jobs, each handling 1/5 of tests.
Team Collaboration
Built for teams with multiple developers:
Tests automatically benefit from each other’s cache entries: // Developer A runs test
await testdriver . find ( 'submit button' ). click ();
// Creates cache entry
// Developer B runs test later
await testdriver . find ( 'submit button' ). click ();
// Uses Developer A's cache ⚡
Per-team cache sharing accelerates everyone’s tests.
Share test replays with your team: test ( 'shareable replay' , async ( context ) => {
const { testdriver , dashcam } = await chrome ( context , { url });
await testdriver . find ( 'button' ). click ();
// Share replay URL with team
console . log ( 'Replay:' , dashcam . url );
// https://console.testdriver.ai/dashcam/abc123
});
View replays at app.testdriver.ai
Long-running sandboxes for team debugging: # Spawn a sandbox for the team
testdriver sandbox spawn --timeout 7200000
# Team members can connect
export TESTDRIVER_SANDBOX_ID = i-0abc123def
npx vitest run
Learn about sandbox management
Cost Optimization
TestDriver scales cost-effectively:
Pricing Model
API calls: Pay per AI vision analysis
Sandbox time: Pay per minute of VM usage
Caching: Reduces both costs dramatically
Shared cache: Team benefits from collective cache
Example costs:
Single test run: 0.04 − 0.04 - 0.04 − 0.12
100-test suite: 4 − 4 - 4 − 12 (first run)
Cached suite: 0.50 − 0.50 - 0.50 − 2 (90%+ savings)
Enterprise Scale
TestDriver supports the largest testing operations:
Unlimited tests in enterprise plans
Unlimited sandbox hours for large suites
Unlimited team members for collaboration
Priority infrastructure for faster execution
Dedicated support for optimization help
Custom SLA for guaranteed uptime
Contact sales for enterprise pricing.
Learn More