Skip to content

[specs] add missing ARM scenarios#4632

Open
iscai-msft wants to merge 6 commits into
Azure:mainfrom
iscai-msft:specs/addArmTests
Open

[specs] add missing ARM scenarios#4632
iscai-msft wants to merge 6 commits into
Azure:mainfrom
iscai-msft:specs/addArmTests

Conversation

@iscai-msft

@iscai-msft iscai-msft commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

fixes #4609

  1. getLro with @markAsLro
  2. postActionPaging
  3. @markAsPageable
  4. postPaginglroWithBody
  5. legacy template usages

@microsoft-github-policy-service microsoft-github-policy-service Bot added the lib:azure-http-specs For issues/prs related to the @azure-tools/typespec-azure-http-specs package label Jun 15, 2026
@azure-sdk

azure-sdk commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

All changed packages have been documented.

  • @azure-tools/azure-http-specs
Show changes

@azure-tools/azure-http-specs - feature ✏️

Add tests for ARM getLro, postActionPaging, markAsPageable, postPagingLroWithBody, routedGet, and createOrReplaceOptionalBody

@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

⚡ Benchmark Results

⚠️ 30 metric(s) regressed above the +5% threshold:

Metric Baseline Current Change
total 🟡 307.8ms 🔴 585.6ms +90.3% 🔴
loader 🟢 98.5ms 🟢 160.4ms +62.8% 🔴
resolver 🟢 12.0ms 🟢 22.1ms +84.0% 🔴
checker 🟢 101.5ms 🟢 186.5ms +83.8% 🔴
validation 🟢 24.4ms 🟢 42.6ms +74.7% 🔴
 ↳ validation/@azure-tools/typespec-azure-core 🟢 3.4ms 🟢 6.4ms +88.6% 🔴
 ↳ validation/@typespec/http 🟢 2.8ms 🟢 5.1ms +81.0% 🔴
 ↳ validation/@typespec/versioning 🟡 16.6ms 🔴 28.3ms +70.5% 🔴
linter 🟢 70.5ms 🟢 132.2ms +87.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 3.1ms 🟢 5.7ms +84.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🟢 9.2ms 🟡 18.3ms +98.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🟡 10.5ms 🟡 18.8ms +79.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🟡 13.3ms 🔴 24.7ms +85.9% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 2.3ms 🟢 4.6ms +95.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🟡 11.1ms 🔴 22.5ms +102.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 2.8ms 🟢 4.7ms +71.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-child-resources 🟢 1.9ms 🟢 3.9ms +108.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟢 1.9ms 🟢 3.8ms +98.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟢 2.2ms 🟢 4.1ms +91.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 2.5ms 🟢 4.9ms +96.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟢 7.0ms 🟡 12.3ms +74.8% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🟡 11.3ms 🟡 19.5ms +73.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 1.5ms 🟢 2.8ms +85.3% 🔴
emit 🔴 3.27s 🔴 5.90s +80.8% 🔴
 ↳ emit/@azure-tools/typespec-autorest 🟢 96.4ms 🟢 165.0ms +71.1% 🔴
 ↳ emit/@azure-tools/typespec-python 🔴 2.25s 🔴 4.28s +89.9% 🔴
 ↳ emit/@typespec/http-client-js 🔴 751.5ms 🔴 1.19s +57.8% 🔴
 ↳ emit/@typespec/openapi3 🟢 88.9ms 🟢 150.0ms +68.6% 🔴
 ↳ emit/@typespec/openapi3/compute 🟢 75.6ms 🟢 130.1ms +72.1% 🔴
 ↳ emit/@typespec/openapi3/write 🟢 13.4ms 🟢 20.2ms +51.1% 🔴
Full details – comparing 928982e vs baseline b7123b1
Metric Baseline Current Change
total 🟡 307.8ms 🔴 585.6ms +90.3% 🔴
loader 🟢 98.5ms 🟢 160.4ms +62.8% 🔴
resolver 🟢 12.0ms 🟢 22.1ms +84.0% 🔴
checker 🟢 101.5ms 🟢 186.5ms +83.8% 🔴
validation 🟢 24.4ms 🟢 42.6ms +74.7% 🔴
 ↳ validation/@azure-tools/typespec-azure-core 🟢 3.4ms 🟢 6.4ms +88.6% 🔴
 ↳ validation/@typespec/http 🟢 2.8ms 🟢 5.1ms +81.0% 🔴
 ↳ validation/@typespec/rest 🟢 0.4ms 🟢 0.6ms +83.1%
 ↳ validation/@typespec/versioning 🟡 16.6ms 🔴 28.3ms +70.5% 🔴
 ↳ validation/compiler 🟢 1.0ms 🟢 1.7ms +63.6%
