Skip to content

Add feature installation test coverage #66

Description

@tomgrv

Problem

There is no automated test coverage for any feature in this repo:

  • Root package.json "test" script is a no-op stub (echo "Warning: no test specified").
  • No test/ directory exists at the repo root or inside any src/<feature>/.
  • No scenarios.json files (the format expected by devcontainer-feature-test-runner).
  • .github/workflows/publish-features.yml publishes to GHCR without any prior validation step that a feature actually installs successfully.

Recent git history shows several reactive bug fixes that a basic install test would likely have caught before merge, e.g.:

  • 5818e42 fix(githooks): use sudo for chmod to ensure proper permissions
  • 9976a9f / ffc67c8: a version bump that had to be immediately reverted

Proposal

  • Add a test/<feature>/scenarios.json (or equivalent) per feature under src/<feature>/, following the devcontainer-feature-test-runner conventions, asserting the feature installs cleanly and its expected binaries/files exist afterward.
  • Add a CI job (new workflow or a step prepended to publish-features.yml) that runs devcontainer features test (or the equivalent devcontainers/action test mode) against every feature before publish.
  • Start with common-utils since it's the foundation every other feature depends on (dependsOn), then expand outward.

Where this lives / sync note

This repo distributes each src/<feature> to its own standalone repo via split-monorepo.yml/merge-monorepo.yml. New test/scenarios.json files should be added inside each feature's own src/<feature>/ directory (not at the repo root only) so they ride the existing split-sync automation and land in each feature's standalone repo too.

Acceptance criteria

  • At least common-utils, gitutils, and githooks have a working test scenario.
  • CI fails if a feature fails to install.
  • Test step runs before (and gates) publish-features.yml's publish step.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions