test,ci: e2e suite + macOS CI#1
Conversation
Add a Ginkgo/Gomega e2e suite (integration + vm labels) and a Tests workflow. Both labels run on macOS since the provider binary is darwin-only: - integration: manifest generation and provider-binary error handling; no OrbStack required. - vm: full workspace lifecycle on a real OrbStack machine. Adds Taskfile test:e2e / test:e2e:vm targets and an alpine workspace fixture.
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Superseded by a new PR from feat/e2e-ci-fix (the repo ruleset blocks direct pushes to an existing PR branch, so the follow-up fix required a new branch). |
Summary
Adds an end-to-end test suite and CI for the OrbStack provider. Both are macOS-based, since the provider binary is darwin-only.
e2e suite (Ginkgo/Gomega)
integrationlabel — manifest generation, required options, and provider-binary error handling (initwith a missingorbctl,createwith noMACHINE_ID). Requires no OrbStack install, so it's the reliable CI signal.vmlabel — full workspace lifecycle on a real OrbStack machine (up→ run command → delete), withDeferCleanupso a failed run doesn't leak a machine.Taskfiletargetstest:e2eandtest:e2e:vm.CI (
.github/workflows/tests.yaml)Two jobs on
macos-15(hardened:contents: read,persist-credentials: false):Validation
Both labels pass locally on macOS + real OrbStack:
integration: 4/4vm: 3/3 (~3.5 min: isolated ubuntu machine, docker provisioned, alpine devcontainer up, exec, delete)Note on the
vmCI jobWhether OrbStack runs on a GitHub-hosted macOS runner (headless install, licensing, nested virtualization) is unverified — this PR is where we find out. If it can't run there, the intent is to keep the integration job as the CI gate and treat
vmas local/self-hosted only. Draft pending that CI result.