Voice App QA Recorder — Catching Bugs Automated Tests Miss

A reusable local QA harness for voice-first and multimodal apps. Records a real browser session as synchronized screen video, microphone audio, system audio, console logs, app events, and stills — then generates a review file.

GitHub: anoop22/voice-app-qa-recorder

Automated tests miss the lived experience of a voice app. Voice lag, missing transcripts, model state confusion, wrong visual context, scrolling problems, focus glitches, assistant answers out of sync with what the user is actually looking at — none of that shows up in a green CI build.

This recorder captures a real browser session as synchronized artifacts: screen or tab video, microphone audio, tab/system audio when available, timestamped app events, console logs, still frames, and a generated review.md. Local-first, development-oriented, MIT.

Quick start

# Start the local recorder service
npm run qa-recorder
# Listens on http://localhost:4317
# Writes session bundles to qa-recordings/

Browser client

import { VoiceAppQARecorder } from './packages/voice-app-qa/src/client';

const recorder = await VoiceAppQARecorder.start({
  endpoint: 'http://localhost:4317',
  appName: 'my-app',
  flowName: 'primary-flow',
  captureScreen: true,
  captureMicrophone: true,
  captureSystemAudio: true,
});

recorder.attachConsole();
await recorder.logEvent('app.voice.input_transcript', { text: '...' });
const review = await recorder.stopAndReview();

Reviewing a session

npm run qa-review -- qa-recordings/<session-id>

With ffmpeg installed, the review command extracts frames and writes review.md — a single artifact an agent (or a human) can scan to spot the regression.

For agent-facing integration details, see docs/VOICE_APP_QA_AGENT_GUIDE.md in the repo.