testdriver:agent
FreeHow the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
The English summary is being prepared. Showing the original description.
The fastest way to get started with TestDriver. Just set your API key and start testing.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Cloud pricing is based on device-seconds: the amount of time your tests run on our infrastructure.
Cloud is the default when you follow the Quickstart guide.
<Card
title="Try the Quickstart"
icon="play"
href="/v7/quickstart"
Set your API key and start testing in minutes. </Card>
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.
<Info> **When is a slot in use?** A license slot is occupied when a test client is connected. As soon as your device is destroyed the slot becomes available immediately. </Info>To prevent tests from failing due to exceeding your license slot limit, we recommend two key configurations:
<AccordionGroup> <Accordion title="Set Maximum Concurrency in Vitest"> Limit concurrent tests to match your available license slots:```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>
</Accordion>
<Accordion title="Use GitHub Concurrency Keys">
Prevent multiple workflow runs from competing for the same slots by using [GitHub's concurrency controls](https://docs.github.com/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs):
```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)
</Accordion>
</AccordionGroup>
Cloud is perfect for getting started and for teams that want zero infrastructure management. However, you might consider Self-Hosted if you:
<Card title="Explore Self-Hosted" icon="server" href="/v7/self-hosted"
Learn about self-hosting for unlimited test execution at a flat rate. </Card>
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
The English summary is being prepared. Showing the original description.
Execute natural language tasks using AI
The English summary is being prepared. Showing the original description.
Make AI-powered assertions about screen state
The English summary is being prepared. Showing the original description.
Deploy TestDriver on your AWS infrastructure using CloudFormation
The English summary is being prepared. Showing the original description.
Speed up tests with screenshot-based caching
The English summary is being prepared. Showing the original description.
How TestDriver learns your app and caches what it discovers for instant, deterministic replays
The English summary is being prepared. Showing the original description.