11 KiB
AutoQA Migration Testing Guide
🚀 Comprehensive guide for running migration tests with AutoQA to verify data persistence across Jan application upgrades.
Table of Contents
- Overview
- Prerequisites
- Basic Workflow (Base Test Cases)
- Migration Testing
- Migration Test Cases
- Running Migration Tests
- Advanced Configuration
- Troubleshooting
- Examples
Overview
AutoQA provides comprehensive testing capabilities for the Jan application, including:
- Base Test Cases: Standard functionality testing (assistants, models, extensions, etc.)
- Migration Testing: Verify data persistence and functionality across application upgrades
- Batch Mode: Run multiple test phases efficiently
- Screen Recording: Capture test execution for debugging
- ReportPortal Integration: Upload test results and artifacts
Prerequisites
Before running migration tests, ensure you have:
- Python Environment: Python 3.8+ with required packages
- Jan Installers: Both old and new version installers
- Test Environment: Clean system or virtual machine
- Dependencies: All AutoQA requirements installed
# Install dependencies
pip install -r requirements.txt
Basic Workflow (Base Test Cases)
Running Standard Tests
Base test cases verify core Jan functionality without version upgrades:
# Run all base tests
python main.py
# Run specific test directory
python main.py --tests-dir "tests/base"
# Run with custom configuration
python main.py \
--max-turns 50
Available Base Test Cases
| Test Case | File | Description |
|---|---|---|
| Default Assistant | tests/base/default-jan-assistant.txt |
Verify Jan default assistant exists |
| Extensions | tests/base/extensions.txt |
Check available extensions |
| Hardware Info | tests/base/hardware-info.txt |
Verify hardware information display |
| Model Providers | tests/base/providers-available.txt |
Check model provider availability |
| User Chat | tests/base/user-start-chatting.txt |
Test basic chat functionality |
| MCP Server | tests/base/enable-mcp-server.txt |
Test experimental features |
Migration Testing
Migration testing verifies that user data and configurations persist correctly when upgrading Jan from one version to another.
Migration Test Flow
1. Install OLD version → Run SETUP tests
2. Install NEW version → Run VERIFICATION tests
3. Compare results and verify persistence
Migration Test Approaches
Individual Mode
- Runs one test case at a time
- More granular debugging
- Better for development and troubleshooting
Batch Mode
- Runs all setup tests first, then upgrades, then all verification tests
- More realistic user experience
- Faster execution for multiple test cases
Migration Test Cases
Available Migration Test Cases
| Test Case Key | Name | Description | Setup Tests | Verification Tests |
|---|---|---|---|---|
models |
Model Downloads Migration | Tests downloaded models persist after upgrade | models/setup-download-models.txt |
models/verify-model-persistence.txt |
assistants |
Custom Assistants Migration | Tests custom assistants persist after upgrade | assistants/setup-create-assistants.txt |
assistants/verify-create-assistant-persistence.txt |
assistants-complete |
Complete Assistants Migration | Tests both creation and chat functionality | Multiple setup tests | Multiple verification tests |
Test Case Details
Models Migration Test
- Setup: Downloads models, configures settings, tests functionality
- Verification: Confirms models persist, settings maintained, functionality intact
Assistants Migration Test
- Setup: Creates custom assistants with specific configurations
- Verification: Confirms assistants persist with correct metadata and settings
Assistants Complete Migration Test
- Setup: Creates assistants AND tests chat functionality
- Verification: Confirms both creation and chat data persist correctly
Running Migration Tests
Basic Migration Test Command
python main.py \
--enable-migration-test \
--migration-test-case "assistants" \
--old-version "path/to/old/installer.exe" \
--new-version "path/to/new/installer.exe" \
--max-turns 65
Batch Mode Migration Test
python main.py \
--enable-migration-test \
--migration-test-case "assistants-complete" \
--migration-batch-mode \
--old-version "path/to/old/installer.exe" \
--new-version "path/to/new/installer.exe" \
--max-turns 75
Command Line Arguments
| Argument | Description | Required | Example |
|---|---|---|---|
--enable-migration-test |
Enable migration testing mode | Yes | --enable-migration-test |
--migration-test-case |
Specific test case to run | Yes | --migration-test-case "assistants" |
--migration-batch-mode |
Use batch mode for multiple tests | No | --migration-batch-mode |
--old-version |
Path to old version installer | Yes | --old-version "C:\path\to\old.exe" |
--new-version |
Path to new version installer | Yes | --new-version "C:\path\to\new.exe" |
--max-turns |
Maximum turns per test phase | No | --max-turns 75 |
Environment Variables
You can also use environment variables for cleaner commands:
# Set environment variables
export OLD_VERSION="C:\path\to\old\installer.exe"
export NEW_VERSION="C:\path\to\new\installer.exe"
export MIGRATION_TEST_CASE="assistants"
export MAX_TURNS=65
# Run with environment variables
python main.py \
--enable-migration-test \
--migration-test-case "$MIGRATION_TEST_CASE" \
--old-version "$OLD_VERSION" \
--new-version "$NEW_VERSION" \
--max-turns "$MAX_TURNS"
Advanced Configuration
Custom Model Configuration
python main.py \
--enable-migration-test \
--migration-test-case "assistants" \
--old-version "path/to/old.exe" \
--new-version "path/to/new.exe" \
--model-name "gpt-4" \
--model-provider "openai" \
--model-base-url "https://api.openai.com/v1" \
--max-turns 80
ReportPortal Integration
python main.py \
--enable-migration-test \
--migration-test-case "assistants" \
--old-version "path/to/old.exe" \
--new-version "path/to/new.exe" \
--enable-reportportal \
--rp-token "YOUR_TOKEN" \
--rp-project "jan_migration_tests" \
--max-turns 65
Custom Test Directory
python main.py \
--enable-migration-test \
--migration-test-case "assistants" \
--old-version "path/to/old.exe" \
--new-version "path/to/new.exe" \
--tests-dir "custom_tests" \
--max-turns 65
Examples
Example 1: Basic Assistants Migration Test
# Test custom assistants persistence
python main.py \
--enable-migration-test \
--migration-test-case "assistants" \
--old-version "C:\Users\ziczac computer\Downloads\Jan_0.6.6_x64-setup.exe" \
--new-version "C:\Users\ziczac computer\Downloads\Jan_0.6.7_x64-setup.exe" \
--max-turns 65
What this does:
- Installs Jan 0.6.6
- Creates custom assistants (Python Tutor, Creative Writer)
- Upgrades to Jan 0.6.7
- Verifies assistants persist with correct settings
Example 2: Complete Assistants Migration (Batch Mode)
# Test both creation and chat functionality
python main.py \
--enable-migration-test \
--migration-test-case "assistants-complete" \
--migration-batch-mode \
--old-version "C:\Users\ziczac computer\Downloads\Jan_0.6.6_x64-setup.exe" \
--new-version "C:\Users\ziczac computer\Downloads\Jan_0.6.7_x64-setup.exe" \
--max-turns 75
What this does:
- Installs Jan 0.6.6
- Creates custom assistants
- Tests chat functionality with assistants
- Upgrades to Jan 0.6.7
- Verifies both creation and chat data persist
Example 3: Models Migration Test
# Test model downloads and settings persistence
python main.py \
--enable-migration-test \
--migration-test-case "models" \
--old-version "C:\Users\ziczac computer\Downloads\Jan_0.6.6_x64-setup.exe" \
--new-version "C:\Users\ziczac computer\Downloads\Jan_0.6.7_x64-setup.exe" \
--max-turns 60
What this does:
- Installs Jan 0.6.6
- Downloads models (jan-nano-gguf, gemma-2-2b-instruct-gguf)
- Configures model settings
- Upgrades to Jan 0.6.7
- Verifies models persist and settings maintained
Troubleshooting
Common Issues
1. Installer Path Issues
# Use absolute paths with proper escaping
--old-version "C:\Users\ziczac computer\Downloads\Jan_0.6.6_x64-setup.exe"
--new-version "C:\Users\ziczac computer\Downloads\Jan_0.6.7_x64-setup.exe"
2. Turn Limit Too Low
# Increase max turns for complex tests
--max-turns 75 # Instead of default 30
3. Test Case Not Found
# Verify test case key exists
--migration-test-case "assistants" # Valid: models, assistants, assistants-complete
4. Permission Issues
# Run as administrator on Windows
# Use sudo on Linux/macOS for system-wide installations
Debug Mode
Enable detailed logging for troubleshooting:
# Set logging level
export PYTHONPATH=.
export LOG_LEVEL=DEBUG
# Run with verbose output
python main.py \
--enable-migration-test \
--migration-test-case "assistants" \
--old-version "path/to/old.exe" \
--new-version "path/to/new.exe" \
--max-turns 65
Test Results
Migration tests generate detailed results:
- Setup Phase Results: Success/failure for each setup test
- Upgrade Results: Installation success status
- Verification Phase Results: Success/failure for each verification test
- Overall Success: Combined result from all phases
Output Files
Tests generate several output files:
- Trajectories:
trajectories/- Agent interaction logs - Recordings:
recordings/- Screen recordings (MP4) - Logs: Console output with detailed execution information
Best Practices
1. Test Environment
- Use clean virtual machines or fresh system installations
- Ensure sufficient disk space for installers and test data
- Close other applications during testing
2. Test Data
- Use realistic test data (assistant names, descriptions, instructions)
- Test with multiple models and configurations
- Verify edge cases and error conditions
3. Execution
- Start with individual mode for debugging
- Use batch mode for production testing
- Monitor system resources during execution
4. Validation
- Verify test results manually when possible
- Check generated artifacts (trajectories, recordings)
- Compare expected vs. actual behavior
Next Steps
- Start Simple: Begin with basic migration tests
- Add Complexity: Gradually test more complex scenarios
- Automate: Integrate into CI/CD pipelines
- Extend: Add new test cases for specific features
- Optimize: Refine test parameters and configurations
For more information, see the main README.md and explore the test files in the tests/ directory.