testdriver-agent
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Securely manage passwords and sensitive data in your tests
Claude Code
$ npx -y skills add testdriverai/testdriverai --skill testdriver-secrets --agent claude-code
Codex
$ npx skills add testdriverai/testdriverai --skill testdriver-secrets -a codex -y
Cursor
$ npx skills add testdriverai/testdriverai --skill testdriver-secrets -a cursor -y
Gemini CLI
$ npx skills add testdriverai/testdriverai --skill testdriver-secrets -a gemini-cli -y
GitHub Copilot
$ npx skills add testdriverai/testdriverai --skill testdriver-secrets -a github-copilot -y
OpenCode
$ npx skills add testdriverai/testdriverai --skill testdriver-secrets -a opencode -y
Windsurf
$ npx skills add testdriverai/testdriverai --skill testdriver-secrets -a windsurf -y
name: testdriver:secrets description: Securely manage passwords and sensitive data in your tests
<!-- Generated from secrets.mdx. DO NOT EDIT. -->
Protect sensitive information such as passwords, API keys, and tokens in your TestDriver tests.
When you type sensitive information such as passwords, use the `secret: true` option. This stops TestDriver from a log or a store of the value:
import { test } from 'vitest';
import { chrome } from 'testdriverai/presets';
test('login with secure password', async (context) => {
const { testdriver } = await chrome(context, {
url: 'https://myapp.com/login'
});
await testdriver.find('email input').click();
await testdriver.type(process.env.TD_USERNAME);
await testdriver.find('password input').click();
// Password is masked in logs and recordings
await testdriver.type(process.env.TD_PASSWORD, { secret: true });
await testdriver.find('login button').click();
await testdriver.assert('dashboard is visible');
});<Note> When you set `secret: true`, the typed text shows as `****` in all logs, recordings, and dashcam output. </Note>
Store sensitive credentials as GitHub repository secrets. Then they are never in your code:
<Steps> <Step title="Navigate to Repository Settings"> Go to your GitHub repository → **Settings** → **Secrets and variables** → **Actions** </Step> <Step title="Add Repository Secrets"> Click **New repository secret** and add your secrets:
</Step> <Step title="Use in GitHub Actions"> Reference secrets in your workflow file:
- name: Run TestDriver tests
env:
TD_API_KEY: ${{ secrets.TD_API_KEY }}
TD_USERNAME: ${{ secrets.TD_USERNAME }}
TD_PASSWORD: ${{ secrets.TD_PASSWORD }}
run: vitest run</Step> </Steps>
For local development, store secrets in a `.env` file:
TD_API_KEY=your_api_key_here TD_USERNAME=testuser@example.com TD_PASSWORD=your_secure_password
<Warning> Never commit `.env` files to version control. Add `.env` to your `.gitignore` file. </Warning>
Here's a full login test with proper secrets handling:
import { test, expect } from 'vitest';
import { chrome } from 'testdriverai/presets';
test('secure login flow', async (context) => {
const { testdriver } = await chrome(context, {
url: process.env.TD_WEBSITE || 'https://staging.myapp.com'
});
// Enter username (not sensitive)
await testdriver.find('email input').click();
await testdriver.type(process.env.TD_USERNAME);
// Enter password securely
await testdriver.find('password input').click();
await testdriver.type(process.env.TD_PASSWORD, { secret: true });
// Submit login
await testdriver.find('login button').click();
// Verify successful login
const loggedIn = await testdriver.assert('user is logged in');
expect(loggedIn).toBeTruthy();
});<Card title="Secrets Best Practices" icon="shield-check">
</Card>
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,…