You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat: add direct QEMU, Goss and native Molecule actions - #8
Consumers can test infrastructure through focused actions while keeping environment policy in their own scenarios.
Add direct QEMU alongside Lima behind vm/create's backend selector, with explicit configuration, private SSH outputs, startup rollback and verified cleanup.
Add checksum-pinned Goss execution to vm/test, including native reports, summaries, PR comments and artifacts. Empty and fully skipped suites fail. Custom guest and runner commands remain supported.
Add ansible/test-molecule for native scenarios. It owns pinned runtime setup, bounded execution and report publication. The scenario owns inventory, playbooks, dependencies and sequence; no VM or reboot is required. Interrupted runs retry bounded native cleanup and remain failures.
Keep short GitHub Script logic inline. Remove the five entrypoint wrappers and the small Molecule report module; retain adjacent modules for complex validation, execution and VM operations.
Dedicate one hosted workflow to each public action: vm/create, vm/test, vm/destroy, ansible/test, and ansible/test-molecule. Keep backend variants inside each action workflow, and run all five in CI. Use test-action-* caller IDs and explicit Arrange/Act/Assert steps following ci-github-common; keep unconditional cleanup separate. Preserve native failures and reports; check rollback before fallback cleanup and verify repeated destruction and unmanaged-data preservation.
Organize 53 focused unit tests into seven native suite() blocks with test() cases and explicit Arrange, Act and Assert comments. Each action owns its dependency-free npm package and calls ci-github-nodejs/actions/test with command: test:ci; pretest:ci prepares the coverage directory and test:ci generates a gitignored LCOV report. Unit tests cover input boundaries, ownership, native report integrity and injected failures. Hosted scenarios cover ordinary execution, reporting and cleanup. Shared CI composes the action workflows; make test runs their suites locally and stops on failure.
Keep ansible/test for playbook and collection sanity tests. Workflows own the VMs they create and always schedule destruction. Linting stays separate.
Record backend choice, action responsibilities, native scenarios and script placement in one consolidated ADR, linked from the existing lifecycle decision.
Maintain the Goss release and Linux x86-64 archive checksum together through Renovate's release-attachment datasource, preserving the existing JSON format and runtime pin. Use Renovate's native .node-version manager to group updates across all five action packages.
The Proxmox pilot in digital-household #7 explicitly defines its SSH inventory, baseline application, idempotence and reboot sequence. Released playbook, collection and custom VM command inputs remain supported; the unreleased VM-specific Molecule interface is removed.
Validation: make test passes all 53 focused unit tests in seven suites, with explicit AAA sections in every test. All five action packages retain their dependency-free install and CI coverage scripts. Local lint and documentation links pass. Hosted VM tests also assert private report-directory permissions. Renovate strict configuration validation passes and its native Node version manager detects all five files. Its Goss extractor identifies the live upstream archive checksum, and its replacement logic updates the version and checksum together in a simulated release update. Shared hosted CI passes all 24 jobs at 72acbaa6ca9745cf0811a1a7a685dd12dcc2111b, including all five unit suites running test:ci from their action directories through the released Node.js test action. The Proxmox consumer run passed at c5482db6d1d790bea5d9b2578c89a766240a5912, using shared action revision a752dd6e1d27d80e510ae533ca71c2cb045cabb9; action runtime code is unchanged by the subsequent workflow and documentation changes. Hosted scenarios cover operation without a VM, deliberate failures, timeouts, Lima/QEMU, idempotence, reboot, native reporting and cleanup.
Intended for release 0.3.0 after review and shared/consumer qualification. Consumers must replace preview pins with the reviewed release commit before merge.
neilime
changed the title
feat(vm): support direct QEMU and runner-side tests
feat(vm): add direct QEMU and opinionated Goss and Molecule tests
Oct 31, 2026
Error: Molecule failed, timed out or produced no native assertions
neilime
changed the title
feat(vm): add direct QEMU and opinionated Goss and Molecule tests
feat: add direct QEMU, Goss and native Molecule actions
Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Consumers can test infrastructure through focused actions while keeping environment policy in their own scenarios.
vm/create's backend selector, with explicit configuration, private SSH outputs, startup rollback and verified cleanup.vm/test, including native reports, summaries, PR comments and artifacts. Empty and fully skipped suites fail. Custom guest and runner commands remain supported.ansible/test-moleculefor native scenarios. It owns pinned runtime setup, bounded execution and report publication. The scenario owns inventory, playbooks, dependencies and sequence; no VM or reboot is required. Interrupted runs retry bounded native cleanup and remain failures.vm/create,vm/test,vm/destroy,ansible/test, andansible/test-molecule. Keep backend variants inside each action workflow, and run all five in CI. Usetest-action-*caller IDs and explicit Arrange/Act/Assert steps following ci-github-common; keep unconditional cleanup separate. Preserve native failures and reports; check rollback before fallback cleanup and verify repeated destruction and unmanaged-data preservation.suite()blocks withtest()cases and explicit Arrange, Act and Assert comments. Each action owns its dependency-free npm package and callsci-github-nodejs/actions/testwithcommand: test:ci;pretest:ciprepares the coverage directory andtest:cigenerates a gitignored LCOV report. Unit tests cover input boundaries, ownership, native report integrity and injected failures. Hosted scenarios cover ordinary execution, reporting and cleanup. Shared CI composes the action workflows;make testruns their suites locally and stops on failure.ansible/testfor playbook and collection sanity tests. Workflows own the VMs they create and always schedule destruction. Linting stays separate..node-versionmanager to group updates across all five action packages.The Proxmox pilot in digital-household #7 explicitly defines its SSH inventory, baseline application, idempotence and reboot sequence. Released playbook, collection and custom VM command inputs remain supported; the unreleased VM-specific Molecule interface is removed.
Validation:
make testpasses all 53 focused unit tests in seven suites, with explicit AAA sections in every test. All five action packages retain their dependency-free install and CI coverage scripts. Local lint and documentation links pass. Hosted VM tests also assert private report-directory permissions. Renovate strict configuration validation passes and its native Node version manager detects all five files. Its Goss extractor identifies the live upstream archive checksum, and its replacement logic updates the version and checksum together in a simulated release update. Shared hosted CI passes all 24 jobs at72acbaa6ca9745cf0811a1a7a685dd12dcc2111b, including all five unit suites runningtest:cifrom their action directories through the released Node.js test action. The Proxmox consumer run passed atc5482db6d1d790bea5d9b2578c89a766240a5912, using shared action revisiona752dd6e1d27d80e510ae533ca71c2cb045cabb9; action runtime code is unchanged by the subsequent workflow and documentation changes. Hosted scenarios cover operation without a VM, deliberate failures, timeouts, Lima/QEMU, idempotence, reboot, native reporting and cleanup.Intended for release
0.3.0after review and shared/consumer qualification. Consumers must replace preview pins with the reviewed release commit before merge.