testdriverai/testdriver:cloud
The fastest way to get started with TestDriver. Just set your API key and start testing.
npx skills add https://github.com/testdriverai/testdriverai --skill testdriver:cloud
<!-- Generated from cloud.mdx. DO NOT EDIT. -->
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:
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 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:
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:
</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>
Take testdriverai/testdriver:cloud from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.