Skip to content

ci: upload code coverage on PRs#4496

Draft
timotheeguerin wants to merge 1 commit into
Azure:mainfrom
timotheeguerin:code-coverage-pr
Draft

ci: upload code coverage on PRs#4496
timotheeguerin wants to merge 1 commit into
Azure:mainfrom
timotheeguerin:code-coverage-pr

Conversation

@timotheeguerin
Copy link
Copy Markdown
Member

Wires up actions/upload-code-coverage@v1 into the CI workflow so that the Cobertura report produced by the existing vitest --coverage run is uploaded to GitHub's code coverage API for each PR.

Changes

  • Grant code-quality: write and pull-requests: read permissions to the build job (required by the action).
  • After the Test step, upload ./coverage/cobertura-coverage.xml (the merged report produced by the vitest workspace run, configured via core/vitest.config.ts).
  • Gated to ubuntu-latest + Node 22.x only, so a single report is uploaded per PR run instead of one per matrix combination.
  • fail-on-error: false so a transient upload failure doesn't break CI.

Add actions/upload-code-coverage@v1 step to the CI workflow so the
Cobertura report produced by vitest is uploaded to GitHub's code
coverage API. Restricted to the ubuntu-latest + Node 22.x matrix entry
to avoid duplicate uploads, and uses fail-on-error: false so transient
API failures don't break CI.
@github-actions
Copy link
Copy Markdown
Contributor

⚡ Benchmark Results

✅ No performance regressions detected.

Full details – comparing 2f1b015 vs baseline 9404b07
Metric Baseline Current Change
total 🔴 853.0ms 🔴 724.3ms -15.1% 🟢
loader 🟢 171.0ms 🟢 139.5ms -18.4% 🟢
resolver 🟢 20.4ms 🟢 16.0ms -21.6% 🟢
checker 🟡 203.4ms 🟢 169.2ms -16.8% 🟢
validation 🟢 42.5ms 🟢 39.7ms -6.6% 🟢
 ↳ validation/@azure-tools/typespec-azure-core 🟢 6.8ms 🟢 5.5ms -18.9% 🟢
 ↳ validation/@typespec/http 🟢 5.6ms 🟢 5.0ms -11.5%
 ↳ validation/@typespec/rest 🟢 0.6ms 🟢 0.6ms -2.8%
 ↳ validation/@typespec/versioning 🔴 26.9ms 🔴 26.1ms -2.8%
 ↳ validation/compiler 🟢 1.5ms 🟢 1.6ms +1.7%
linter 🟢 142.3ms 🟢 118.6ms -16.7% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.0ms 🟢 0.0ms -17.0%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.2ms 🟢 0.2ms -11.5%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 6.3ms 🟢 5.0ms -20.3% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 0.6ms 🟢 0.5ms -11.3%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.1ms 🟢 0.1ms -6.8%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 0.8ms 🟢 0.7ms -9.5%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 0.6ms 🟢 0.6ms -6.2%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.2ms 🟢 0.1ms -11.5%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.2ms 🟢 0.2ms +1.6%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.3ms 🟢 0.3ms -18.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.2ms 🟢 0.2ms -10.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 0.3ms 🟢 0.2ms -23.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.0ms 🟢 0.0ms -7.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.1ms 🟢 0.1ms -12.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.1ms 🟢 0.1ms -11.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 0.5ms 🟢 0.4ms -10.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.4ms 🟢 0.4ms -10.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🔴 20.8ms 🟡 16.8ms -19.6% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 1.0ms 🟢 1.0ms +0.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.1ms 🟢 0.1ms -4.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.2ms 🟢 0.2ms -9.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 1.2ms 🟢 1.2ms -3.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 1.9ms 🟢 1.7ms -8.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 1.9ms 🟢 1.7ms -8.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🔴 20.6ms 🟡 16.8ms -18.7% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 24.7ms 🔴 20.7ms -16.3% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.0ms 🟢 0.0ms -22.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 5.8ms 🟢 4.6ms -21.5% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.2ms 🟢 0.2ms -29.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.0ms 🟢 0.0ms -17.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.1ms 🟢 0.1ms -3.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.4ms 🟢 0.3ms -16.4%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.2ms 🟢 0.1ms -17.4%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.2ms 🟢 0.2ms +3.4%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.0ms 🟢 0.0ms -22.9%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 23.6ms 🔴 20.1ms -15.0% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.3ms 🟢 0.3ms -17.6%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.3ms 🟢 0.2ms -11.5%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 5.4ms 🟢 4.3ms -21.2% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.1ms 🟢 0.1ms -23.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟢 4.6ms 🟢 3.6ms -21.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.1ms 🟢 0.1ms -27.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.1ms 🟢 0.1ms -14.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 6.0ms 🟢 4.7ms -21.1% 🟢
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟢 5.0ms 🟢 4.2ms -15.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.4ms 🟢 0.3ms -11.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 0.5ms 🟢 0.4ms -23.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.0ms 🟢 0.0ms -7.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.3ms 🟢 0.2ms -22.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.1ms 🟢 0.1ms -15.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.0ms 🟢 0.0ms -15.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.1ms 🟢 0.1ms -16.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.1ms 🟢 0.1ms -4.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.1ms 🟢 0.0ms -20.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.2ms 🟢 0.2ms -13.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.0ms 🟢 0.0ms -11.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.2ms 🟢 0.1ms -16.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 5.1ms 🟢 4.6ms -9.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.4ms 🟢 0.3ms -27.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.2ms 🟢 0.2ms -12.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.1ms 🟢 0.1ms -13.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.1ms 🟢 0.1ms -12.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.1ms 🟢 0.1ms -11.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.0ms 🟢 0.0ms +14.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 16.1ms 🟡 12.4ms -22.9% 🟢
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.0ms 🟢 0.0ms -15.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 0.3ms 🟢 0.3ms -15.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.1ms 🟢 0.1ms -18.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.2ms 🟢 0.2ms -15.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 24.0ms 🟡 19.2ms -19.9% 🟢
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.1ms 🟢 0.1ms -11.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.1ms 🟢 0.1ms -7.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 2.6ms 🟢 2.3ms -12.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.4ms 🟢 0.4ms -8.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.0ms 🟢 0.0ms -4.1%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 1.1ms 🟢 1.0ms -10.8%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 0.2ms 🟢 0.2ms -13.2%
emit 🟡 268.4ms 🟡 233.9ms -12.9% 🟢
 ↳ emit/@azure-tools/typespec-autorest 🟢 168.5ms 🟢 146.1ms -13.3% 🟢
 ↳ emit/@typespec/openapi3 🟢 148.6ms 🟢 130.4ms -12.2% 🟢
 ↳ emit/@typespec/openapi3/compute 🟢 134.4ms 🟢 115.9ms -13.7% 🟢
 ↳ emit/@typespec/openapi3/write 🟢 14.0ms 🟢 14.3ms +2.0%

Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)

@azure-sdk
Copy link
Copy Markdown
Collaborator

No changes needing a change description found.

@azure-sdk
Copy link
Copy Markdown
Collaborator

You can try these changes here

🛝 Playground 🌐 Website

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants