fix: make test-coverage-reporter resilient to test failures#5879
Conversation
The reporter workflow was failing entirely when any test failed (exit code 1 from npm run test:coverage), skipping all subsequent steps and preventing the agent from running. Since this is a coverage reporter (not a gate), it should continue with whatever coverage data is available and report on it. Changed the coverage step to capture the exit code, emit a warning annotation when tests fail, and continue to the data-extraction steps. All downstream steps already have fallbacks for missing coverage data. Fixes #5855 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
✅ Coverage Check PassedOverall Coverage
📁 Per-file Coverage Changes (1 files)
Coverage comparison generated by |
There was a problem hiding this comment.
Pull request overview
This PR aims to make the Test Coverage Reporter workflow resilient to failing tests so it can still extract whatever coverage artifacts exist and run the downstream reporting/agent steps, instead of aborting the job when npm run test:coverage exits non-zero.
Changes:
- Updates the “Run coverage” step to continue on non-zero test exit codes and emit a
::warning::annotation. - Regenerates the corresponding locked workflow YAML to match the markdown workflow source.
- Includes lockfile metadata/body hash updates for related locked workflows (likely via lock regeneration).
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/test-coverage-reporter.md | Adjusts the coverage-running step to avoid failing the workflow when tests fail, enabling downstream reporting. |
| .github/workflows/test-coverage-reporter.lock.yml | Regenerated locked workflow reflecting the updated coverage step behavior. |
| .github/workflows/self-hosted-runner-doctor.lock.yml | Locked workflow metadata/body hash update from regeneration. |
| .github/workflows/self-hosted-runner-doctor-updater.lock.yml | Locked workflow metadata/body hash update from regeneration. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 4/4 changed files
- Comments generated: 1
- Review effort level: Low
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
✅ Copilot review passed with no inline comments. @lpcox Add the |
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
|
🔌 Smoke Services — All services reachable! ✅ |
|
✅ Smoke Claude passed |
|
✅ Smoke Copilot BYOK AOAI (Entra) completed. Copilot AOAI BYOK (Entra) mode operational. 🔓 |
|
✅ Smoke Gemini completed. All facets verified. 💎 Smoke test completed with partial failures. Results reported to PR #5879. |
|
🚀 Security Guard has started processing this pull request |
|
📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅ |
|
✅ Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓 |
|
✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟 |
|
Chroot tests failed Smoke Chroot failed - See logs for details. |
|
✅ Smoke Copilot BYOK AOAI (api-key) completed. Copilot AOAI BYOK (api-key) mode operational. 🔓 |
|
✅ Build Test Suite completed successfully! |
|
✅ Contribution Check completed successfully! |
|
🔑 Smoke Copilot PAT PAT auth validated. All systems operational. ✅ |
Smoke Test: Copilot BYOK Direct Mode ✅Results:
Mode: Direct BYOK (COPILOT_PROVIDER_API_KEY) via api-proxy sidecar → api.githubcopilot.com Status: PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
🔬 Smoke Test Results
Overall: PASS (core connectivity confirmed) Author: @lpcox Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
Smoke Test: Claude Engine Validation
Overall Result: PASS ✅ Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
|
Thanks for the clear PR description and for updating both the workflow source and generated lock file. One contribution-guideline item looks missing: CONTRIBUTING.md’s Contributing Code, Testing, and Pull request requirements sections ask contributors to include tests for new functionality. Since this changes the coverage reporter’s failure-handling behavior, could you add a focused test or documented validation for the reporter behavior so future changes don’t regress it? Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
Smoke Test: Copilot PAT Auth
Overall: PASS | Auth mode: PAT (COPILOT_GITHUB_TOKEN) cc @lpcox Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
|
@lpcox Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY + COPILOT_PROVIDER_BASE_URL) via api-proxy → Azure OpenAI (Foundry, o4-mini-aw) Overall: PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
📡 OTel Tracing Smoke Test Results
Summary: Core OTEL implementation is solid (module loads, all 59 unit tests pass, token-tracker hook in place). Env var forwarding and live span export are expected-pending until Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
|
✅ MCP connectivity check Running in direct BYOK mode (AWF_AUTH_TYPE=github-oidc + AWF_AUTH_AZURE_* + COPILOT_PROVIDER_BASE_URL) via api-proxy → Azure OpenAI (Foundry, o4-mini-aw) authenticated via Microsoft Entra Overall: PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
Smoke Test: Services Connectivity
Overall: FAIL — Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
|
fix: make test-coverage-reporter resilient to test failures Warning Firewall blocked 2 domainsThe following domains were blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"
- "registry.npmjs.org"See Network Configuration for more information.
|
Smoke Test Results (Gemini)
PRs Found (Git Log):
Overall status: FAIL Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "localhost"See Network Configuration for more information.
|
🏗️ Build Test Suite Results
Overall: 8/8 ecosystems passed — ✅ PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
|
Summary
The test-coverage-reporter workflow was failing entirely when any test failed (exit code 1 from
npm run test:coverage), which caused all subsequent steps to be skipped and prevented the agent from running.Root Cause
In the failed run, a test in
compose-generator.test.ts:511was failing (fixed separately in #5857). Because the coverage step usedset -o pipefailand the command exited non-zero, the step failed and all downstream data-extraction steps were skipped. The agent never received any coverage data to report on.Fix
Since this is a coverage reporter (not a quality gate), it should continue with whatever coverage data is available:
::warning::annotation when tests exit non-zerocoverage-summary.jsonThis means the reporter will still produce useful output even when individual tests are broken — it'll report on the coverage of tests that did pass.
Fixes #5855