testdriver-agent
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Solve captchas using 2captcha service
Claude Code
$ npx -y skills add testdriverai/testdriverai --skill testdriver-captcha --agent claude-code
Codex
$ npx skills add testdriverai/testdriverai --skill testdriver-captcha -a codex -y
Cursor
$ npx skills add testdriverai/testdriverai --skill testdriver-captcha -a cursor -y
Gemini CLI
$ npx skills add testdriverai/testdriverai --skill testdriver-captcha -a gemini-cli -y
GitHub Copilot
$ npx skills add testdriverai/testdriverai --skill testdriver-captcha -a github-copilot -y
OpenCode
$ npx skills add testdriverai/testdriverai --skill testdriver-captcha -a opencode -y
Windsurf
$ npx skills add testdriverai/testdriverai --skill testdriver-captcha -a windsurf -y
name: testdriver:captcha description: Solve captchas using 2captcha service
<!-- Generated from captcha.mdx. DO NOT EDIT. -->
TestDriver can solve captchas automatically during your tests. It uses the 2captcha service. This feature works on **Linux** sandboxes and **Windows** sandboxes.
const result = await testdriver.captcha({
apiKey: process.env.TWOCAPTCHA_API_KEY,
});
console.log(result.success); // true
console.log(result.token); // The solved captcha tokenThat is all. TestDriver does these automatically:
| Type | Auto-Detected | Notes | |------|---------------|-------| | reCAPTCHA v2 | ✅ | Including invisible | | reCAPTCHA v3 | ✅ | Action is auto-detected | | hCaptcha | ✅ | | | Cloudflare Turnstile | ✅ | |
1. Sign up at [2captcha.com](https://2captcha.com) 2. Add funds to your account 3. Copy your API key from the dashboard
const result = await testdriver.captcha({
// Required
apiKey: '2CAPTCHA_API_KEY',
// Optional - usually auto-detected
sitekey: '6Le...', // Override auto-detected sitekey
type: 'recaptcha_v3', // Override auto-detected type
action: 'submit', // reCAPTCHA v3 action
// Timing
timeout: 120000, // Max wait time (default: 120s)
pollInterval: 5000, // Poll interval (default: 5s)
});import { describe, expect, it } from "vitest";
import { TestDriver } from "testdriver";
describe("Checkout flow", () => {
it("should complete checkout with captcha", async (context) => {
const testdriver = TestDriver(context);
// Navigate to checkout page
await testdriver.provision.chrome({
url: 'https://example.com/checkout',
});
// Fill out form
await testdriver.type({ text: 'John Doe', selector: '#name' });
await testdriver.type({ text: 'john@example.com', selector: '#email' });
// Solve the captcha
const result = await testdriver.captcha({
apiKey: process.env.TWOCAPTCHA_API_KEY,
});
expect(result.success).toBe(true);
// Submit the form
await testdriver.click({ selector: '#submit' });
// Verify success
await testdriver.find({ text: 'Order confirmed' });
}, 180000);
});You can set your API key as an environment variable:
export TWOCAPTCHA_API_KEY=your_api_key_here
Then use it in your tests:
const result = await testdriver.captcha({
apiKey: process.env.TWOCAPTCHA_API_KEY,
});Add the key to your repository secrets and expose it in your workflow:
- name: Run Tests
run: vitest run
env:
TWOCAPTCHA_API_KEY: ${{ secrets.TWOCAPTCHA_API_KEY }}1. **Detection**: Scans the page for captcha elements (`data-sitekey`, script tags, etc.) 2. **Submit**: Sends the captcha challenge to 2captcha's solving service 3. **Poll**: Waits for human solvers to complete the captcha 4. **Inject**: Injects the solved token into the page's hidden fields 5. **Callback**: Triggers any JavaScript callbacks the page expects
The captcha element wasn't found on the page. Try:
Captcha solving typically takes 10-30 seconds. If you're getting timeouts:
Some sites validate tokens immediately. Make sure:
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Deploy TestDriver on your AWS infrastructure using CloudFormation
How TestDriver learns your app and caches what it discovers for instant, deterministic replays
Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…
Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…
DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…