testdriver:secrets

SkillDev tools

Securely manage passwords and sensitive data in your tests

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the testdriver:secrets skill

What this skill tells your AI

The instructions your AI receives, as published by testdriverai/testdriverai in ai/skills/testdriver-secrets/SKILL.md and read by ahel’s review.

Protect sensitive information like passwords, API keys, and tokens in your TestDriver tests.

Typing Secrets Securely

When typing sensitive information like passwords, use the secret: true option to prevent the value from being logged or stored:

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');
});

Storing Secrets in GitHub

Store sensitive credentials as GitHub repository secrets so they're never exposed in your code:

Local Development

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

Complete Example

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();
});

Signals

GitHub stars
242
Forks
35
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
testdriver-secrets
Source
github.com/testdriverai/testdriverai