Skip to content

Add end-to-end tests for skillz CLI using VHS#9

Merged
PascalSenn merged 4 commits into
mainfrom
pse/adds-e2e-tests
Jun 14, 2026
Merged

Add end-to-end tests for skillz CLI using VHS#9
PascalSenn merged 4 commits into
mainfrom
pse/adds-e2e-tests

Conversation

@PascalSenn

Copy link
Copy Markdown
Member
  • Introduced a new directory test/e2e containing end-to-end tests for the skillz CLI.
  • Added .gitignore to exclude generated binaries and output files.
  • Created README.md detailing the purpose and usage of the end-to-end tests.
  • Implemented multiple flow recordings including:
    • add: Tests interactive skill addition.
    • copy: Tests non-interactive skill copying.
    • global: Tests global skill installation.
    • init: Tests skill scaffolding.
    • list: Tests listing installed skills.
    • remove: Tests interactive skill removal.
    • update: Tests checking for skill updates.
    • error: Tests error handling for missing local sources.
  • Each flow generates a GIF and a final-frame text snapshot for verification.
  • Added scripts for running tests and extracting final frames from VHS recordings.
  • Included sample skills in test/fixtures/sample-skills for testing purposes.

- Introduced a new directory `test/e2e` containing end-to-end tests for the skillz CLI.
- Added `.gitignore` to exclude generated binaries and output files.
- Created README.md detailing the purpose and usage of the end-to-end tests.
- Implemented multiple flow recordings including:
  - `add`: Tests interactive skill addition.
  - `copy`: Tests non-interactive skill copying.
  - `global`: Tests global skill installation.
  - `init`: Tests skill scaffolding.
  - `list`: Tests listing installed skills.
  - `remove`: Tests interactive skill removal.
  - `update`: Tests checking for skill updates.
  - `error`: Tests error handling for missing local sources.
- Each flow generates a GIF and a final-frame text snapshot for verification.
- Added scripts for running tests and extracting final frames from VHS recordings.
- Included sample skills in `test/fixtures/sample-skills` for testing purposes.
Copilot AI review requested due to automatic review settings June 13, 2026 21:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a VHS-based end-to-end testing tier for the skillz CLI, recording real terminal sessions in a pinned container and asserting deterministic “final frame” snapshots against committed goldens. It also wires this into CI (artifacts + PR commenting) and updates local developer tooling (devcontainer) to make the flows reproducible.

Changes:

  • Added test/e2e VHS tapes, goldens, scripts (run.sh, extract-frame.sh), and documentation to record/verify representative CLI flows.
  • Introduced an opt-in xUnit smoke test (SKILLZ_E2E=1) that runs the full recording/verification suite on Linux with Docker.
  • Added a GitHub Actions workflow to run recordings, upload artifacts, and post/update a PR comment showing changed/new recordings; added fixture sample skills for hermetic tests.

Reviewed changes

Copilot reviewed 28 out of 36 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
test/Skillz.SmokeTests/VhsRecordingTests.cs Opt-in xUnit E2E test that invokes test/e2e/run.sh and asserts all flows match goldens
test/fixtures/sample-skills/skills/pr-describer/SKILL.md Fixture skill used by E2E recordings
test/fixtures/sample-skills/skills/commit-helper/SKILL.md Fixture skill used by E2E recordings
test/fixtures/sample-skills/skills/changelog-updater/SKILL.md Fixture skill used by E2E recordings
test/e2e/.gitignore Ignores published binary/output directories generated by E2E runs
test/e2e/README.md Documents purpose, determinism strategy, and how to run/update goldens
test/e2e/run.sh Publishes skillz, runs the pinned VHS container per flow, extracts final frames, diffs/updates goldens, and produces a CI report
test/e2e/extract-frame.sh Reduces VHS multi-frame .txt captures to a deterministic final frame
test/e2e/add-flow.tape VHS script for interactive skillz add flow
test/e2e/add-flow.golden.txt Golden final-frame snapshot for add flow
test/e2e/copy-flow.tape VHS script for non-interactive skillz add --copy flow
test/e2e/copy-flow.golden.txt Golden final-frame snapshot for copy flow
test/e2e/global-flow.tape VHS script for non-interactive global install flow
test/e2e/global-flow.golden.txt Golden final-frame snapshot for global flow
test/e2e/init-flow.tape VHS script for skillz init scaffolding flow
test/e2e/init-flow.golden.txt Golden final-frame snapshot for init flow
test/e2e/list-flow.tape VHS script for skillz list flow (after hidden setup install)
test/e2e/list-flow.golden.txt Golden final-frame snapshot for list flow
test/e2e/remove-flow.tape VHS script for interactive skillz remove flow
test/e2e/remove-flow.golden.txt Golden final-frame snapshot for remove flow
test/e2e/update-flow.tape VHS script for interactive skillz update flow
test/e2e/update-flow.golden.txt Golden final-frame snapshot for update flow
test/e2e/error-flow.tape VHS script for error-path skillz add ./missing flow
test/e2e/error-flow.golden.txt Golden final-frame snapshot for error flow
.github/workflows/e2e-demo.yml CI workflow to run/verify recordings, upload artifacts, and comment changed/new flows on PRs
.devcontainer/Dockerfile Adds rationale notes for .NET 10 + Docker support via devcontainer features
.devcontainer/devcontainer.json Adds .NET 10 SDK + docker-in-docker features and verifies Docker in postCreateCommand
.devcontainer/devcontainer-lock.json Locks the added devcontainer feature versions/digests

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/e2e-demo.yml Outdated
Comment thread test/e2e/README.md Outdated
Comment thread test/fixtures/sample-skills/skills/changelog-updater/SKILL.md Outdated
@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

🎬 E2E snapshots changed

These flow recordings differ from main (added, removed, or modified). Expand each for the before/after.

🆕 add — added recording
🆕 copy — added recording
🆕 error — added recording
🆕 global — added recording
🆕 init — added recording
🆕 list — added recording
🆕 remove — added recording
🆕 update — added recording

Run 27507175339 · full set in the skillz-e2e-snapshots artifact.

@PascalSenn PascalSenn left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@PascalSenn PascalSenn merged commit 5df2516 into main Jun 14, 2026
6 checks passed
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.

2 participants