Skip to content

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:

  1. Run the command on a clean system (or a fresh INSTALL_DIRrm -rf ~/.agents-fleet first if testing locally)
  2. Compare actual behavior to "Expected"
  3. Tick the checkbox in this file if behavior matches
  4. 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

#CommandExpectedDone?
S1curl -fsSL https://raw.githubusercontent.com/vriveras/agents-fleet/master/install.sh | bashLatest installed, no menu, exit 0. Output should be byte-identical to today's installer.[ ]
S2bash 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.[ ]
S3bash install.sh --latestLatest installed silently. No menu. Identical output to S1.[ ]
S4bash install.sh --version v0.21.0v0.21.0 installed exactly. agents-fleet --version afterwards prints 0.21.0.[ ]
S5bash install.sh --version 0.21.0 (no v prefix)Normalized to v0.21.0; installed; agents-fleet --version prints 0.21.0.[ ]
S6bash install.sh --version v999.999.999Script exits with non-zero (specifically 2 for upstream error). Error message names the bad tag.[ ]
S7bash install.sh --version 'evil; rm -rf ~'Script exits 1 with "Invalid tag format" message. Verify $HOME is intact afterwards.[ ]
S8bash install.sh --list-versionsNumbered list of up to 10 stable releases printed to stdout. Exit 0. agents-fleet --version unchanged.[ ]
S9bash install.sh --skip-fleet --version v0.21.0Skip wins (per FR-8 precedence). No install happens. Whatever was installed before stays.[ ]
S10bash install.sh < /dev/null (force non-TTY on a TTY-capable terminal)Silent latest install — same as S1.[ ]
S11Interrupt with Ctrl-C during menu promptClean exit (non-zero). ls /tmp/agents-fleet-install-* shows no leak (FR-19 trap fired).[ ]

PowerShell scenarios — install.ps1

#CommandExpectedDone?
P1irm https://raw.githubusercontent.com/vriveras/agents-fleet/master/install.ps1 | iexLatest 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 -LatestLatest installed silently. No menu. Identical output to P1.[ ]
P4.\install.ps1 -Version v0.21.0v0.21.0 installed. agents-fleet --version prints 0.21.0.[ ]
P5.\install.ps1 -Version 0.21.0Normalized to v0.21.0; installed.[ ]
P6.\install.ps1 -Version v999.999.999Non-zero exit. Error message names the bad tag.[ ]
P7.\install.ps1 -ListVersionsNumbered list printed; exit 0; agents-fleet --version unchanged.[ ]
P8.\install.ps1 -SkipFleet -Version v0.21.0Skip wins; no install.[ ]
P9Run 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)

#CheckDone?
R1bash install.sh --help shows the new flags AND the existing flags[ ]
R2Get-Help .\install.ps1 shows the new switches AND the existing ones[ ]
R3bash install.sh --skip-node --skip-gh --skip-fleet exits 0 without doing anything (existing skip-all path)[ ]
R4After a fresh install via the menu, re-running bash install.sh (default) shows "already up to date"[ ]
R5npm test (in the repo) — full vitest suite passes[ ]
R6npx vitest run src/providers/parity — parity tests pass[ ]
R7npm 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.