Skip to content

test(e2e): migrate OpenClaw skill CLI scenario#5354

Merged
cv merged 4 commits into
mainfrom
codex/5098-openclaw-skill-cli-e2e
Jun 13, 2026
Merged

test(e2e): migrate OpenClaw skill CLI scenario#5354
cv merged 4 commits into
mainfrom
codex/5098-openclaw-skill-cli-e2e

Conversation

@cv

@cv cv commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Migrates test/e2e/test-openclaw-skill-cli-e2e.sh into a focused live Vitest scenario while preserving the real install.sh/OpenShell sandbox boundary and direct in-sandbox OpenClaw skills CLI checks. Wires the migrated scenario into manual E2E Vitest dispatch as openclaw-skill-cli-vitest.

Related Issue

Refs #5098

Changes

  • Added test/e2e-scenario/live/openclaw-skill-cli.test.ts for the install/list/info/check workspace skill roundtrip.
  • Registered openclaw-skill-cli in the free-standing Vitest scenario inventory.
  • Added the openclaw-skill-cli-vitest workflow job and PR report fan-in.
  • Extended workflow selector contract coverage and raised the inventory matrix-loop timeout to cover the expanded free-standing set.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

Ran and passed:

  • npx @biomejs/biome lint test/e2e-scenario/live/openclaw-skill-cli.test.ts test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • npx vitest run --project e2e-vitest-support test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • NEMOCLAW_RUN_E2E_SCENARIOS=1 npx vitest run --project e2e-scenarios-live test/e2e-scenario/live/openclaw-skill-cli.test.ts --reporter=default (skips at missing NVIDIA_API_KEY gate; no sandbox mutation)
  • npm run build:cli && npm run typecheck:cli
  • cd nemoclaw && npm install --ignore-scripts && npm run build

Attempted:

  • npx prek run --all-files after root + plugin install/build; static hooks and plugin tests passed, but the CLI test hook timed out in unrelated 5s tests: test/cli/snapshot-shields.test.ts and src/lib/onboard/web-search-flow.test.ts.

  • npx prek run --all-files passes

  • npm test passes

  • Tests added or updated for new or changed behavior

  • No secrets, API keys, or credentials committed

  • Docs updated for user-facing behavior changes

  • npm run docs builds without warnings (doc changes only)

  • Doc pages follow the style guide (doc changes only)

  • New doc pages include SPDX header and frontmatter (new pages only)


Signed-off-by: Carlos Villela cvillela@nvidia.com

Summary by CodeRabbit

  • Tests

    • Added a Vitest-based end-to-end scenario for the OpenClaw skill CLI: installs a skill into a sandbox, verifies files and CLI outputs (list/info/check), and records scenario artifacts.
    • Tests support conditional execution and will skip when Docker or external rate limits prevent a live run.
  • Chores

    • New CI workflow job for the Vitest E2E scenario, uploads test artifacts, and is included in PR result reporting.
  • Infrastructure

    • CI now attempts Docker auth with graceful fallback to anonymous pulls and always performs cleanup.

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv cv self-assigned this Jun 12, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d3bb4e6a-b083-43bb-b427-72014d59e3bf

📥 Commits

Reviewing files that changed from the base of the PR and between 73edbed and ec2f270.

📒 Files selected for processing (2)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • .github/workflows/e2e-vitest-scenarios.yaml

📝 Walkthrough

Walkthrough

Adds a free-standing Vitest job openclaw-skill-cli-vitest, implements a live E2E Vitest scenario test for the OpenClaw skills CLI, wires the job into the e2e workflow and PR reporting, and extends dispatch-selector tests to cover the new job.

Changes

OpenClaw skill CLI E2E Vitest job

Layer / File(s) Summary
Live skill CLI scenario test
test/e2e-scenario/live/openclaw-skill-cli.test.ts
Implements the openclaw-skill-cli live E2E test with shell/environment helpers, sandbox provisioning and cleanup, fixture generation, skill installation and verification, JSON output validation for list/info/check commands, artifact recording, and conditional skip logic for Docker unavailability and rate-limiting detection.
CI job definition and PR reporting
.github/workflows/e2e-vitest-scenarios.yaml
Defines the openclaw-skill-cli-vitest job with E2E env variables, Docker Hub authentication with anonymous fallback and retry, Node/CLI build and setup, test execution using secrets.NVIDIA_API_KEY, artifact upload, and guaranteed Docker logout cleanup; adds the job to report-to-pr.needs.
Workflow dispatch selector validation
test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
Adds dispatch-selector assertions to verify scenarios: "openclaw-skill-cli" and jobs: "openclaw-skill-cli-vitest" route to the free-standing job, mark them valid, do not trigger live scenario runs, and produce empty registry scenarios.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5370: Derives free-standing selectors from workflow YAML rather than an env registry, exercising the same dispatch-selector machinery the new job depends on.
  • NVIDIA/NemoClaw#5243: Related changes to free-standing job selector plumbing and validation used by the new openclaw-skill-cli-vitest job.
  • NVIDIA/NemoClaw#5234: Updates scenario-advisor/tests for free-standing live tests, which intersect with dispatch and wiring changes here.

