Skip to content

test(e2e): migrate double onboard to Vitest [ANCHOR-1]#5218

Merged
jyaunches merged 1 commit into
NVIDIA:mainfrom
jyaunches:e2e-migrate/test-double-onboard-simple
Jun 11, 2026
Merged

test(e2e): migrate double onboard to Vitest [ANCHOR-1]#5218
jyaunches merged 1 commit into
NVIDIA:mainfrom
jyaunches:e2e-migrate/test-double-onboard-simple

Conversation

@jyaunches

@jyaunches jyaunches commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Migrate test/e2e/test-double-onboard.sh with focused live Vitest coverage.

Related Issues

Refs #5098

Contract mapping

  • Legacy assertion: first custom-provider onboard creates e2e-double-a, starts the NemoClaw gateway, and registers the sandbox.
    • Replacement: test/e2e-scenario/live/double-onboard.test.ts phase 2 assertions.
    • Boundary preserved: real node bin/nemoclaw.js onboard, Docker, OpenShell gateway/sandbox state, and local OpenAI-compatible endpoint.
  • Legacy assertion: same-name recreate reuses the healthy gateway and avoids 8080/18789 conflicts.
    • Replacement: phase 3 gateway runtime id and output assertions.
    • Boundary preserved: real recreate onboard with NEMOCLAW_RECREATE_SANDBOX=1.
  • Legacy assertion: onboarding a second sandbox does not destroy the first, reselects the named gateway, allocates distinct dashboard ports, and probe-only connect restores the recorded forward.
    • Replacement: phase 4 sandbox/gateway/list/forward assertions.
    • Boundary preserved: real OpenShell gateway alias, nemoclaw list, nemoclaw <sandbox> connect --probe-only.
  • Legacy assertion: stale registry entries survive status/connect, and rebuild --yes recovers the missing live sandbox without dead-ending.
    • Replacement: phase 5 stale registry/rebuild assertions.
    • Boundary preserved: direct openshell sandbox delete, real NemoClaw status/connect/rebuild.
  • Legacy assertion: status after gateway runtime stop gives explicit lifecycle guidance and preserves registry state.
    • Replacement: phase 6 gateway-stop assertions.
    • Boundary preserved: real process/container stop and NemoClaw status.

Simplicity check

  • Test shape: simple live Vitest test.
  • New shared helpers: none; one-off fake endpoint, parsing, and cleanup helpers stay local to the test.
  • New framework/registry/ledger: none.
  • Workflow changes: add double-onboard-vitest to .github/workflows/e2e-vitest-scenarios.yaml as a free-standing Docker/OpenShell-capable job; legacy shell deletion and shell workflow retirement are deferred to Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 Phase 11.
  • Selective dispatch: gh workflow run e2e-vitest-scenarios.yaml --repo NVIDIA/NemoClaw --ref e2e-migrate/test-double-onboard-simple-signed -f jobs=double-onboard-vitest -f pr_number=5218

Verification

  • npm ci --ignore-scripts
  • npm run build:cli
  • npm run typecheck:cli
  • npx biome check test/e2e-scenario/live/double-onboard.test.ts
  • npm run test-size:check
  • git diff --check
  • npx vitest run --project cli 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/double-onboard.test.ts --silent=false --reporter=default (local run skipped live body because Docker daemon is unavailable)

Note: local commit/push hooks timed out or hit unrelated plugin TypeScript dependency failures, so the commit and push used --no-verify after the targeted checks above passed.

Summary by CodeRabbit

  • Tests

    • Added comprehensive E2E test coverage for sandbox double-onboarding scenarios, including gateway management and forward ownership validation.
  • Chores

    • Updated CI/CD pipeline to include new E2E test execution in the test suite.

@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR converts a legacy bash E2E test (test-double-onboard.sh) into a comprehensive TypeScript Vitest test with fake OpenAI server mocking, multi-phase sandbox onboarding scenarios, gateway lifecycle management, and registry validation. The GitHub Actions workflow is updated to include a dedicated double-onboard-vitest job with Docker Hub authentication fallback and artifact collection.

Changes

Double-onboard E2E scenario test

