AutoQA Scripts
This directory contains platform-specific scripts used by the AutoQA GitHub Actions workflow. These scripts help maintain a cleaner and more maintainable workflow file by extracting complex inline scripts into separate files.
Directory Structure
autoqa/scripts/
├── setup_permissions.sh # Setup executable permissions for all scripts
├── windows_cleanup.ps1 # Windows: Clean existing Jan installations
├── windows_download.ps1 # Windows: Download Jan app installer
├── windows_install.ps1 # Windows: Install Jan app
├── windows_post_cleanup.ps1 # Windows: Post-test cleanup
├── run_tests.ps1 # Windows: Run AutoQA tests
├── ubuntu_cleanup.sh # Ubuntu: Clean existing Jan installations
├── ubuntu_download.sh # Ubuntu: Download Jan app (.deb)
├── ubuntu_install.sh # Ubuntu: Install Jan app
├── ubuntu_post_cleanup.sh # Ubuntu: Post-test cleanup
├── macos_cleanup.sh # macOS: Clean existing Jan installations
├── macos_download.sh # macOS: Download Jan app (.dmg)
├── macos_install.sh # macOS: Install Jan app
├── macos_post_cleanup.sh # macOS: Post-test cleanup
├── run_tests.sh # Unix: Run AutoQA tests (Ubuntu/macOS)
├── README.md # This file
└── PERMISSIONS.md # Permission setup documentation
Script Functions
Windows Scripts (.ps1)
- windows_cleanup.ps1: Removes existing Jan installations and kills running processes
- windows_download.ps1: Downloads Jan installer with priority-based URL selection
- windows_install.ps1: Installs Jan app and sets environment variables
- windows_post_cleanup.ps1: Comprehensive cleanup after tests including uninstallation
- run_tests.ps1: Runs the AutoQA Python tests with proper arguments
Ubuntu Scripts (.sh)
- ubuntu_cleanup.sh: Removes existing Jan installations and kills running processes
- ubuntu_download.sh: Downloads Jan .deb package with priority-based URL selection
- ubuntu_install.sh: Installs Jan .deb package and sets environment variables
- ubuntu_post_cleanup.sh: Comprehensive cleanup after tests including package removal
macOS Scripts (.sh)
- macos_cleanup.sh: Removes existing Jan installations and kills running processes
- macos_download.sh: Downloads Jan .dmg package with priority-based URL selection
- macos_install.sh: Mounts DMG, extracts .app, and installs to Applications
- macos_post_cleanup.sh: Comprehensive cleanup after tests
Common Scripts
- setup_permissions.sh: Automatically sets executable permissions for all shell scripts
- run_tests.sh: Platform-agnostic test runner for Unix-based systems (Ubuntu/macOS)
Usage in GitHub Actions
These scripts are called from the .github/workflows/autoqa.yml workflow file:
# Setup permissions first (Ubuntu/macOS)
- name: Setup script permissions
run: |
chmod +x autoqa/scripts/setup_permissions.sh
./autoqa/scripts/setup_permissions.sh
# Then use scripts without chmod
- name: Clean existing Jan installations
run: |
./autoqa/scripts/ubuntu_cleanup.sh
# Windows example (no chmod needed)
- name: Clean existing Jan installations
shell: powershell
run: |
.\autoqa\scripts\windows_cleanup.ps1
Benefits
- Maintainability: Complex scripts are in separate files, easier to read and modify
- Reusability: Scripts can be reused across different workflows or locally
- Testing: Scripts can be tested independently
- Version Control: Better diff tracking for script changes
- Platform Consistency: Similar functionality across platforms in separate files
Development
When modifying these scripts:
- Test them locally on the respective platforms
- Ensure proper error handling and exit codes
- Follow platform-specific best practices
- Update this README if new scripts are added
Script Parameters
Windows Scripts
- Most scripts accept
-IsNightlyparameter to handle nightly vs stable builds - Download script accepts multiple URL sources with priority ordering
Unix Scripts
- Most scripts accept positional parameters for nightly flag and URLs
- Scripts use
$1,$2, etc. for parameter access
Environment Variables
Scripts set these environment variables for subsequent workflow steps:
JAN_APP_URL: The selected Jan app download URLIS_NIGHTLY: Boolean flag indicating if it's a nightly buildJAN_APP_PATH: Path to the installed Jan executableJAN_PROCESS_NAME: Name of the Jan process for monitoring