Suggested labels

area: e2e, area: ci

Suggested reviewers

  • prekshivyas

Poem

🐰 I hopped a test into the sandbox bright,
Commands and fixtures ran through day and night,
Docker danced with retries, artifacts in tow,
PR reports now show the job's proud glow,
A tiny rabbit hops — the workflows grow!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: migrating the OpenClaw skill CLI E2E test from a shell script to a Vitest scenario, which is the core objective reflected in the file changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/5098-openclaw-skill-cli-e2e

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: None
Optional E2E: None

Workflow run

Full advisor summary

E2E Recommendation Advisor

Failed: Could not parse JSON from advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/e2e-advisor/e2e-advisor-raw-output.txt

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: None
Optional Vitest E2E scenarios: None

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Failed: Could not parse JSON from advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/e2e-advisor/e2e-scenario-advisor-raw-output.txt

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 1 worth checking, 0 nice ideas
Top item: PR review advisor unavailable

Review findings

🛠️ Needs attention

  • None.

🔎 Worth checking

  • PR review advisor unavailable: The automated advisor could not complete: Could not parse JSON from PR review advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/pr-review-advisor/pr-review-advisor-raw-output.txt
    • Recommendation: Re-run the PR Review Advisor or perform a manual review.
    • Evidence: Could not parse JSON from PR review advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/pr-review-advisor/pr-review-advisor-raw-output.txt

🌱 Nice ideas

  • None.
Consider writing more tests for
  • **Runtime validation** — Add or identify targeted runtime/integration validation for the changed behavior; do not report external E2E job pass/fail here.. Runtime/sandbox/infrastructure paths need behavioral runtime validation: .github/workflows/e2e-vitest-scenarios.yaml.

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27436103532
Workflow ref: codex/5098-openclaw-skill-cli-e2e
Requested scenarios: (default — all supported)
Requested jobs: openclaw-skill-cli-vitest
Summary: 1 passed, 1 failed, 22 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-skill-cli-vitest ❌ failure
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

Failed jobs: openclaw-skill-cli-vitest. Check run artifacts for logs.

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27437481427
Workflow ref: codex/5098-openclaw-skill-cli-e2e
Requested scenarios: (default — all supported)
Requested jobs: openclaw-skill-cli-vitest
Summary: 2 passed, 0 failed, 22 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-skill-cli-vitest ✅ success
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@cv cv marked this pull request as ready for review June 12, 2026 21:03

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tools/e2e-scenarios/free-standing-jobs.env`:
- Around line 3-5: The CI summary is inaccurate because
tools/e2e-scenarios/free-standing-jobs.env still lists
credential-migration-vitest and gateway-guard-recovery in the allowed_jobs
variable; update allowed_jobs (or the PR summary) to reflect the actual
removals, and ensure free_standing_scenarios_csv and
free_standing_scenario_jobs_csv are consistent with allowed_jobs (check entries
like credential-migration and gateway-guard-recovery). Separately, diagnose the
regex-validation CI failure by reproducing the validator using the exact CI
validator error output (not this env) — inspect
tools/e2e-scenarios/workflow-boundary.mts for the MODULE_NOT_FOUND: yaml and run
the CI validator locally with its error log to pinpoint the failing regex
line/revision.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 91760fcc-8e02-4f6f-bb1c-3dc7b18f3c02

📥 Commits

Reviewing files that changed from the base of the PR and between 0e30bff and c1c2983.

📒 Files selected for processing (4)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/openclaw-skill-cli.test.ts
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/free-standing-jobs.env

Comment thread tools/e2e-scenarios/free-standing-jobs.env Outdated
@cv cv added the v0.0.65 Release target label Jun 13, 2026
@cv cv merged commit ad3438f into main Jun 13, 2026
42 checks passed
@cv cv deleted the codex/5098-openclaw-skill-cli-e2e branch June 13, 2026 02:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v0.0.65 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants