Skill240 repo starsupdated 20d ago
testdriver:dashcam
Record test execution with video and logs
Install in Claude Code
Copygit clone --depth 1 https://github.com/testdriverai/testdriverai /tmp/testdriver-dashcam && cp -r /tmp/testdriver-dashcam/ai/skills/testdriver:dashcam ~/.claude/skills/testdriver-dashcamThen start a new Claude Code session; the skill loads automatically.
Definition
SKILL.md
<!-- Generated from dashcam.mdx. DO NOT EDIT. -->
## Overview
Dashcam provides automatic video recording and log aggregation for your tests. It captures screen recordings, application logs, and test execution details that can be reviewed later.
## Basic Usage
### With Presets
Most presets automatically include Dashcam:
```javascript
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, create a Dashcam instance directly:
```javascript
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:
```javascript
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:
```javascript
await dashcam.auth(apiKey)
```
<ParamField path="apiKey" type="string" optional>
Override the API key set in constructor
</ParamField>
**Returns:** `Promise<void>`
**Example:**
```javascript
await dashcam.auth('your-api-key');
```
### start()
Start recording:
```javascript
await dashcam.start()
```
**Returns:** `Promise<void>`
**Example:**
```javascript
await dashcam.start();
console.log('Recording started');
```
### stop()
Stop recording and retrieve replay URL:
```javascript
await dashcam.stop()
```
**Returns:** `Promise<string|null>` - Replay URL if available
**Example:**
```javascript
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:
```javascript
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:**
```javascript
// 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:
```javascript
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:**
```javascript
await dashcam.addApplicationLog('Google Chrome', 'Browser Logs');
```
### addWebLog()
Track web request logs by URL pattern:
```javascript
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:**
```javascript
await dashcam.addWebLog('*example.com*', 'Web Logs');
```
### addLog()
Generic method to add any type of log:
```javascript
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:**
```javascript
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:
```javascript
await dashcam.isRecording()
```
**Returns:** `Promise<boolean>` - True if recording is active
**Example:**
```javascript
if (await dashcam.isRecording()) {
console.log('Recording in progress');
}
```
## Properties
### recording
Current recording state:
```javascript
dashcam.recording // boolean
```
### apiKey
Configured API key:
```javascript
dashcam.apiKey // string
```
### client
Associated TestDriver client:
```javascript
dashcam.client // TestDriver instance
```
## Complete Examples
### Basic Recording
```javascript
import { teMore from this repository
testdriver:aiSkill
Execute natural language tasks using AI
testdriver:assertSkill
Make AI-powered assertions about screen state
testdriver:aws-setupSkill
Deploy TestDriver on your AWS infrastructure using CloudFormation
testdriver:cacheSkill
Speed up tests with screenshot-based caching
testdriver:cachingSkill
1.7x faster test execution with intelligent caching and optimization
testdriver:captchaSkill
Solve captchas using 2captcha service
testdriver:ci-cdSkill
Run TestDriver tests in CI/CD with parallel execution and cross-platform support
testdriver:clickSkill
Click at specific coordinates or on elements