fix(ci): restore coverage accuracy after phase 1/2#88
Merged
JerrettDavis merged 1 commit intomainfrom Apr 24, 2026
Merged
Conversation
- Add coverlet.collector to Governance.Persistence.Sql.Tests (was missing, causing the 17 SQL persistence tests to not emit a coverage XML; the Governance.Persistence.Sql assembly now reports 95% coverage to Codecov) - Remove samples/ExperimentFramework.DashboardHost/ from the e2e Codecov flag paths — it contradicted the global ignore: samples/** directive - Add packages.lock.json for Governance.Persistence.Sql.Tests to satisfy the CI restore --use-lock-file constraint after adding coverlet.collector Root cause of 83% → 65.5% drop: Phase 2 added Dashboard.UI.Tests and Dashboard.Api.Tests which now instrument Dashboard.UI (3,252 lines, 7% covered) and Dashboard.Api (732 lines, 49% covered). These were not measured at all before, so their uncovered lines now correctly appear in the denominator. The drop reflects genuine low coverage in these new src/ packages brought into scope by Phase 2. Governance.Persistence.Sql.Tests missing coverlet was a plumbing gap that is now fixed; the remaining delta (Dashboard.UI, Dashboard.Api low coverage) is real and tracked in follow-up. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Snapshot WarningsEnsure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice. OpenSSF Scorecard
Scanned Files
|
Code Coverage |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #88 +/- ##
==========================================
+ Coverage 65.50% 74.42% +8.92%
==========================================
Files 242 250 +8
Lines 9624 9888 +264
Branches 1626 1397 -229
==========================================
+ Hits 6304 7359 +1055
+ Misses 2973 2529 -444
+ Partials 347 0 -347
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dashboard.UI.TestsandDashboard.Api.Testswhich instrumentExperimentFramework.Dashboard.UI(3,252 lines, only 7.3% covered by bUnit tests) andExperimentFramework.Dashboard.Api(732 lines, 49.5% covered) for the first time. These assemblies were absent from all coverage XMLs before Phase 2, so they didn't count. Now they do — correctly — but they pull the overall percentage down.Governance.Persistence.Sql.Tests(added in Phase 2 with 17 tests) was missingcoverlet.collector, so it never emitted a coverage XML and never contributed its 95% coverage ofGovernance.Persistence.Sqlto Codecov. Now fixed.e2eflag hadpaths: - samples/ExperimentFramework.DashboardHost/which contradicts the globalignore: samples/**. Removed to eliminate the contradiction.Files changed
tests/ExperimentFramework.Governance.Persistence.Sql.Tests/*.csprojcoverlet.collector v6.0.4tests/ExperimentFramework.Governance.Persistence.Sql.Tests/packages.lock.json--use-lock-filerestore.codecov.ymlsamples/ExperimentFramework.DashboardHost/frome2eflag pathsCoverage impact
The Governance.Persistence.Sql fix adds ~474 lines at 95.4% coverage, which provides a modest improvement. The main drop (83% → ~65-67%) reflects real uncovered code in Dashboard.UI and Dashboard.Api that was not measured before Phase 2 — this is accurate and should be addressed by follow-up test coverage for those assemblies, not by lowering the target or excluding them.
Test plan
Governance.Persistence.Sql.Testsruns with coverage and emitscoverage.cobertura.xml✅ (verified locally: 17 passed, 95.4% coverage for Governance.Persistence.Sql)dotnet restore --use-lock-filesucceeds ✅dotnet test ExperimentFramework.slnx -p:ExcludeE2ETests=true --collect:"XPlat Code Coverage"still passes🤖 Generated with Claude Code