Installer Smoke-Test Matrix
Run all of these scenarios before tagging the next release. They cover the version-selector feature (added 2026-05-17) and back-compatible default behavior.
How to use this checklist
For each scenario:
- Run the command on a clean system (or a fresh
INSTALL_DIR—rm -rf ~/.agents-fleetfirst if testing locally) - Compare actual behavior to "Expected"
- Tick the checkbox in this file if behavior matches
- If anything fails, file an issue and re-run after fix
If any scenario fails, DO NOT tag the release.
Test platforms required
- macOS or Linux (Bash 4+; macOS default is 3.2 which IS supported — flag if you must)
- Windows 10 or 11 with Windows Terminal (PowerShell 5.1 or 7+; both should work)
Bash scenarios — install.sh
| # | Command | Expected | Done? |
|---|---|---|---|
| S1 | curl -fsSL https://raw.githubusercontent.com/vriveras/agents-fleet/master/install.sh | bash | Latest installed, no menu, exit 0. Output should be byte-identical to today's installer. | [ ] |
| S2 | bash install.sh (TTY, direct invocation) | Menu shown with up to 10 stable releases. Latest is entry #1 with (latest) marker. Pressing Enter installs entry #1. | [ ] |
| S3 | bash install.sh --latest | Latest installed silently. No menu. Identical output to S1. | [ ] |
| S4 | bash install.sh --version v0.21.0 | v0.21.0 installed exactly. agents-fleet --version afterwards prints 0.21.0. | [ ] |
| S5 | bash install.sh --version 0.21.0 (no v prefix) | Normalized to v0.21.0; installed; agents-fleet --version prints 0.21.0. | [ ] |
| S6 | bash install.sh --version v999.999.999 | Script exits with non-zero (specifically 2 for upstream error). Error message names the bad tag. | [ ] |
| S7 | bash install.sh --version 'evil; rm -rf ~' | Script exits 1 with "Invalid tag format" message. Verify $HOME is intact afterwards. | [ ] |
| S8 | bash install.sh --list-versions | Numbered list of up to 10 stable releases printed to stdout. Exit 0. agents-fleet --version unchanged. | [ ] |
| S9 | bash install.sh --skip-fleet --version v0.21.0 | Skip wins (per FR-8 precedence). No install happens. Whatever was installed before stays. | [ ] |
| S10 | bash install.sh < /dev/null (force non-TTY on a TTY-capable terminal) | Silent latest install — same as S1. | [ ] |
| S11 | Interrupt with Ctrl-C during menu prompt | Clean exit (non-zero). ls /tmp/agents-fleet-install-* shows no leak (FR-19 trap fired). | [ ] |
PowerShell scenarios — install.ps1
| # | Command | Expected | Done? |
|---|---|---|---|
| P1 | irm https://raw.githubusercontent.com/vriveras/agents-fleet/master/install.ps1 | iex | Latest installed, no menu, exit 0. Output should match today's installer exactly. | [ ] |
| P2 | .\install.ps1 (Windows Terminal, direct invocation) | Menu shown with up to 10 stable releases. Latest is entry #1. Pressing Enter installs entry #1. | [ ] |
| P3 | .\install.ps1 -Latest | Latest installed silently. No menu. Identical output to P1. | [ ] |
| P4 | .\install.ps1 -Version v0.21.0 | v0.21.0 installed. agents-fleet --version prints 0.21.0. | [ ] |
| P5 | .\install.ps1 -Version 0.21.0 | Normalized to v0.21.0; installed. | [ ] |
| P6 | .\install.ps1 -Version v999.999.999 | Non-zero exit. Error message names the bad tag. | [ ] |
| P7 | .\install.ps1 -ListVersions | Numbered list printed; exit 0; agents-fleet --version unchanged. | [ ] |
| P8 | .\install.ps1 -SkipFleet -Version v0.21.0 | Skip wins; no install. | [ ] |
| P9 | Run inside PowerShell ISE (powershell_ise.exe) | Either: menu skipped (silent-latest path takes over due to non-TTY detection) OR clear error saying ISE is unsupported. Either is acceptable — but no hang and no garbled output. (See FR-21.) | [ ] |
Regression spot-checks (run AFTER all S/P scenarios pass)
| # | Check | Done? |
|---|---|---|
| R1 | bash install.sh --help shows the new flags AND the existing flags | [ ] |
| R2 | Get-Help .\install.ps1 shows the new switches AND the existing ones | [ ] |
| R3 | bash install.sh --skip-node --skip-gh --skip-fleet exits 0 without doing anything (existing skip-all path) | [ ] |
| R4 | After a fresh install via the menu, re-running bash install.sh (default) shows "already up to date" | [ ] |
| R5 | npm test (in the repo) — full vitest suite passes | [ ] |
| R6 | npx vitest run src/providers/parity — parity tests pass | [ ] |
| R7 | npm run build — succeeds, produces dist/ | [ ] |
Sign-off
When all checkboxes above are ticked, the version-selector feature is ready for release. Tag with the next version number (likely v0.22.0 per minor-bump convention for user-facing features) and let release.yml handle the rest.