Skip to content

Smoke Tests ​

Run these tests after installing a new build to verify core functionality. Each test lives in its own file under docs/smoke_tests/ so you can read and review one feature at a time without scrolling through the whole catalogue.

For automated regression testing, use the /regression-test skill, which covers unit tests, CLI commands, config validation, and binary variant verification.

Core ​

TestWhat it covers
Basic Verification--version, --help, daemon startup, and config defaults
Recording CycleIdle to Recording to Transcribing to Outputting state transitions
Service Restart Cyclesystemctl --user restart voxtype leaves the daemon in a healthy state
Single Instance EnforcementA second voxtype daemon invocation refuses to start
Signal HandlingSIGTERM and SIGINT shut the daemon down cleanly
Config ValidationInvalid config produces a useful error, not a panic

CLI and file I/O ​

TestWhat it covers
CLI Overrides--model, --engine, --device, and other per-invocation flags
File Output--file, append vs overwrite, config-based paths, directory creation
Transcribe Commandvoxtype transcribe <wav> for offline file transcription

Recording behaviour ​

TestWhat it covers
Smart Auto-SubmitAuto-stop on silence, CLI/env/config layering, negative cases
Rapid Successive RecordingsBack-to-back recordings don't leak state
Long RecordingMulti-minute recordings transcribe cleanly without OOM

Voice activity detection ​

TestWhat it covers
Voice Activity DetectionEnergy VAD, Whisper VAD, auto selection, threshold tuning, transcribe-command integration

Engines and models ​

TestWhat it covers
Multi-Engine TranscriptionQuick smoke per engine, daemon integration, error handling, perf comparison
Model SwitchingSwap models at runtime without restarting the daemon
Engine Switching via Model SelectionPicking a model from another engine flips the engine automatically
Multilingual Model VerificationNon-English models load and transcribe
Invalid Model RejectionBogus model names fail loudly with a remediation hint
Whisper CLI BackendOut-of-process Whisper via subprocess
Parakeet with Preloaded ModelEager preload removes load latency on first recording
Parakeet Backend SwitchingSwitching between Parakeet variants at runtime
Remote TranscriptionOpenAI-compatible HTTP backend
On-Demand Model LoadingLazy load reduces idle memory; load latency hides behind recording
Eager ProcessingEager preload paths warm caches before the first recording

GPU ​

TestWhat it covers
GPU Isolation Modegpu_isolation = true releases VRAM after each transcription
GPU Backend SwitchingSwitching between CUDA, Vulkan, and CPU at runtime
Multi-GPU SelectionCUDA_VISIBLE_DEVICES and explicit device pinning

Output ​

TestWhat it covers
Output Driverswtype, dotool, ydotool, clipboard selection
dotool Fallbackdotool path probes and falls back when uinput is unavailable
dotool Keyboard LayoutDOTOOL_XKB_LAYOUT handles non-US layouts
ydotool Fallbackydotool path probes and falls back when the daemon is missing
X11 Session Clipboardxclip/xsel clipboard output on X11
Output Chain VerificationFull fallback chain wtype, dotool, ydotool, clipboard
Delay Options--delay and per-driver inter-keystroke delays
Post-Processing CommandLLM cleanup command runs on the transcript before output

Integrations ​

TestWhat it covers
Audio FeedbackStart, stop, and completion cues play through the configured device
Compositor Hooksvoxtype record start/stop/toggle from Hyprland, Sway, River
Waybar JSON Outputvoxtype status --follow emits valid JSON for Waybar

Meeting mode ​

TestWhat it covers
Meeting ModeLifecycle, list, show, export, delete, speaker labels, AI summary, error handling, dual audio, diarization backends

v0.7.6 release verification ​

Tests for bug fixes and tweaks introduced in v0.7.6.

TestIssue
TUI Audio/VAD float serialization#451
Engine vs binary mismatch detection#450
Setup retry-hint#449
Streaming + non-streaming model fail-fast#442
Model downloads via Cloudflare R2(CDN rollout)

v0.6.6 release verification ​

Tests for bug fixes and enhancements introduced in v0.6.6.

TestIssue
Text Replacements with Spoken Punctuation#172
Remote Backend initial_prompt#278
Ydotool Socket Detection#306
Eitype in Paste Mode#259
Duplicate Notification Fix#268
Xclip Clipboard Fallback on X11#256
KDE Plasma Compositor Docs#296
Audio Feedback on Transcription Completion#258
MPRIS Media Player Pause#249
Post-Process trim and fallback_on_empty#270

Quick reference ​

TestWhat it covers
Quick Smoke Test ScriptA compressed script that hits the most-broken-things-first paths

Adding a new test ​

Drop a new file under docs/smoke_tests/ (or docs/smoke_tests/<release>/ for release-themed verification batches) and add a row to the appropriate table above. Each file is its own document: open with an # H1 heading, then the test body. There's no enforced template, but most tests follow the same shape: a one-line description, unit-test commands if there are any, a structural grep with expected counts, then a runtime checklist with "Expected:" lines.

Released under the MIT License