test(e2e): restore Hermes dashboard coverage - #5921
Conversation
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
📝 WalkthroughWalkthroughAdds a new Hermes Dashboard Vitest E2E Job
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in the Show a code coverage summary of the most covered files.
TypeScript / code-coverage/cliThe overall coverage in the Show a code coverage summary of the most covered files.
Updated |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
Vitest E2E Scenario RecommendationRequired Vitest E2E scenarios: Dispatch required Vitest E2E scenarios:
Full Vitest E2E advisor summaryVitest E2E Scenario AdvisorBase: Required Vitest E2E scenarios
Optional Vitest E2E scenarios
Relevant changed files
|
PR Review Advisor (Nemotron Ultra) — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
Review findings by urgency: 0 required fixes, 0 items to resolve/justify, 4 in-scope improvements
|
PR Review Advisor — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
Review findings by urgency: 0 required fixes, 1 item to resolve/justify, 0 in-scope improvements
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
tools/e2e-scenarios/hermes-dashboard-workflow-boundary.mts (1)
53-53: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winTreat
needsas a dependency set, not a YAML spelling.Line 53 only accepts the scalar form.
needs: [generate-matrix]is behaviorally equivalent in GitHub Actions, but this validator would reject it and create churn in the boundary test for a non-contract change.Suggested refactor
+function includesNeed(job: WorkflowJob, expected: string): boolean { + const needs = Array.isArray(job.needs) ? job.needs : job.needs ? [job.needs] : []; + return needs.includes(expected); +} + export function validateHermesDashboardWorkflow(workflow: HermesDashboardWorkflow): string[] { const errors: string[] = []; const job = workflow.jobs[JOB_NAME] ?? {}; const env = job.env ?? {}; - requireEqual(errors, job.needs, "generate-matrix", `${JOB_NAME} must depend on generate-matrix`); + if (!includesNeed(job, "generate-matrix")) { + errors.push(`${JOB_NAME} must depend on generate-matrix`); + }🤖 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 `@tools/e2e-scenarios/hermes-dashboard-workflow-boundary.mts` at line 53, The boundary check in the workflow validator is treating job.needs as only a scalar string, so it will incorrectly fail valid equivalent array syntax like needs: [generate-matrix]. Update the assertion around requireEqual in the hermes-dashboard-workflow-boundary test to accept needs as a dependency set/collection and compare semantically against generate-matrix, rather than enforcing one YAML spelling.
🤖 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/hermes-dashboard-workflow-boundary.mts`:
- Around line 48-105: The boundary validator in validateHermesDashboardWorkflow
currently checks the Hermes dashboard job wiring but does not verify the
hermes-dashboard-vitest selector gate. Add a deterministic assertion for the
workflow/job selector state (the jobs/scenarios gate for
hermes-dashboard-vitest) so the inventory cannot mark it selectable unless the
real workflow would run it by default; use the existing workflow object and
related job lookup helpers to validate the selector source of truth alongside
the current requires/step checks.
---
Nitpick comments:
In `@tools/e2e-scenarios/hermes-dashboard-workflow-boundary.mts`:
- Line 53: The boundary check in the workflow validator is treating job.needs as
only a scalar string, so it will incorrectly fail valid equivalent array syntax
like needs: [generate-matrix]. Update the assertion around requireEqual in the
hermes-dashboard-workflow-boundary test to accept needs as a dependency
set/collection and compare semantically against generate-matrix, rather than
enforcing one YAML spelling.
🪄 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: 14a59c6e-0f1a-454d-aeb8-fcc6e3db7fee
📒 Files selected for processing (3)
.github/workflows/e2e-vitest-scenarios.yamltest/e2e-scenario/support-tests/hermes-dashboard-workflow-boundary.test.tstools/e2e-scenarios/hermes-dashboard-workflow-boundary.mts
Vitest E2E Scenario Results — ✅ All requested jobs passedRun: 28313287973
|
## Summary Restores the missing Hermes dashboard variant in the Vitest E2E workflow so the new suite covers the same dashboard-enabled journey as the legacy nightly workflow. The job is default-enabled, independently selectable, and reported through the common PR result job. This is the first landable slice of NVIDIA#5919: establish variant parity while both E2E implementations still exist, collect live-run evidence, then remove the legacy suite only after the domain gates are satisfied. ## Related Issue Refs NVIDIA#5919 ## Changes - add a dedicated `hermes-dashboard-vitest` job that runs the existing Hermes live test with dashboard coverage enabled - expose `hermes-dashboard` through the generated free-standing job inventory and both selective dispatch paths - include dashboard artifacts and the job result in `report-to-pr` - add an executable workflow contract with mutation coverage for dashboard mode, Vitest execution, and result aggregation drift ## Type of Change - [x] 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) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [ ] Docs updated for user-facing behavior changes - [x] Docs not applicable — justification: CI-only E2E workflow coverage; no user-facing behavior or interface changes - [ ] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification - [x] PR description includes the DCO sign-off declaration and every commit appears as `Verified` in GitHub - [x] Git hooks passed during commit and push, or `npx prek run --from-ref main --to-ref HEAD` passes - [x] Targeted tests pass for changed behavior - [ ] Full `npm test` passes (broad runtime changes only) - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) Targeted evidence: `npx vitest run --project e2e-vitest-support` (53 files, 385 tests); `npm run typecheck:cli`; source-shape and test-size ratchets; normal commit and push hooks. --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a new end-to-end dashboard test run to the release workflow, available by default or when explicitly selected. * Included live Vitest coverage for the Hermes dashboard scenario and published dedicated artifacts for easier review. * **Bug Fixes** * Improved workflow validation to ensure the dashboard test run, its required settings, and its reporting step stay correctly connected. * Added guardrails to catch configuration changes that would skip required dashboard coverage. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Summary
Restores the missing Hermes dashboard variant in the Vitest E2E workflow so the new suite covers the same dashboard-enabled journey as the legacy nightly workflow. The job is default-enabled, independently selectable, and reported through the common PR result job.
This is the first landable slice of #5919: establish variant parity while both E2E implementations still exist, collect live-run evidence, then remove the legacy suite only after the domain gates are satisfied.
Related Issue
Refs #5919
Changes
hermes-dashboard-vitestjob that runs the existing Hermes live test with dashboard coverage enabledhermes-dashboardthrough the generated free-standing job inventory and both selective dispatch pathsreport-to-prType of Change
Quality Gates
Verification
Verifiedin GitHubnpx prek run --from-ref main --to-ref HEADpassesnpm testpasses (broad runtime changes only)npm run docsbuilds without warnings (doc changes only)Targeted evidence:
npx vitest run --project e2e-vitest-support(53 files, 385 tests);npm run typecheck:cli; source-shape and test-size ratchets; normal commit and push hooks.Signed-off-by: Carlos Villela cvillela@nvidia.com
Summary by CodeRabbit
New Features
Bug Fixes