UNPKG

swictation

Version:

Cross-platform voice-to-text dictation for Linux and macOS with GPU acceleration (NVIDIA CUDA/CoreML), Secretary Mode (60+ natural language commands), Context-Aware Meta-Learning, and pure Rust performance. Meta-package that automatically installs platfor

893 lines (689 loc) 22.3 kB
# Manual Testing Checklist - Swictation 0.3.0 ## Overview This document provides step-by-step manual testing procedures for validating the Swictation npm installation process. Use this checklist for comprehensive validation before release. --- ## Pre-Testing Setup ### Environment Preparation - [ ] Test machines available: - [ ] Ubuntu 24.04 LTS (clean install) - [ ] Ubuntu 24.04 LTS (with NVIDIA GPU 6GB+) - [ ] Ubuntu 24.04 LTS (with NVIDIA GPU 2-4GB) - [ ] Ubuntu 24.04 LTS (CPU-only) - [ ] Ubuntu 22.04 LTS (for compatibility warning test) - [ ] Node.js 18+ installed on all test machines - [ ] npm configured and working - [ ] Internet connection verified - [ ] Screen capture software ready ### Documentation Preparation - [ ] Create test results folder with timestamp - [ ] Prepare screenshots folder - [ ] Open text editor for notes - [ ] Have this checklist printed or on second screen --- ## Test Session 1: Fresh Installation (Ubuntu 24.04 + GPU 6GB+) ### Test Environment - **OS**: Ubuntu 24.04 LTS - **GPU**: NVIDIA GPU with 6GB+ VRAM - **Date**: ________________ - **Tester**: ________________ - **Duration**: ________________ ### Pre-Test System Check ```bash # Document system information uname -a cat /etc/os-release | grep PRETTY_NAME nvidia-smi --query-gpu=name,memory.total --format=csv node --version npm --version ldd --version | head -1 ``` **System Info** (fill in): - Kernel: ________________ - OS: ________________ - GPU: ________________ - GPU VRAM: ________________ - Node: ________________ - npm: ________________ - GLIBC: ________________ ### Installation Steps #### Step 1: Clean Environment ```bash # Remove any existing installation npm uninstall -g swictation 2>/dev/null || true rm -rf ~/.config/swictation rm -rf ~/.local/share/swictation rm -rf ~/.cache/swictation rm -rf ~/.config/systemd/user/swictation*.service ``` **Verification**: - [ ] No swictation command found: `which swictation` returns nothing - [ ] No directories exist - [ ] No service files exist #### Step 2: Install Package ```bash # Install from npm npm install -g swictation@0.3.0 ``` **Time Started**: ________________ **Time Completed**: ________________ **Duration**: ________________ **Observations During Install**: - [ ] Platform check message shown - [ ] GLIBC check passed (no warnings) - [ ] Binary permissions messages shown (✓ for each binary) - [ ] Directory creation messages shown (✓ for each directory) - [ ] GPU detection message shown: "✓ NVIDIA GPU detected!" - [ ] GPU library download initiated - [ ] Download URL displayed - [ ] Download progress or completion message - [ ] Extraction message: "✓ Extracted GPU libraries" - [ ] GPU acceleration enabled message - [ ] ORT detection message: "✓ Found ONNX Runtime (GPU-enabled)" - [ ] Service file generation messages - [ ] Dependency check output - [ ] System detection summary shown - [ ] Model recommendation shown: **1.1B** - [ ] Next steps displayed **Screenshot**: `01-installation-output.png` #### Step 3: Verify Console Output **Expected Messages** (check all that appear): - [ ] "🚀 Setting up Swictation..." - [ ] "✓ Set execute permissions for swictation-daemon" - [ ] "✓ Set execute permissions for swictation-ui" - [ ] "✓ Set execute permissions for swictation" - [ ] "✓ Set execute permissions for swictation-daemon.bin" - [ ] "✓ Created directory: ~/.config/swictation" - [ ] "✓ Created directory: ~/.local/share/swictation" - [ ] "✓ Created directory: ~/.local/share/swictation/models" - [ ] "✓ Created directory: ~/.cache/swictation" - [ ] "✓ NVIDIA GPU detected!" - [ ] "📦 Downloading GPU acceleration libraries..." - [ ] "✓ Downloaded GPU libraries" - [ ] "✓ Extracted GPU libraries" - [ ] "✓ GPU acceleration enabled!" - [ ] "🔍 Detecting ONNX Runtime library path..." - [ ] "✓ Found ONNX Runtime (GPU-enabled)" - [ ] "⚙️ Generating systemd service files..." - [ ] "✓ Generated daemon service" - [ ] "✓ Installed UI service" - [ ] "✨ Swictation installed successfully!" - [ ] "📊 System Detection:" - [ ] GPU name and VRAM shown - [ ] "🎯 Recommended Model: 1.1B" - [ ] "62x realtime speed on GPU" - [ ] Next steps with commands **Warnings/Errors** (should be none): - [ ] No red error messages - [ ] No unexpected warnings #### Step 4: Verify File System ```bash # Check directories ls -la ~/.config/swictation ls -la ~/.local/share/swictation ls -la ~/.local/share/swictation/models ls -la ~/.cache/swictation # Check binaries NPM_ROOT=$(npm root -g) ls -la $NPM_ROOT/swictation/bin/ ls -la $NPM_ROOT/swictation/lib/native/ # Check permissions stat -c '%A %n' $NPM_ROOT/swictation/bin/swictation stat -c '%A %n' $NPM_ROOT/swictation/bin/swictation-daemon stat -c '%A %n' $NPM_ROOT/swictation/bin/swictation-ui stat -c '%A %n' $NPM_ROOT/swictation/lib/native/swictation-daemon.bin # Check service files ls -la ~/.config/systemd/user/swictation*.service cat ~/.config/systemd/user/swictation-daemon.service ``` **File System Verification**: - [ ] All directories created: `~/.config/swictation`, `~/.local/share/swictation`, models, cache - [ ] Binaries present in `bin/` directory - [ ] Binaries have execute permission (755): `-rwxr-xr-x` - [ ] Native library present: `lib/native/swictation-daemon.bin` - [ ] GPU libraries present: `lib/native/libonnxruntime.so` and CUDA libraries - [ ] Service files exist: `swictation-daemon.service`, `swictation-ui.service` **Screenshot**: `02-filesystem-verification.png` #### Step 5: Verify Service File Content ```bash # Check daemon service cat ~/.config/systemd/user/swictation-daemon.service | grep -E "ExecStart|ORT_DYLIB_PATH|LD_LIBRARY_PATH" ``` **Service File Verification**: - [ ] `ExecStart` points to correct npm installation path (no `__INSTALL_DIR__`) - [ ] `ORT_DYLIB_PATH` is set to actual path (no `__ORT_DYLIB_PATH__` placeholder) - [ ] ORT_DYLIB_PATH points to bundled library in npm package - [ ] `LD_LIBRARY_PATH` includes CUDA paths: `/usr/local/cuda/lib64`, `/usr/local/cuda-12.9/lib64` - [ ] `LD_LIBRARY_PATH` includes npm native library path - [ ] `CUDA_HOME` is set to `/usr/local/cuda` - [ ] `RUST_LOG` is set to `info` **Screenshot**: `03-service-file-content.png` #### Step 6: Test Command Availability ```bash # Test CLI commands swictation --version swictation help which swictation which swictation-daemon which swictation-ui ``` **Command Verification**: - [ ] `swictation --version` shows version 0.3.0 - [ ] `swictation help` displays help information - [ ] All binaries found in PATH - [ ] No permission errors **Screenshot**: `04-command-verification.png` #### Step 7: Document Model Recommendation **Model Recommendation Details**: - Detected GPU: ________________ - Detected VRAM: ________________ - Recommended Model: ________________ - Reason Given: ________________ - Download Size: ________________ - Performance Note: ________________ **Expectations Met**: - [ ] Model recommendation is 1.1B for 6GB+ GPU - [ ] Reason mentions GPU name and VRAM - [ ] Performance note mentions "62x realtime speed on GPU" ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Issues Found**: 1. ________________ 2. ________________ 3. ________________ **Screenshots Captured**: - [ ] 01-installation-output.png - [ ] 02-filesystem-verification.png - [ ] 03-service-file-content.png - [ ] 04-command-verification.png **Sign-off**: - Tester: ________________ - Date: ________________ - Time: ________________ --- ## Test Session 2: Fresh Installation (Ubuntu 24.04 + GPU 2-4GB) ### Test Environment - **OS**: Ubuntu 24.04 LTS - **GPU**: NVIDIA GPU with 2-4GB VRAM - **Date**: ________________ - **Tester**: ________________ ### Expected Differences from Session 1 - Model recommendation should be **0.6B** instead of 1.1B - Reason should mention "limited VRAM" ### Installation Steps (Follow same steps as Session 1) **Key Verification Points**: - [ ] GPU detected correctly - [ ] VRAM amount shown correctly (2-4GB) - [ ] Recommended model: **0.6B** - [ ] Reason: "GPU detected but limited VRAM" - [ ] Description: "Lighter model for lower VRAM systems" ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Test Session 3: Fresh Installation (Ubuntu 24.04 CPU-Only) ### Test Environment - **OS**: Ubuntu 24.04 LTS - **GPU**: None (or nvidia-smi not available) - **CPU Cores**: ________________ - **RAM**: ________________ - **Date**: ________________ - **Tester**: ________________ ### Expected Behavior - No GPU detection - CPU/RAM-based model recommendation - No GPU library download - Fallback to Python ONNX Runtime detection ### Installation Steps (Follow same steps as Session 1) **Key Verification Points**: - [ ] Message: "ℹ No NVIDIA GPU detected - skipping GPU library download" - [ ] Message: "CPU-only mode will be used" - [ ] No GPU library download attempted - [ ] Model recommendation based on CPU cores and RAM - [ ] If 8+ cores and 16GB+ RAM: Recommended model is **1.1B (INT8)** - [ ] If fewer cores/RAM: Recommended model is **0.6B** - [ ] Reason mentions CPU cores and RAM **ORT Detection**: - [ ] Bundled GPU library not found (expected) - [ ] Warning: "Falling back to system Python installation" - [ ] Python ONNX Runtime path detected OR - [ ] Warning to install: `pip3 install onnxruntime-gpu` ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Test Session 4: Ubuntu 22.04 Compatibility Warning ### Test Environment - **OS**: Ubuntu 22.04 LTS - **GLIBC**: 2.35 (expected) - **Date**: ________________ - **Tester**: ________________ ### Expected Behavior - Installation proceeds but with GLIBC warning - Warning about Ubuntu 22.04 not supported ### Installation Steps ```bash # Install on Ubuntu 22.04 npm install -g swictation@0.3.0 ``` **Key Verification Points**: - [ ] Warning: "⚠ INCOMPATIBLE GLIBC VERSION" - [ ] Message: "Detected GLIBC 2.35 (need 2.39+)" - [ ] Message: "Swictation requires Ubuntu 24.04 LTS or newer" - [ ] Message: "Ubuntu 22.04 is NOT supported due to GLIBC 2.35" - [ ] List of supported distributions shown - [ ] Message: "Installation will continue but binaries may not work" - [ ] Installation completes (exit code 0) - [ ] All files created normally ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Test Session 5: Upgrade from 0.2.x to 0.3.0 ### Test Environment - **OS**: Ubuntu 24.04 LTS - **Previous Version**: 0.2.x - **Date**: ________________ - **Tester**: ________________ ### Pre-Upgrade Setup ```bash # Install old version first (if available) npm install -g swictation@0.2.2 # Verify old installation swictation --version ls ~/.config/systemd/user/swictation*.service ``` **Old Installation Verified**: - [ ] Version 0.2.2 installed - [ ] Old service files exist - [ ] Old configuration exists ### Upgrade Steps ```bash # Upgrade to 0.3.0 npm install -g swictation@0.3.0 ``` **Key Verification Points**: - [ ] Old directories preserved - [ ] Old configuration files preserved - [ ] New service files generated - [ ] Old service files still present (or replaced) - [ ] No data loss - [ ] Version command shows 0.3.0 - [ ] All new features available **Check for Conflicts**: - [ ] No file permission errors - [ ] No directory conflicts - [ ] Service files updated correctly - [ ] Binary paths updated ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Test Session 6: Reinstall (Idempotency Test) ### Test Environment - **OS**: Ubuntu 24.04 LTS - **Date**: ________________ - **Tester**: ________________ ### Test Steps ```bash # Install once npm install -g swictation@0.3.0 # Capture state ls -la ~/.config/swictation stat ~/.config/systemd/user/swictation-daemon.service # Reinstall immediately npm install -g swictation@0.3.0 # Compare state ls -la ~/.config/swictation stat ~/.config/systemd/user/swictation-daemon.service ``` **Idempotency Verification**: - [ ] No errors on second installation - [ ] No "file exists" errors - [ ] No duplicate files created - [ ] Service files regenerated correctly - [ ] Binary permissions reset to 755 - [ ] Same result as first installation - [ ] Exit code 0 ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Test Session 7: Error Condition Testing ### Test 7A: Network Failure During GPU Library Download **Setup**: ```bash # Disconnect network or use firewall to block GitHub sudo iptables -A OUTPUT -d github.com -j DROP ``` **Test Steps**: ```bash npm install -g swictation@0.3.0 ``` **Expected Behavior**: - [ ] Warning: "⚠ Failed to download GPU libraries" - [ ] Message: "Continuing with CPU-only mode" - [ ] Manual download URL provided - [ ] Installation completes successfully (exit code 0) - [ ] No GPU libraries in lib/native/ - [ ] Rest of installation proceeds normally **Cleanup**: ```bash sudo iptables -D OUTPUT -d github.com -j DROP ``` **Result**: [ ] PASS [ ] FAIL --- ### Test 7B: No Write Permission to Config Directory **Setup**: ```bash mkdir -p ~/.config chmod 555 ~/.config # Read and execute only ``` **Test Steps**: ```bash npm install -g swictation@0.3.0 ``` **Expected Behavior**: - [ ] Warning about unable to create `~/.config/swictation` - [ ] Installation continues - [ ] Other directories created successfully - [ ] Exit code 0 (success) - [ ] User advised to fix permissions manually **Cleanup**: ```bash chmod 755 ~/.config ``` **Result**: [ ] PASS [ ] FAIL --- ### Test 7C: Missing Python (No ORT Fallback) **Setup**: ```bash # Remove bundled ORT library to force Python detection NPM_ROOT=$(npm root -g) rm -f $NPM_ROOT/swictation/lib/native/libonnxruntime.so # Ensure Python is not in PATH (or rename python3) sudo mv /usr/bin/python3 /usr/bin/python3.bak ``` **Test Steps**: ```bash npm install -g swictation@0.3.0 ``` **Expected Behavior**: - [ ] Warning: "⚠️ Could not detect ONNX Runtime" - [ ] Message: "📦 Please install onnxruntime-gpu for optimal performance" - [ ] Installation command provided: `pip3 install onnxruntime-gpu` - [ ] Warning: "The daemon will not work correctly without this library!" - [ ] Installation completes (exit code 0) - [ ] Service file contains placeholder: `__ORT_DYLIB_PATH__` **Cleanup**: ```bash sudo mv /usr/bin/python3.bak /usr/bin/python3 ``` **Result**: [ ] PASS [ ] FAIL --- ## Test Session 8: Console Output Quality Review ### Test Environment - **Date**: ________________ - **Tester**: ________________ ### Visual Quality Checklist Run a standard installation and evaluate: **Color Usage**: - [ ] Green (✓) used for success messages - [ ] Yellow (⚠) used for warnings - [ ] Red (✗) used for errors (if any) - [ ] Cyan/Blue used for informational messages - [ ] Colors appropriate and not excessive **Formatting**: - [ ] Clear section headers (🚀, 📦, ⚙️, etc.) - [ ] Consistent indentation - [ ] Proper spacing between sections - [ ] Progress indicators clear - [ ] File paths clearly shown **Information Completeness**: - [ ] Every action clearly announced - [ ] File paths shown for created files - [ ] Hardware detection results displayed - [ ] Model recommendation with clear rationale - [ ] Next steps with copy-pasteable commands - [ ] Help reference provided **Readability**: - [ ] No walls of text - [ ] Important information stands out - [ ] Technical jargon explained - [ ] Commands formatted distinctly - [ ] Summary at end is clear **User Experience**: - [ ] Installation feels professional - [ ] Progress is apparent - [ ] User knows what's happening - [ ] Errors (if any) have solutions - [ ] Next steps are actionable **Overall Score**: ___/10 **Comments**: ________________ ________________ ________________ ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] NEEDS_IMPROVEMENT **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Test Session 9: Service File Validation ### Test Environment - **OS**: Ubuntu 24.04 LTS - **Date**: ________________ - **Tester**: ________________ ### Validation Steps ```bash # Install package npm install -g swictation@0.3.0 # Validate service file syntax systemd-analyze verify ~/.config/systemd/user/swictation-daemon.service systemd-analyze verify ~/.config/systemd/user/swictation-ui.service # Try loading services (don't start them) systemctl --user daemon-reload systemctl --user status swictation-daemon.service systemctl --user status swictation-ui.service ``` **Service File Validation**: - [ ] `systemd-analyze verify` passes for daemon service - [ ] `systemd-analyze verify` passes for UI service - [ ] No syntax errors reported - [ ] Services recognized by systemd - [ ] Status shows "loaded" (not necessarily active) - [ ] No missing dependencies reported **Manual Service File Inspection**: - [ ] All paths are absolute (no relative paths) - [ ] No placeholder variables remain (`__INSTALL_DIR__`, `__ORT_DYLIB_PATH__`) - [ ] ExecStart points to valid binary - [ ] Environment variables properly formatted - [ ] Restart policy is reasonable - [ ] Service dependencies correct (Wants=swictation-ui.service) ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Test Session 10: Full Integration Test ### Test Environment - **OS**: Ubuntu 24.04 LTS - **GPU**: NVIDIA GPU (any VRAM) - **Date**: ________________ - **Tester**: ________________ ### Complete Workflow Test This test validates the entire installation → setup → usage workflow. #### Step 1: Clean Installation ```bash npm install -g swictation@0.3.0 ``` **Verified**: [ ] Installation successful #### Step 2: Download Model ```bash # Install huggingface_hub if needed pip3 install "huggingface_hub[cli]" # Download recommended model (use what was recommended) swictation download-model 1.1b # or 0.6b based on recommendation ``` **Verified**: - [ ] Model download command works - [ ] Model downloaded to `~/.local/share/swictation/models/` - [ ] No errors during download #### Step 3: Run Setup ```bash swictation setup ``` **Verified**: - [ ] Setup command runs without errors - [ ] Configuration created/updated - [ ] Services registered with systemd #### Step 4: Start Service ```bash swictation start ``` **Verified**: - [ ] Service starts successfully - [ ] No immediate crashes - [ ] `systemctl --user status swictation-daemon.service` shows active #### Step 5: Check Service Status ```bash swictation status systemctl --user status swictation-daemon.service journalctl --user -u swictation-daemon.service -n 50 ``` **Verified**: - [ ] Daemon is running - [ ] No error messages in logs - [ ] Service is stable (not restarting) #### Step 6: Test Toggle (if applicable) ```bash swictation toggle # Wait a few seconds swictation toggle ``` **Verified**: - [ ] Toggle command works - [ ] Recording starts/stops - [ ] No crashes #### Step 7: Stop Service ```bash swictation stop ``` **Verified**: - [ ] Service stops cleanly - [ ] No error messages - [ ] Status shows inactive ### Test Result **Overall Result**: [ ] PASS [ ] FAIL [ ] PARTIAL **Issues Found**: ________________ ________________ ________________ **Sign-off**: - Tester: ________________ - Date: ________________ --- ## Final Summary ### Test Session Results | Session | Description | Result | Tester | Date | |---------|-------------|--------|--------|------| | 1 | Fresh Install (GPU 6GB+) | [ ] P [ ] F | _____ | _____ | | 2 | Fresh Install (GPU 2-4GB) | [ ] P [ ] F | _____ | _____ | | 3 | Fresh Install (CPU-Only) | [ ] P [ ] F | _____ | _____ | | 4 | Ubuntu 22.04 Warning | [ ] P [ ] F | _____ | _____ | | 5 | Upgrade 0.2.x → 0.3.0 | [ ] P [ ] F | _____ | _____ | | 6 | Reinstall Idempotency | [ ] P [ ] F | _____ | _____ | | 7A | Network Failure | [ ] P [ ] F | _____ | _____ | | 7B | Permission Error | [ ] P [ ] F | _____ | _____ | | 7C | Missing Python | [ ] P [ ] F | _____ | _____ | | 8 | Console Output Quality | [ ] P [ ] F | _____ | _____ | | 9 | Service Validation | [ ] P [ ] F | _____ | _____ | | 10 | Full Integration | [ ] P [ ] F | _____ | _____ | ### Overall Assessment **Total Tests Run**: _____ **Tests Passed**: _____ **Tests Failed**: _____ **Pass Rate**: _____% ### Critical Issues Found 1. ________________ 2. ________________ 3. ________________ ### Non-Critical Issues Found 1. ________________ 2. ________________ 3. ________________ ### Recommendations ________________ ________________ ________________ ### Release Readiness **Is version 0.3.0 ready for release?** [ ] YES [ ] NO [ ] CONDITIONAL **Conditions** (if conditional): ________________ ________________ ### Sign-Off **QA Lead**: ________________ **Date**: ________________ **Signature**: ________________ **Development Lead**: ________________ **Date**: ________________ **Signature**: ________________ --- ## Appendix: Quick Command Reference ### Installation Commands ```bash npm install -g swictation@0.3.0 npm uninstall -g swictation ``` ### Verification Commands ```bash swictation --version swictation help which swictation ls -la ~/.config/swictation ls -la ~/.local/share/swictation systemctl --user status swictation-daemon.service ``` ### Cleanup Commands ```bash npm uninstall -g swictation rm -rf ~/.config/swictation rm -rf ~/.local/share/swictation rm -rf ~/.cache/swictation rm -f ~/.config/systemd/user/swictation*.service systemctl --user daemon-reload ``` ### Diagnostic Commands ```bash # System info uname -a cat /etc/os-release ldd --version | head -1 node --version npm --version # GPU info nvidia-smi nvidia-smi --query-gpu=name,memory.total --format=csv # Service logs journalctl --user -u swictation-daemon.service -n 100 journalctl --user -u swictation-ui.service -n 100 # File locations npm root -g readlink -f $(which swictation) ``` --- **Document Version**: 1.0 **Last Updated**: 2025-11-13 **Status**: Ready for Manual Testing