linter 🟢 70.5ms 🟢 132.2ms +87.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.0ms 🟢 0.0ms +81.4%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.1ms 🟢 0.2ms +67.1%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 3.1ms 🟢 5.7ms +84.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 0.3ms 🟢 0.7ms +88.5%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.0ms 🟢 0.1ms +48.5%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 0.5ms 🟢 0.9ms +79.0%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 0.3ms 🟢 0.6ms +84.1%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.1ms 🟢 0.2ms +95.6%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.2ms 🟢 0.3ms +78.6%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.1ms 🟢 0.3ms +102.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.1ms 🟢 0.3ms +85.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 0.1ms 🟢 0.3ms +97.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.0ms 🟢 0.0ms +48.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.1ms 🟢 0.1ms +86.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.1ms 🟢 0.1ms +99.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 0.3ms 🟢 0.6ms +86.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.3ms 🟢 0.5ms +70.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🟢 9.2ms 🟡 18.3ms +98.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 0.6ms 🟢 1.1ms +82.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.0ms 🟢 0.1ms +99.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.1ms 🟢 0.3ms +95.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 0.7ms 🟢 1.2ms +70.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 1.2ms 🟢 2.1ms +79.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 1.0ms 🟢 2.0ms +89.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🟡 10.5ms 🟡 18.8ms +79.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🟡 13.3ms 🔴 24.7ms +85.9% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.0ms 🟢 0.0ms +71.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 2.3ms 🟢 4.6ms +95.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.1ms 🟢 0.2ms +107.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.0ms 🟢 0.0ms +107.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.1ms 🟢 0.2ms +99.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.2ms 🟢 0.4ms +96.8%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.1ms 🟢 0.2ms +115.5%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.2ms 🟢 0.3ms +72.9%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.0ms 🟢 0.0ms +44.9%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🟡 11.1ms 🔴 22.5ms +102.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.2ms 🟢 0.3ms +91.0%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.1ms 🟢 0.3ms +88.2%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 2.8ms 🟢 4.7ms +71.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.1ms 🟢 0.1ms +131.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-child-resources 🟢 1.9ms 🟢 3.9ms +108.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-lifecycle-operations 🟢 0.0ms 🟢 0.0ms +74.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟢 1.9ms 🟢 3.8ms +98.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.0ms 🟢 0.1ms +106.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.0ms 🟢 0.1ms +105.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 0.5ms 🟢 1.1ms +114.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟢 2.2ms 🟢 4.1ms +91.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.2ms 🟢 0.4ms +78.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 0.2ms 🟢 0.5ms +122.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.0ms 🟢 0.0ms +74.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.1ms 🟢 0.2ms +118.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.1ms 🟢 0.1ms +101.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.0ms 🟢 0.0ms +96.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.0ms 🟢 0.1ms +111.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.1ms 🟢 0.1ms +78.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.0ms 🟢 0.0ms +76.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.1ms 🟢 0.2ms +86.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.0ms 🟢 0.0ms +108.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.1ms 🟢 0.2ms +78.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 2.5ms 🟢 4.9ms +96.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.2ms 🟢 0.3ms +91.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.1ms 🟢 0.2ms +94.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.1ms 🟢 0.1ms +92.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.0ms 🟢 0.1ms +102.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.1ms 🟢 0.1ms +108.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.0ms 🟢 0.0ms +47.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟢 7.0ms 🟡 12.3ms +74.8% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.0ms 🟢 0.0ms +86.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 0.2ms 🟢 0.3ms +85.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.1ms 🟢 0.1ms +112.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-override-props 🟢 0.0ms 🟢 0.1ms +79.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.1ms 🟢 0.2ms +124.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🟡 11.3ms 🟡 19.5ms +73.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.1ms 🟢 0.1ms +107.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.1ms 🟢 0.1ms +106.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 1.5ms 🟢 2.8ms +85.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.2ms 🟢 0.4ms +90.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.0ms 🟢 0.0ms +74.2%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 0.5ms 🟢 1.1ms +108.7%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 0.1ms 🟢 0.2ms +69.1%
emit 🔴 3.27s 🔴 5.90s +80.8% 🔴
 ↳ emit/@azure-tools/typespec-autorest 🟢 96.4ms 🟢 165.0ms +71.1% 🔴
 ↳ emit/@azure-tools/typespec-python 🔴 2.25s 🔴 4.28s +89.9% 🔴
 ↳ emit/@typespec/http-client-js 🔴 751.5ms 🔴 1.19s +57.8% 🔴
 ↳ emit/@typespec/openapi3 🟢 88.9ms 🟢 150.0ms +68.6% 🔴
 ↳ emit/@typespec/openapi3/compute 🟢 75.6ms 🟢 130.1ms +72.1% 🔴
 ↳ emit/@typespec/openapi3/write 🟢 13.4ms 🟢 20.2ms +51.1% 🔴

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)

@pkg-pr-new

pkg-pr-new Bot commented Jun 15, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@azure-tools/azure-http-specs@4632

commit: 85ad0e3

@azure-sdk

azure-sdk commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

You can try these changes here

🛝 Playground 🌐 Website

Comment thread .chronus/changes/specs-addArmTests-2026-5-15-14-14-34.md Outdated
@@ -93,4 +98,97 @@ interface LroPaging {
""")
@list
postPagingLro is ArmResourceActionAsync<Product, void, ProductListResult>;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, seems we already have LRO pageable case..

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we do, but the existing postPagingLro uses ArmResourceActionAsync with no body, while the new one I'm adding uses a request body, so it is a different template pattern. I do think it's worth to have both

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

Labels

lib:azure-http-specs For issues/prs related to the @azure-tools/typespec-azure-http-specs package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[specs] Push to add more coverage for ARM scenarios

3 participants