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:
javascriptimport { 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:
javascriptimport 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:
javascriptnew Dashcam(client, options)
Parameters
<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>
Methods
auth()
Authenticate with Dashcam service:
javascriptawait dashcam.auth(apiKey)
Returns: Promise<void>
Example:
javascriptawait dashcam.auth('your-api-key');
start()
Start recording:
javascriptawait dashcam.start()
Returns: Promise<void>
Example:
javascriptawait dashcam.start(); console.log('Recording started');
stop()
Stop recording and retrieve replay URL:
javascriptawait dashcam.stop()
Returns: Promise<string|null> - Replay URL if available
Example:
javascriptconst 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:
javascriptawait dashcam.addFileLog(path, name)
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:
javascriptawait dashcam.addApplicationLog(application, name)
Returns: Promise<void>
Example:
javascriptawait dashcam.addApplicationLog('Google Chrome', 'Browser Logs');
addWebLog()
Track web request logs by URL pattern:
javascriptawait dashcam.addWebLog(pattern, name)
Returns: Promise<void>
Example:
javascriptawait dashcam.addWebLog('*example.com*', 'Web Logs');
addLog()
Generic method to add any type of log:
javascriptawait dashcam.addLog(config)
<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>
Returns: Promise<void>
Example:
javascriptawait 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:
javascriptawait dashcam.isRecording()
Returns: Promise<boolean> - True if recording is active
Example:
javascriptif (await dashcam.isRecording()) { console.log('Recording in progress'); }
Properties
recording
Current recording state:
javascriptdashcam.recording // boolean
apiKey
Configured API key:
javascriptdashcam.apiKey // string
client
Associated TestDriver client:
javascriptdashcam.client // TestDriver instance
Complete Examples
Basic Recording
javascriptimport { test } from 'vitest'; import TestDriver from 'testdriverai'; import Dashcam from 'testdriverai/lib/core/Dashcam.js'; test('record test execution', async () => { const client = await TestDriver.create({ os: 'linux' }); const dashcam = new Dashcam(client); await dashcam.auth(); await dashcam.start(); // Run your test await client.find('button').then(el => el.click()); const url = await dashcam.stop(); console.log('Replay:', url); await client.cleanup(); });
With Log Tracking
javascripttest('record with logs', async () => { const client = await TestDriver.create({ os: 'linux' }); const dashcam = new Dashcam(client); await dashcam.auth(); // Add log files before starting await dashcam.addFileLog('/tmp/testdriver.log', 'TestDriver Log'); await dashcam.addFileLog('/tmp/app.log', 'Application Log'); await dashcam.start(); // Test execution await client.find('login button').then(el => el.click()); const url = await dashcam.stop(); console.log('Replay with logs:', url); await client.cleanup(); });
Auto-start Configuration
javascripttest('auto-start recording', async () => { const client = await TestDriver.create({ os: 'linux' }); const dashcam = new Dashcam(client, { autoStart: true, logs: [ { name: 'App Log', type: 'file', path: '/tmp/app.log' } ] }); await dashcam.auth(); // Automatically starts recording // Test execution await client.find('submit button').then(el => el.click()); const url = await dashcam.stop(); console.log('Replay:', url); await client.cleanup(); });
Using with Presets
javascriptimport { chrome } from 'testdriverai/presets'; test('preset with dashcam', async (context) => { const { testdriver, dashcam } = await chrome(context, { url: 'https://example.com', dashcam: true // Enabled by default }); // Test runs with automatic recording await testdriver.find('button').then(el => el.click()); // URL automatically available console.log('Replay:', dashcam.url); });
Disabling Dashcam in Presets
javascripttest('without dashcam', async (context) => { const { testdriver } = await chrome(context, { url: 'https://example.com', dashcam: false // Disable recording }); // Test runs without recording (faster) await testdriver.find('button').then(el => el.click()); });
Platform Differences
Windows
On Windows, Dashcam uses PowerShell commands and installs via npm:
javascript// Windows-specific paths await dashcam.addFileLog( 'C:\\Users\\testdriver\\Documents\\testdriver.log', 'TestDriver Log' );
Linux/Mac
On Linux/Mac, Dashcam uses shell commands:
javascript// Unix-specific paths await dashcam.addFileLog('/tmp/testdriver.log', 'TestDriver Log');


