The hosted price uses device-seconds: the time that your tests run on our infrastructure.
- Zero Setup. Start tests immediately. You do not need DevOps.
- Free Tier — Start with a limited preview at no cost.
- Pay As You Go — Pay only for the device-seconds that you use.
Hosted Plans
- 1 Concurrent Sandbox - 60 Minutes Included - 1 Team User - Community Support
- 2 Concurrent Sandboxes - 120 Minutes Included - Overage: $0.001/second - Test Recordings - Community Support
- 8 Concurrent Sandboxes - 10,000 Minutes Included - Overage: $0.001/second - 5 Team Users - Test Recordings - Private Support - Test Analytics - CPU, RAM, & Network Profiles
Get Started
Hosted is the default when you follow the Quickstart guide.
<Card
title="Try the Quickstart"
icon="play"
href="/quickstart"
Set your API key and start testing in minutes.
Parallel Testing Limits
Your account has a set number of license slots that determine how many devices can run simultaneously. You can view your available slots in the TestDriver Dashboard.
Avoiding Slot Conflicts
To prevent tests from failing due to exceeding your license slot limit, we recommend two key configurations:
```javascript vitest.config.mjs import { defineConfig } from 'vitest/config'; import TestDriver from 'testdriverai/vitest'; export default defineConfig({ test: { testTimeout: 900000, hookTimeout: 900000, maxConcurrency: 5, // Set to your license slot limit reporters: ['default', TestDriver()], setupFiles: ['testdriverai/vitest/setup'], }, }); ``` <Tip> Check your slot count at [console.testdriver.ai](https://console.testdriver.ai) and set `maxConcurrency` to that number or lower. </Tip>
```yaml .github/workflows/test.yml name: Tests on: push: branches: [main] pull_request: # Prevent concurrent runs from competing for license slots concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm install - name: Run tests run: vitest run env: TD_API_KEY: ${{ secrets.TD_API_KEY }} ``` The `concurrency` block ensures: - Only one workflow run per branch runs at a time - New pushes cancel in-progress runs on the same branch - Different branches/PRs can run in parallel (up to your slot limit)
When to Consider Self-Hosted
Hosted is perfect for getting started and for teams that want zero infrastructure management. However, you might consider Self-Hosted if you:
- Want to escape per-second billing with a flat license fee
- Require greater concurrency than offered in Cloud plans
- Need full control over your infrastructure and privacy
- Want to use your own AI API keys
- Require custom hardware configurations
- Have high test volumes that make self-hosting more economical
<Card title="Explore Self-Hosted" icon="server" href="/self-hosted"
Learn about self-hosting for unlimited test execution at a flat rate.


