testdriver:agent
FreeHow the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
The English summary is being prepared. Showing the original description.
Securely manage passwords and sensitive data in your tests
The English summary is being prepared. Showing the original description.
Review the instructions the agent will receive before you install.
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: - `TD_API_KEY` - Your TestDriver API key - `TD_USERNAME` - Test account username - `TD_PASSWORD` - Test account password </Step> <Step title="Use in GitHub Actions"> Reference secrets in your workflow file: ```yaml .github/workflows/test.yml - 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">
- **Always use `secret: true`** when typing passwords, tokens, or sensitive data
- **Use environment variables** to keep secrets out of code
- **Store secrets in your CI provider** (GitHub Actions, GitLab CI, etc.)
- **Never commit secrets** to version control
- **Rotate secrets regularly** to maintain security
</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.