Skip to content
Back to skills

Testdriver Secrets

ASecurity

Securely manage passwords and sensitive data in your tests

  • 243 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
ai-agentsjavascriptgojavabashgitapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add testdriverai/testdriverai --skill testdriver-secrets --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Testdriver Secrets?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Testdriver Secrets
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/testdriverai-testdriver-secrets/badge)](https://www.skillsdirectory.com/skills/testdriverai-testdriver-secrets)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

## Typing Secrets Securely

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:

```javascript
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>

## Storing Secrets in GitHub

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>

## Local Development

For local development, store secrets in a `.env` file:

```bash .env
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>

## Complete Example

Here's a full login test with proper secrets handling:

```javascript tests/login.test.js
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>

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…