Skip to content

Commit 13405a5

Browse files
authored
ci(e2e): clarify scenario dry-run summary (#4656)
## Summary Clarifies the GitHub Step Summary emitted by the scenario workflow so maintainers can see that it ran the typed dry-run path. The summary now renders scenario, manifest, expected state, suite, and phase data from the typed run-plan artifact. ## Related Issue Refs #3588. ## Changes - Rename the summary step to `Append typed dry-run summary`. - Add an explicit typed dry-run mode note to the workflow summary. - Render `.e2e/run-plan.json` as a compact markdown table with fallback text when no plan artifact exists. ## 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) ## Verification - [ ] `npx prek run --all-files` passes - [ ] `npm test` passes - [ ] Tests added or updated for new or changed behavior - [x] 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](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) Additional verification run: - `npx prek run --files .github/workflows/e2e-scenarios.yaml` - `npx vitest run --project e2e-scenario-framework test/e2e-scenario/framework-tests/e2e-scenarios-workflow.test.ts --silent=false --reporter=default` --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Enhanced E2E scenario test reporting in CI workflows. The test summary now displays comprehensive scenario execution details in a structured Markdown table format when available, including scenario identifiers, test suite information, and execution phases. Improved fallback options gracefully handle missing or unavailable structured artifacts. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
1 parent df2b86a commit 13405a5

1 file changed

Lines changed: 35 additions & 5 deletions

File tree

.github/workflows/e2e-scenarios.yaml

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -324,14 +324,44 @@ jobs:
324324
exit $LASTEXITCODE
325325
}
326326
327-
- name: Append plan summary
327+
- name: Append typed dry-run summary
328328
if: always()
329329
shell: bash
330330
run: |
331-
if [ -f .e2e/plan.txt ]; then
332-
echo '## E2E scenario plan' >> "$GITHUB_STEP_SUMMARY"
333-
cat .e2e/plan.txt >> "$GITHUB_STEP_SUMMARY"
334-
fi
331+
{
332+
echo '## E2E typed scenario dry-run'
333+
echo ''
334+
echo 'Mode: `test/e2e-scenario/scenarios/run.ts --dry-run`.'
335+
echo ''
336+
if [ -f .e2e/run-plan.json ]; then
337+
python3 - <<'PY'
338+
import json
339+
from pathlib import Path
340+
341+
plans = json.loads(Path('.e2e/run-plan.json').read_text(encoding='utf-8'))
342+
print('| Scenario | Manifest | Expected state | Suites | Phases |')
343+
print('| --- | --- | --- | --- | --- |')
344+
for plan in plans:
345+
suites = ', '.join(f"`{suite}`" for suite in plan.get('suiteIds', [])) or '_none_'
346+
phases = ', '.join(f"`{phase.get('name')}`" for phase in plan.get('phases', [])) or '_none_'
347+
print(
348+
'| `{scenario}` | `{manifest}` | `{state}` | {suites} | {phases} |'.format(
349+
scenario=plan.get('scenarioId', ''),
350+
manifest=plan.get('manifestPath') or '_none_',
351+
state=plan.get('expectedStateId') or '_none_',
352+
suites=suites,
353+
phases=phases,
354+
)
355+
)
356+
PY
357+
elif [ -f .e2e/plan.txt ]; then
358+
echo '```text'
359+
cat .e2e/plan.txt
360+
echo '```'
361+
else
362+
echo '_No typed scenario plan artifact was produced._'
363+
fi
364+
} >> "$GITHUB_STEP_SUMMARY"
335365
336366
- name: Upload scenario artifacts
337367
if: always()

0 commit comments

Comments
 (0)