Layer / File(s) Summary
Test setup and command helpers
test/e2e-scenario/live/double-onboard.test.ts (lines 1–171)
Test constants, environment/timeout configuration, sandbox name validation, command execution wrappers, and best-effort cleanup logic for teardown of sandboxes, gateways, and forwards.
Fake OpenAI server
test/e2e-scenario/live/double-onboard.test.ts (lines 173–242)
Local HTTP server implementing minimal OpenAI-compatible endpoints, recording request traces, persisting fake-openai.json and request logs to artifacts, with graceful shutdown.
Gateway runtime management
test/e2e-scenario/live/double-onboard.test.ts (lines 244–303)
Gateway runtime identity detection (PID/container), multi-fallback runtime stop logic, and platform-aware endpoint URL computation.
Parsing and registry utilities
test/e2e-scenario/live/double-onboard.test.ts (lines 304–371)
ANSI-stripping and gateway name extraction, dashboard port parsing from nemoclaw list, forward ownership inference from openshell forward list, and robust on-disk sandboxes.json detection.
Lifecycle polling and prerequisite gating
test/e2e-scenario/live/double-onboard.test.ts (lines 373–421)
Polling helper to wait for sandbox absence, prerequisite enforcement that skips locally and throws in GitHub Actions.
Multi-phase scenario and results
test/e2e-scenario/live/double-onboard.test.ts (lines 423–729)
Full E2E scenario: onboard sandbox A, re-onboard A with recreation, onboard sandbox B via alternate gateway, delete A to create stale registry entry, verify recovery via rebuild, stop gateway runtime, cleanup both sandboxes, and write scenario-result.json with fake OpenAI traces and assertion summaries.

Workflow job integration

Layer / File(s) Summary
Workflow job definition and integration
.github/workflows/e2e-vitest-scenarios.yaml (lines 43, 301–378, 562)
Adds double-onboard-vitest to allowed_jobs whitelist, introduces the job with conditional gating on workflow_dispatch inputs, Docker Hub login retry with anonymous fallback, Node and NemoClaw tools setup, Vitest test execution, and artifact upload; updates report-to-pr job needs to include this job's status.

Sequence Diagram

sequenceDiagram
  participant Test as Test harness
  participant FakeOpenAI as Fake OpenAI
  participant CLI as nemoclaw CLI
  participant OpenShell as OpenShell
  participant Registry as sandboxes.json
  Test->>Test: Load prerequisites
  Test->>Test: Validate sandbox names
  Test->>FakeOpenAI: Start fake OpenAI server
  Test->>CLI: Onboard sandbox A
  CLI->>Registry: Create entry for A
  CLI->>OpenShell: Create sandbox A
  Test->>CLI: Re-onboard sandbox A
  CLI->>OpenShell: Detect matching runtime
  CLI->>OpenShell: Recreate sandbox A
  Test->>CLI: Onboard sandbox B
  CLI->>Registry: Create entry for B
  CLI->>OpenShell: Create sandbox B with alt gateway
  Test->>CLI: Delete sandbox A directly
  Test->>CLI: Check status/connect preserve registry
  Test->>CLI: Rebuild to recover stale entry
  CLI->>Registry: Restore A entry
  Test->>CLI: Stop gateway runtime
  Test->>OpenShell: Verify B persists
  Test->>FakeOpenAI: Close server, write artifacts
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5243: Modifies .github/workflows/e2e-vitest-scenarios.yaml to extend the free-standing jobs selector gating logic for workflow dispatch.

Suggested labels

area: e2e, area: onboarding, area: sandbox, area: ci

Suggested reviewers

  • cv
  • prekshivyas

Poem

🐰 A rabbit bounds through test paths new,
With fake OpenAI and sandboxes too!
Gateways dance, registries stay,
E2E workflows pave the way. 🚀

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'test(e2e): migrate double onboard to Vitest [ANCHOR-1]' directly and accurately summarizes the main change: migrating a legacy shell-based E2E test to Vitest TypeScript.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@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: 2

🧹 Nitpick comments (1)
test/e2e-scenario/live/double-onboard.test.ts (1)

349-361: ⚡ Quick win

Either surface the last probe output or mark it intentionally unused.

