Skip to content

ci(installer): add Windows binary startup smoke tests - #878

Merged
Manuelshub merged 1 commit into
Nanle-code:masterfrom
Noobb-byte:Create-Windows-installer-smoke-tests-in-CI
Aug 31, 2026
Merged

ci(installer): add Windows binary startup smoke tests#878
Manuelshub merged 1 commit into
Nanle-code:masterfrom
Noobb-byte:Create-Windows-installer-smoke-tests-in-CI

Conversation

@Noobb-byte

Copy link
Copy Markdown
Contributor

Description

Adds Windows installer/binary smoke tests to CI. Windows ships as a .zip
release artifact (no shell installer like install.sh), so this PR validates
the actual Windows binary that users download: it must start and its core
--help / config doctor surface must work. The check is wired into the
required CI pipeline on every push/PR and made release-blocking so a broken
Windows binary can never be published.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Changes Made

  • Added tests/installer/windows_smoke.ps1: a dependency-free PowerShell smoke
    suite that runs starforge.exe in an isolated STARFORGE_CONFIG_DIR and
    asserts exit codes for --version, --help, info, and the doctor surface
    (config --help exits 0 and lists doctor). It also runs config doctor
    diagnostically: the offline schema finding must pass, while
    network/toolchain findings (Horizon, Soroban RPC, Stellar CLI on PATH) are
    reported without failing the job.
  • installer-tests.yml: new installer-windows job that builds the release
    binary (the exact artifact shipped in the .zip) and runs the suite on a
    Windows runner, uploading windows-smoke.log on failure.
  • ci.yml: the cli-windows job now also runs the suite against the debug
    binary, making the Windows smoke test required on every push/PR.
  • release.yml: the Windows build matrix entry smoke-tests the release
    binary before packaging — the check is release-blocking since the release
    job depends on build.
  • README.md: Windows x86_64 marked as supported and documented as
    smoke-tested in CI; release pipeline refuses to publish a binary that fails.
  • CI_ENFORCEMENT.md: documents the new required/release-blocking job, what it
    tests, failure visibility, and Windows support status.

Testing

How has this been tested?

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed

The PowerShell suite was validated locally against stub binaries covering all
three outcomes (all-pass, network/toolchain doctor skip, and hard failure) and
parses cleanly under both PowerShell 5.1 and PowerShell 7. The three modified
workflow files were parsed as valid YAML. End-to-end validation of the real
binary runs in the new installer-windows / cli-windows CI jobs.

Test Coverage

Describe what scenarios have been tested:

  • Happy path: binary startup (--version, --help, info) exits 0; doctor
    surface found via config --help; config doctor passes all checks.
  • Edge cases: doctor is skipped (not failed) when only network/toolchain
    findings are present on isolated runners.
  • Error handling: a failing test prints the exact command, exit code, and
    captured output, continues to the next test, and the script exits 1; logs
    are uploaded as a CI artifact on failure.

Code Quality Checklist

  • My code follows the style guidelines of this project (cargo fmt)
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings (cargo clippy -- -D warnings)
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • The CI checks pass (format, clippy, tests)

Breaking Changes

  • This PR introduces breaking changes

If checked, describe the breaking changes and migration path:

None — no Rust source or CLI behavior changed. The Windows smoke step is new;
no existing jobs were modified semantically, only extended.

Documentation

  • README.md updated
  • DEVELOPER_GUIDE.md updated (if applicable)
  • API_REFERENCE.md updated (if applicable)
  • No documentation changes needed

Additionally updated CI_ENFORCEMENT.md.

Screenshots (if applicable)

Add screenshots or GIFs for UI changes.

None — CI-only change.

Additional Context

Add any other context about the PR here.

  • Windows install.sh equivalent: Windows ships .zip binaries, so validation
    targets the binary directly rather than stubbing a shell installer.
  • The config doctor live run stays diagnostic because isolated runners may
    lack internet or the Stellar CLI; the deterministic offline schema check is
    what gates the job.
  • CI artifacts: windows-installer-smoke-logs, windows-cli-smoke-logs,
    windows-release-smoke-logs-* on failure.

closes #811

Add a PowerShell smoke suite that validates the Windows binary starts and
its core --help / config doctor surface works, then wire it into CI:
- installer-tests.yml: installer-windows job builds the release binary and
  runs the suite on Windows, uploading logs on failure.
- ci.yml: cli-windows job runs the suite on the debug binary every push/PR.
- release.yml: the Windows build matrix entry smoke-tests the release
  binary before packaging, making the check release-blocking.
- Docs: README and CI_ENFORCEMENT note Windows support/CI status.

Network/toolchain-dependent doctor findings are reported without failing
the job; the offline schema finding must pass.
@drips-wave

drips-wave Bot commented Aug 30, 2026

Copy link
Copy Markdown

@Noobb-byte Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Manuelshub
Manuelshub merged commit a659278 into Nanle-code:master Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Advancement] Create Windows installer smoke tests in CI

2 participants