Skip to content
Testing
Skill

/testdriver-dashcam

Record test execution with video and logs

From plugin
testdriverai
35665 skills1 agent

Claude Code

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

SKILL.md

testdriver-dashcam.SKILL.md
name: testdriver:dashcam
description: Record test execution with video and logs

<!-- Generated from dashcam.mdx. DO NOT EDIT. -->

Overview

Dashcam makes automatic video recordings. It also collects the logs for your tests. It captures screen recordings, application logs, and test details. You can review them later.

Basic Usage

With Presets

Most presets include Dashcam automatically:

import { test } from 'vitest';
import { chrome } from 'testdriverai/presets';

test('my test', async (context) => {
  const { testdriver, dashcam } = await chrome(context, {
    url: 'https://example.com'
  });
  
  // Test executes with recording automatically
  await testdriver.find('login button').then(el => el.click());
  
  // Dashcam URL available after test
  console.log('Replay:', dashcam.url);
});

Manual Setup

For more control, make a Dashcam instance directly:

import TestDriver from 'testdriverai';
import Dashcam from 'testdriverai/lib/core/Dashcam.js';

const client = await TestDriver.create({ os: 'linux' });
const dashcam = new Dashcam(client, {
  apiKey: process.env.DASHCAM_API_KEY
});

await dashcam.auth();
await dashcam.start();

// Run your tests

const url = await dashcam.stop();
console.log('Replay URL:', url);

Constructor

Create a new Dashcam instance:

new Dashcam(client, options)

Parameters

<ParamField path="client" type="TestDriver" required> TestDriver client instance </ParamField>

<ParamField path="options" type="object"> Configuration options

<Expandable title="options properties"> <ParamField path="apiKey" type="string"> Dashcam API key for authentication. Set via `TD_API_KEY` environment variable. </ParamField>

<ParamField path="autoStart" type="boolean" default={false}> Automatically start recording after authentication </ParamField>

<ParamField path="logs" type="array" default={[]}> Log configurations to add automatically </ParamField> </Expandable> </ParamField>

Methods

auth()

Authenticate with Dashcam service:

await dashcam.auth(apiKey)

<ParamField path="apiKey" type="string" optional> Override the API key set in constructor </ParamField>

**Returns:** `Promise<void>`

**Example:**

await dashcam.auth('your-api-key');

start()

Start recording:

await dashcam.start()

**Returns:** `Promise<void>`

**Example:**

await dashcam.start();
console.log('Recording started');

stop()

Stop recording and retrieve replay URL:

await dashcam.stop()

**Returns:** `Promise<string|null>` - Replay URL if available

**Example:**

const url = await dashcam.stop();
if (url) {
  console.log('Watch replay:', url);
} else {
  console.log('No replay URL available');
}

addFileLog()

Track a log file in the recording:

await dashcam.addFileLog(path, name)

<ParamField path="path" type="string" required> Path to the log file </ParamField>

<ParamField path="name" type="string" required> Display name for the log in Dashcam </ParamField>

**Returns:** `Promise<void>`

**Example:**

// Linux/Mac
await dashcam.addFileLog('/tmp/app.log', 'Application Log');

// Windows
await dashcam.addFileLog('C:\\logs\\app.log', 'Application Log');

addApplicationLog()

Track application-specific logs:

await dashcam.addApplicationLog(application, name)

<ParamField path="application" type="string" required> Application name to track </ParamField>

<ParamField path="name" type="string" required> Display name for the log </ParamField>

**Returns:** `Promise<void>`

**Example:**

await dashcam.addApplicationLog('Google Chrome', 'Browser Logs');

addWebLog()

Track web request logs by URL pattern:

await dashcam.addWebLog(pattern, name)

<ParamField path="pattern" type="string" required> URL pattern to match (e.g., `"*example.com*"`) </ParamField>

<ParamField path="name" type="string" required> Display name for the log </ParamField>

**Returns:** `Promise<void>`

**Example:**

await dashcam.addWebLog('*example.com*', 'Web Logs');

addLog()

Generic method to add any type of log:

await dashcam.addLog(config)

<ParamField path="config" type="object" required> Log configuration

<Expandable title="config properties"> <ParamField path="name" type="string" required> Display name for the log </ParamField>

<ParamField path="type" type="string" required> Log type: `'file'`, `'application'`, or `'web'` </ParamField>

<ParamField path="path" type="string"> File path (required for type='file') </ParamField>

<ParamField path="application" type="string"> Application name (required for type='application') </ParamField>

<ParamField path="pattern" type="string"> URL pattern to match (required for type='web', e.g., `"*example.com*"`) </ParamField> </Expandable> </ParamField>

**Returns:** `Promise<void>`

**Example:**

await dashcam.addLog({
  name: 'Test Output',
  type: 'file',
  path: '/tmp/test.log'
});

await dashcam.addLog({
  name: 'Chrome Logs',
  type: 'application',
  application: 'Google Chrome'
});

await dashcam.addLog({
  name: 'Web Logs',
  type: 'web',
  pattern: '*example.com*'
});

isRecording()

Check if currently recording:

await dashcam.isRecording()

**Returns:** `Promise<boolean>` - True if recording is active

**Example:**

if (await dashcam.isRecording()) {
  console.log('Recording in progress');
}

Properties

recording

Current recording state:

dashcam.recording // boolean

apiKey

Configured API key:

dashcam.apiKey // string

client

Associated TestDriver client:

dashcam.client // TestDriver i
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-dashcam.

Which coding agents can use testdriver-dashcam?
testdriver-dashcam 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.