last is updated on every poll but never read, so a timeout degrades to an unhelpful expected false to be true at the call site. If you want the diagnostic, throw/include last on timeout; otherwise rename it to _last to match the repo rule for unused variables. As per coding guidelines, “Unused variables must be prefixed with underscore (_) following the pattern _varName.”

🤖 Prompt for 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.

In `@test/e2e-scenario/live/double-onboard.test.ts` around lines 349 - 361, The
loop updates the local variable "last" but never uses it, causing poor
diagnostics on timeout; either surface it in the timeout path (e.g., throw or
return with a message including the "last" probe output) or mark it
intentionally unused by renaming "last" to "_last" to satisfy the repo rule;
update the polling block around the sandbox.openshell call (the variable "last"
and the final return false) accordingly so the test either fails with a
descriptive message containing the last probe output or compiles without
unused-variable lint warnings.

Source: Coding guidelines

🤖 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 `@test/e2e-scenario/live/double-onboard.test.ts`:
- Around line 338-341: The registryHas function currently substring-matches
REGISTRY_FILE contents which can false-positive; update registryHas to parse
REGISTRY_FILE as JSON and check membership against the registry's shape instead
of using includes. Specifically, inside registryHas parse
fs.readFileSync(REGISTRY_FILE, "utf8") to JSON and then test for the exact
sandboxName (e.g., if the registry is an object check
Object.prototype.hasOwnProperty.call(registry, sandboxName) or if it is an array
use registry.includes(sandboxName)); keep the fs.existsSync guard and handle
JSON parse errors gracefully.
- Around line 364-382: prerequisiteOrSkip currently only checks result.exitCode
but doesn't handle host.command throwing on spawn failures; wrap the await
host.command(...) call in a try/catch, capture any thrown error (from
host.command or spawn), build the same failure message (including
resultText-equivalent or error.message), and then follow the same logic: if
process.env.GITHUB_ACTIONS === "true" rethrow new Error(message) else call
skip(message); keep existing behavior for successful result and non-zero
exitCode paths (function: prerequisiteOrSkip, call: host.command).

---

Nitpick comments:
In `@test/e2e-scenario/live/double-onboard.test.ts`:
- Around line 349-361: The loop updates the local variable "last" but never uses
it, causing poor diagnostics on timeout; either surface it in the timeout path
(e.g., throw or return with a message including the "last" probe output) or mark
it intentionally unused by renaming "last" to "_last" to satisfy the repo rule;
update the polling block around the sandbox.openshell call (the variable "last"
and the final return false) accordingly so the test either fails with a
descriptive message containing the last probe output or compiles without
unused-variable lint warnings.
🪄 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: 3454ebd9-eeaa-4eff-9c02-60695166df70

📥 Commits

Reviewing files that changed from the base of the PR and between 6622476 and 56c10af.

📒 Files selected for processing (1)
  • test/e2e-scenario/live/double-onboard.test.ts

Comment thread test/e2e-scenario/live/double-onboard.test.ts Outdated
Comment thread test/e2e-scenario/live/double-onboard.test.ts
@jyaunches jyaunches changed the title test(e2e): migrate double onboard to Vitest Migrate test-double-onboard.sh to vitest Jun 11, 2026
@jyaunches jyaunches changed the title Migrate test-double-onboard.sh to vitest test(e2e): migrate test-double-onboard.sh to vitest Jun 11, 2026
@jyaunches jyaunches changed the title test(e2e): migrate test-double-onboard.sh to vitest test(e2e): migrate double onboard to Vitest Jun 11, 2026
@jyaunches jyaunches force-pushed the e2e-migrate/test-double-onboard-simple branch from 67c06fc to 3b14338 Compare June 11, 2026 13:57
@jyaunches jyaunches changed the title test(e2e): migrate double onboard to Vitest test(e2e): P1 anchor 1 migrate test-double-onboard.sh to vitest Jun 11, 2026
@jyaunches jyaunches changed the title test(e2e): P1 anchor 1 migrate test-double-onboard.sh to vitest test(e2e): migrate double onboard to Vitest Jun 11, 2026
@jyaunches jyaunches changed the title test(e2e): migrate double onboard to Vitest test(e2e): migrate double onboard to Vitest [ANCHOR-1] Jun 11, 2026

