@@ -1317,17 +1317,23 @@ jobs:
13171317 INFERNO_EXIT_CODE=${PIPESTATUS[0]}
13181318 cd $GITHUB_WORKSPACE
13191319
1320- # Parse results from the log
1321- if grep -q "PASS:" inferno-output.log; then
1322- PASSED=$(grep -c "β PASS:" inferno-output.log || true)
1323- FAILED=$(grep -c "β FAIL:" inferno-output.log || true)
1324- else
1325- PASSED=0
1326- FAILED=0
1327- fi
1328- PASSED=${PASSED:-0}
1329- FAILED=${FAILED:-0}
1330-
1320+ # Read the runner's own tally instead of re-counting log markers, which
1321+ # also matched the per-poll progress lines and could not see the tests
1322+ # that never reached a verdict.
1323+ SUMMARY_LINE=$(grep -E "^Total: [0-9]+ \| Passed:" inferno-output.log | tail -1 || true)
1324+ # `|| true` on every extraction: under `bash -e` a failed grep would
1325+ # abort this step, losing the summary in exactly the case (runner died
1326+ # before printing its tally) where it is most needed.
1327+ field() {
1328+ echo "$SUMMARY_LINE" | tr '|' '\n' | grep -iE "^ *$1:" | sed 's/.*: *//' | tr -d ' ' | head -1 || true
1329+ }
1330+ TOTAL=$(field Total || true); TOTAL=${TOTAL:-0}
1331+ PASSED=$(field Passed || true); PASSED=${PASSED:-0}
1332+ FAILED=$(field Failed || true); FAILED=${FAILED:-0}
1333+ INCOMPLETE=$(field Incomplete || true); INCOMPLETE=${INCOMPLETE:-0}
1334+ OMITTED=$(field Omitted || true); OMITTED=${OMITTED:-0}
1335+ ERRORS=$(field Errors || true); ERRORS=${ERRORS:-0}
1336+
13311337 # Write summary
13321338 echo "" >> $GITHUB_STEP_SUMMARY
13331339 echo "## SMART 2.2.0 Compliance Test Results" >> $GITHUB_STEP_SUMMARY
@@ -1341,16 +1347,31 @@ jobs:
13411347
13421348 echo "" >> $GITHUB_STEP_SUMMARY
13431349 echo "### Test Summary" >> $GITHUB_STEP_SUMMARY
1350+ echo "- Total: $TOTAL" >> $GITHUB_STEP_SUMMARY
13441351 echo "- Passed: $PASSED" >> $GITHUB_STEP_SUMMARY
13451352 echo "- Failed: $FAILED" >> $GITHUB_STEP_SUMMARY
1353+ echo "- Never reached a verdict: $INCOMPLETE" >> $GITHUB_STEP_SUMMARY
1354+ echo "- Omitted (not applicable here): $OMITTED" >> $GITHUB_STEP_SUMMARY
1355+ echo "- Internal errors: $ERRORS" >> $GITHUB_STEP_SUMMARY
13461356 echo "- Test Stage: ${{ env.TEST_STAGE }}" >> $GITHUB_STEP_SUMMARY
13471357 echo "" >> $GITHUB_STEP_SUMMARY
1358+
1359+ # Per-group marks were hardcoded to β, so the summary claimed all four
1360+ # groups passed even when three of them never ran. Derive them.
13481361 echo "### Groups Tested" >> $GITHUB_STEP_SUMMARY
1349- echo "- β Standalone Launch (Discovery + OAuth + OIDC + Token Refresh)" >> $GITHUB_STEP_SUMMARY
1350- echo "- β Token Introspection" >> $GITHUB_STEP_SUMMARY
1351- echo "- β Backend Services (client_credentials + asymmetric JWT)" >> $GITHUB_STEP_SUMMARY
1352- echo "- β EHR Launch (EHR-initiated launch with patient context)" >> $GITHUB_STEP_SUMMARY
1353-
1362+ group_mark() {
1363+ if grep -qF "β $1:" inferno-output.log; then echo "β"; else echo "β"; fi
1364+ }
1365+ echo "- $(group_mark 'Standalone Launch') Standalone Launch (Discovery + OAuth + OIDC + Token Refresh)" >> $GITHUB_STEP_SUMMARY
1366+ echo "- $(group_mark 'Token Introspection') Token Introspection" >> $GITHUB_STEP_SUMMARY
1367+ echo "- $(group_mark 'Backend Services') Backend Services (client_credentials + asymmetric JWT)" >> $GITHUB_STEP_SUMMARY
1368+ echo "- $(group_mark 'EHR Launch') EHR Launch (EHR-initiated launch with patient context)" >> $GITHUB_STEP_SUMMARY
1369+
1370+ if [ "$INCOMPLETE" -gt 0 ]; then
1371+ echo "" >> $GITHUB_STEP_SUMMARY
1372+ echo "> $INCOMPLETE test(s) never reached a verdict β see \"never reached a verdict\" in the log." >> $GITHUB_STEP_SUMMARY
1373+ fi
1374+
13541375 # Include FHIR server info
13551376 echo "" >> $GITHUB_STEP_SUMMARY
13561377 echo "### FHIR Server Configuration" >> $GITHUB_STEP_SUMMARY
0 commit comments