Skip to content
Testing
Skill

/testdriver-customizing-devices

Configure TestDriver sandbox options and environment settings

From plugin
testdriverai
35665 skills1 agent

Claude Code

$ npx -y skills add testdriverai/testdriverai --skill testdriver-customizing-devices --agent claude-code

SKILL.md

testdriver-customizing-devices.SKILL.md
name: testdriver:customizing-devices
description: Configure TestDriver sandbox options and environment settings

<!-- Generated from customizing-devices.mdx. DO NOT EDIT. -->

TestDriver Options

Configure the TestDriver behavior with options that you give to the `TestDriver()` function:

const testdriver = TestDriver(context, {
  // === Sandbox & Connection ===
  newSandbox: true,          // Force creation of a new sandbox (default: true)
  reconnect: false,          // Reconnect to last sandbox (default: false)
  keepAlive: 60000,          // Keep sandbox alive after disconnect in ms (default: 60000)
  os: "linux",               // 'linux' | 'windows' (default: 'linux')
  resolution: "1366x768",    // Sandbox resolution (e.g., '1920x1080')
  ip: "203.0.113.42",        // Direct IP for self-hosted sandbox
  sandboxAmi: "ami-1234",    // Custom AMI ID (AWS deployments)
  sandboxInstance: "i3.metal", // EC2 instance type (AWS deployments)

  // === Preview & Debugging ===
  preview: "browser",        // "browser" | "ide" | "none" (default: "browser")
  headless: false,           // @deprecated - use preview: "none" instead
  debugOnFailure: false,     // Keep sandbox alive on test failure for debugging

  // === Caching ===
  cache: true,               // Enable element caching (default: true)
  // Or use advanced caching config:
  // cache: {
  //   enabled: true,
  //   thresholds: {
  //     find: { screen: 0.05, element: 0.8 },
  //     assert: 0.05
  //   }
  // },
  cacheKey: "my-test",       // Cache key for element finding operations

  // === Recording & Screenshots ===
  dashcam: true,             // Enable/disable Dashcam video recording (default: true)
  autoScreenshots: true,     // Capture screenshots before/after each command (default: false)

  // === AI Configuration ===
  ai: {                      // Global AI sampling configuration
    temperature: 0,          // 0 = deterministic, higher = more creative
    top: {
      p: 0.9,               // Top-P nucleus sampling (0-1)
      k: 40,                // Top-K sampling (1 = most likely, 0 = disabled)
    },
  },

  // === Screen Change Detection ===
  redraw: true,              // Enable redraw detection (default: true)
  // Or use advanced redraw config:
  // redraw: {
  //   enabled: true,
  //   thresholds: {
  //     screen: 0.05,       // Pixel diff threshold (0-1), false to disable
  //     network: false,     // Monitor network activity (default: false)
  //   }
  // },

  // === Logging & Analytics ===
  logging: true,             // Enable console logging output (default: true)
  analytics: true,           // Enable analytics tracking (default: true)

  // === Advanced ===
  apiRoot: "https://...",    // API endpoint URL (for self-hosted deployments)
  environment: {},           // Additional environment variables for the sandbox
});

Preview Mode

Control how test execution is visualized. The `preview` option determines where the live debugger view opens:

const testdriver = TestDriver(context, {
  preview: "browser",  // Opens in default browser (default)
});

| Value | Description | |-------|-------------| | `"browser"` | Opens debugger in default browser (default) | | `"ide"` | Opens preview in IDE panel (VSCode, Cursor - requires TestDriver extension) | | `"none"` | Headless mode, no visual preview |

**IDE Preview**

For the best development experience, use `preview: "ide"` with the TestDriver extension for VSCode or Cursor:

const testdriver = TestDriver(context, {
  preview: "ide",  // Opens preview in IDE panel
});

**Headless Mode**

Run tests without any visual preview. Useful for CI/CD pipelines:

const testdriver = TestDriver(context, {
  preview: "none",  // No visual preview (headless)
});

<Note> The legacy `headless: true` option still works for backward compatibility and maps to `preview: "none"`. </Note>

Debug on Failure

Keep the sandbox alive when a test fails so you can reconnect and debug interactively. The sandbox ID is printed to the console along with instructions for reconnecting via MCP.

const testdriver = TestDriver(context, {
  debugOnFailure: true,
});

IP Target

If self-hosting TestDriver, use `ip` to specify the device IP. See [Self-Hosting TestDriver](../self-hosting.md) for details.

const testdriver = TestDriver(context, {
  ip: "203.0.113.42",  // Your allowlisted IP
});

Operating System

Set the `os` property to run tests on a specific operating system. Available options are `linux` (default) and `windows`.

const testdriver = TestDriver(context, {
  os: "windows",  // Run on Windows sandbox
});

Using Environment Variables

You can make the operating system configurable via environment variables. This requires adding code to read from `process.env` in your test:

const testdriver = TestDriver(context, {
  os: process.env.TD_OS || "linux",  // Read from env, default to Linux
});

Then pass the variable when running tests:

# Run tests on Windows
TD_OS=windows vitest run

# Run tests on Linux (default)
TD_OS=linux vitest run

This pattern is useful for running the same test suite across multiple operating systems in CI/CD:

# Example GitHub Actions matrix
strategy:
  matrix:
    os: [linux, windows]
steps:
  - run: TD_OS=${{ matrix.os }} vitest run

Dashcam Recording

Dashcam video recording is enabled by default. Disable it to skip recording:

const testdriver = TestDriver(context, {
  dashcam: false,
});

Automatic Screenshots

Screenshots are automatically captured before and after every command (click, type, find, assert, etc.) by default. Each screenshot filename includes the line number from your test file.

Disable automatic screenshots:

const testdriver = TestDriver(context, {
  autoScreenshots: false,
});

Caching

Read more
@testdriverai
Ships withtestdriverai

Computer-Use SDK for E2E QA Testing

35665 skills1 agent
Get the whole plugin

Stars on GitHub

Momentum

stars in total
356
Star history of testdriverai/testdriverai on GitHub, a chart by star-history.com

Other skills on testdriverai.

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafana5d78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

promptfoo13d27k
@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about testdriver-customizing-devices.

Which coding agents can use testdriver-customizing-devices?
testdriver-customizing-devices installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.