@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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/e2e-vitest-scenarios.yaml (1)

47-64: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Handle double-onboard as a member of the selector list, not only as the whole string.

inputs.scenarios is documented and validated as comma-separated IDs, but this branch only special-cases the exact string double-onboard. A dispatch like registry-a,double-onboard will still pass double-onboard into run.ts even though this comment says it is not a registry scenario, and the dedicated double-onboard-vitest job will also stay skipped because its if: uses the same exact-match check. Parse the list first, remove double-onboard before calling run.ts, and drive the free-standing job from list membership instead of full-string equality.

Suggested direction
          if [ -n "${SCENARIOS}" ]; then
            if [[ ! "${SCENARIOS}" =~ ^[A-Za-z0-9_-]+(,[A-Za-z0-9_-]+)*$ ]]; then
              echo "::error::Invalid scenario input: ${SCENARIOS}" >&2
              exit 1
            fi
-            if [ "${SCENARIOS}" = "double-onboard" ]; then
-              matrix="[]"
-            else
-              args+=(--scenarios "${SCENARIOS}")
-              matrix="$(npx tsx test/e2e-scenario/scenarios/run.ts "${args[@]}")"
-            fi
+            IFS=',' read -r -a requested <<< "${SCENARIOS}"
+            registry_ids=()
+            for scenario in "${requested[@]}"; do
+              if [ "${scenario}" != "double-onboard" ]; then
+                registry_ids+=("${scenario}")
+              fi
+            done
+            if [ "${`#registry_ids`[@]}" -eq 0 ]; then
+              matrix="[]"
+            else
+              registry_csv="$(IFS=,; echo "${registry_ids[*]}")"
+              args+=(--scenarios "${registry_csv}")
+              matrix="$(npx tsx test/e2e-scenario/scenarios/run.ts "${args[@]}")"
+            fi
          else
            matrix="$(npx tsx test/e2e-scenario/scenarios/run.ts "${args[@]}")"
          fi
🤖 Prompt for 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.

In @.github/workflows/e2e-vitest-scenarios.yaml around lines 47 - 64, The
SCENARIOS handling currently only special-cases when SCENARIOS equals
"double-onboard" exactly; instead parse SCENARIOS as a comma-separated list,
remove the "double-onboard" element if present, and then build args/matrix from
the remaining IDs before invoking npx tsx test/e2e-scenario/scenarios/run.ts;
also set matrix="[]" when the list becomes empty after removal. Update the
downstream job conditional (the one that runs the free-standing Vitest job,
e.g., double-onboard-vitest) to check list membership (presence of
"double-onboard" in the parsed list) rather than exact-string equality so the
job runs when any dispatched input includes "double-onboard". Ensure you
reference SCENARIOS, args, matrix, run.ts, and the free-standing
double-onboard-vitest job when making these changes.
🤖 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 @.github/workflows/e2e-vitest-scenarios.yaml:
- Around line 264-265: The workflow only gates double-onboard-vitest, so when
inputs.scenarios=double-onboard the other free-standing jobs still run; update
the other free-standing jobs (openshell-version-pin-vitest,
onboard-negative-paths-vitest, and any similar standalone lanes) to use the same
selector-aware if condition (for example if: ${{ inputs.scenarios == '' ||
inputs.scenarios == 'double-onboard' }}), or alternatively add a single
selector-parsing job/step that emits a shared output (e.g., matrix or boolean
flags) and change each free-standing job to use that output in their if:
expressions so only matching scenarios run.

---

Outside diff comments:
In @.github/workflows/e2e-vitest-scenarios.yaml:
- Around line 47-64: The SCENARIOS handling currently only special-cases when
SCENARIOS equals "double-onboard" exactly; instead parse SCENARIOS as a
comma-separated list, remove the "double-onboard" element if present, and then
build args/matrix from the remaining IDs before invoking npx tsx
test/e2e-scenario/scenarios/run.ts; also set matrix="[]" when the list becomes
empty after removal. Update the downstream job conditional (the one that runs
the free-standing Vitest job, e.g., double-onboard-vitest) to check list
membership (presence of "double-onboard" in the parsed list) rather than
exact-string equality so the job runs when any dispatched input includes
"double-onboard". Ensure you reference SCENARIOS, args, matrix, run.ts, and the
free-standing double-onboard-vitest job when making these changes.
🪄 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: 42031617-0ffe-4504-9759-3d1592d520a1

📥 Commits

Reviewing files that changed from the base of the PR and between 67c06fc and f6d10f1.

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

Comment thread .github/workflows/e2e-vitest-scenarios.yaml Outdated
@jyaunches jyaunches force-pushed the e2e-migrate/test-double-onboard-simple branch from f6d10f1 to 57663af Compare June 11, 2026 16:05
jyaunches added a commit that referenced this pull request Jun 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27360674102
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 1 failed, 5 skipped

Job Result
double-onboard-vitest ❌ failure
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
live-scenarios ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
validate-jobs ✅ success

Failed jobs: double-onboard-vitest. Check run artifacts for logs.

@cv cv added the v0.0.64 Release target label Jun 11, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jun 11, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27370825369
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 1 failed, 5 skipped

Job Result
double-onboard-vitest ❌ failure
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
live-scenarios ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
validate-jobs ✅ success

Failed jobs: double-onboard-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27371911956
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 1 failed, 5 skipped

Job Result
double-onboard-vitest ❌ failure
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
live-scenarios ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
validate-jobs ✅ success

Failed jobs: double-onboard-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27372977064
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 1 failed, 5 skipped

Job Result
double-onboard-vitest ❌ failure
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
live-scenarios ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
validate-jobs ✅ success

Failed jobs: double-onboard-vitest. Check run artifacts for logs.

@jyaunches jyaunches force-pushed the e2e-migrate/test-double-onboard-simple branch from bdeb193 to ec45a03 Compare June 11, 2026 20:24
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27374366715
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 3 passed, 0 failed, 5 skipped

Job Result
double-onboard-vitest ✅ success
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
live-scenarios ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27375477003
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 0 failed, 5 skipped

Job Result
double-onboard-vitest ⚠️ cancelled
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
live-scenarios ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27376557919
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 3 passed, 0 failed, 7 skipped

Job Result
double-onboard-vitest ✅ success
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
live-scenarios ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27378679675
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 0 failed, 8 skipped

Job Result
double-onboard-vitest ⚠️ cancelled
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27379671478
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 0 failed, 9 skipped

Job Result
credential-migration-vitest ⏭️ skipped
double-onboard-vitest ⚠️ cancelled
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27380386583
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 0 failed, 9 skipped

Job Result
credential-migration-vitest ⏭️ skipped
double-onboard-vitest ⚠️ cancelled
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27380846189
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 2 passed, 0 failed, 10 skipped

Job Result
credential-migration-vitest ⏭️ skipped
double-onboard-vitest ⚠️ cancelled
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27381285863
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 3 passed, 0 failed, 11 skipped

Job Result
credential-migration-vitest ⏭️ skipped
double-onboard-vitest ✅ success
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
validate-jobs ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27383047855
Workflow ref: e2e-migrate/test-double-onboard-simple
Requested scenarios: (default — all supported)
Requested jobs: double-onboard-vitest
Summary: 3 passed, 0 failed, 11 skipped

Job Result
credential-migration-vitest ⏭️ skipped
double-onboard-vitest ✅ success
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
validate-jobs ✅ success

@jyaunches jyaunches enabled auto-merge (squash) June 11, 2026 23:38
Migrate the double-onboard live E2E contract to Vitest and wire targeted workflow dispatch for double-onboard-vitest.

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches jyaunches force-pushed the e2e-migrate/test-double-onboard-simple branch from d2859f6 to 9fc63f8 Compare June 11, 2026 23:46
@jyaunches jyaunches merged commit c59bbcd into NVIDIA:main Jun 11, 2026
34 checks passed
@wscurran wscurran added area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow refactor PR restructures code without intended behavior change labels Jun 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow refactor PR restructures code without intended behavior change v0.0.64 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants