Skip to content

[arm-spector] Add ARM spector test for ArmResourceDeploymentScope#4535

Open
XiaofeiCao wants to merge 2 commits into
Azure:mainfrom
XiaofeiCao:arm-spector-deployment-scope-upstream
Open

[arm-spector] Add ARM spector test for ArmResourceDeploymentScope#4535
XiaofeiCao wants to merge 2 commits into
Azure:mainfrom
XiaofeiCao:arm-spector-deployment-scope-upstream

Conversation

@XiaofeiCao
Copy link
Copy Markdown
Contributor

@XiaofeiCao XiaofeiCao commented Jun 2, 2026

Summary

Adds ARM spector test scenarios for armResourceIdentifier with ArmResourceDeploymentScope to prevent regressions like the one caused by #2670 (casing change of deployment scope values).

Scenarios Added

Scenario Description
Azure_ResourceManager_CommonProperties_ArmResourceIdentifiers_get GET a resource with armResourceIdentifier properties using various scope configurations
Azure_ResourceManager_CommonProperties_ArmResourceIdentifiers_createOrReplace PUT (create) a resource with armResourceIdentifier properties

Properties Tested

The test resource includes armResourceIdentifier fields covering all deployment scope configurations:

  • simpleArmId — basic armResourceIdentifier without type or scopes
  • armIdWithTypearmResourceIdentifier with resource type only (Microsoft.Network/virtualNetworks)
  • armIdWithTypeAndScopearmResourceIdentifier with type and specific scopes ("Tenant", "ResourceGroup")
  • armIdWithAllScopesarmResourceIdentifier with all five deployment scopes ("Tenant", "Subscription", "ResourceGroup", "ManagementGroup", "Extension")

Files Changed

  • New: packages/azure-http-specs/specs/azure/resource-manager/common-properties/arm-resource-identifier.tsp — TSP spec with resource model and scenarios
  • Modified: packages/azure-http-specs/specs/azure/resource-manager/common-properties/main.tsp — added import
  • Modified: packages/azure-http-specs/specs/azure/resource-manager/common-properties/mockapi.ts — mock API implementations
  • Auto-generated: packages/azure-http-specs/spec-summary.md — regenerated scenario docs
  • New: .chronus/changes/add-arm-spector-issue-1-2026-06-01.md — changeset

Validation

  • tsc build passes
  • validate-scenarios passes
  • validate-mock-apis passes (all scenarios have implementations)
  • cspell passes
  • prettier formatting applied
  • eslint passes

…ifier with scopes)

Add spector test scenarios for armResourceIdentifier with deployment scopes
to the common-properties test suite. This covers:
- armResourceIdentifier without type/scopes (basic)
- armResourceIdentifier with type only
- armResourceIdentifier with type and specific scopes (Tenant, ResourceGroup)
- armResourceIdentifier with all scopes (Tenant, Subscription, ResourceGroup, ManagementGroup, Extension)

Scenarios include GET and PUT operations with mock API implementations.

Closes #1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@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 2, 2026
@azure-sdk
Copy link
Copy Markdown
Collaborator

azure-sdk commented Jun 2, 2026

All changed packages have been documented.

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

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

Add ARM spector test scenario for ArmResourceDeploymentScope (armResourceIdentifier with scopes)

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented Jun 2, 2026

Open in StackBlitz

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

commit: e6e6418

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

⚡ Benchmark Results

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

Metric Baseline Current Change
loader 🟢 156.5ms 🟢 195.9ms +25.2% 🔴
checker 🟢 189.0ms 🟡 204.0ms +8.0% 🔴
linter 🟢 130.5ms 🟢 144.3ms +10.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🟡 19.2ms 🔴 21.5ms +12.0% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🟡 19.0ms 🔴 21.4ms +12.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 22.6ms 🔴 26.8ms +18.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 4.5ms 🟢 5.5ms +24.0% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 21.3ms 🔴 24.0ms +12.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 12.2ms 🟡 14.7ms +20.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🟡 19.5ms 🔴 23.0ms +18.0% 🔴
 ↳ emit/@azure-tools/typespec-python 🔴 4.24s 🔴 4.47s +5.3% 🔴
Full details – comparing 68581cc vs baseline 56d1590
Metric Baseline Current Change
total 🔴 6.49s 🔴 6.79s +4.7%
loader 🟢 156.5ms 🟢 195.9ms +25.2% 🔴
resolver 🟢 21.6ms 🟢 18.5ms -14.6% 🟢
checker 🟢 189.0ms 🟡 204.0ms +8.0% 🔴
validation 🟢 43.2ms 🟢 43.2ms -0.1%
 ↳ validation/@azure-tools/typespec-azure-core 🟢 6.4ms 🟢 7.1ms +10.8%
 ↳ validation/@typespec/http 🟢 5.4ms 🟢 6.1ms +13.7%
 ↳ validation/@typespec/rest 🟢 0.6ms 🟢 0.6ms -4.0%
 ↳ validation/@typespec/versioning 🔴 28.7ms 🔴 27.5ms -4.1%
 ↳ validation/compiler 🟢 1.6ms 🟢 1.4ms -13.4%
linter 🟢 130.5ms 🟢 144.3ms +10.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.0ms 🟢 0.0ms -4.7%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.2ms 🟢 0.2ms -5.1%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 5.6ms 🟢 5.9ms +5.1%
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 0.6ms 🟢 0.7ms +9.3%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.1ms 🟢 0.1ms +5.9%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 0.9ms 🟢 0.8ms -3.9%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 0.6ms 🟢 0.6ms +2.7%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.2ms 🟢 0.2ms -1.7%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.3ms 🟢 0.3ms +3.1%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.3ms 🟢 0.3ms +4.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.2ms 🟢 0.2ms +3.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 0.3ms 🟢 0.3ms -3.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.0ms 🟢 0.0ms +1.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.1ms 🟢 0.1ms +6.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.1ms 🟢 0.1ms -4.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 0.6ms 🟢 0.6ms +0.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.4ms 🟢 0.4ms -9.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🟡 19.2ms 🔴 21.5ms +12.0% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 1.1ms 🟢 1.1ms +1.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.1ms 🟢 0.1ms +10.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.2ms 🟢 0.3ms +3.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 1.1ms 🟢 1.4ms +26.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 2.1ms 🟢 2.1ms -0.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 1.9ms 🟢 1.9ms -3.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🟡 19.0ms 🔴 21.4ms +12.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 22.6ms 🔴 26.8ms +18.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.0ms 🟢 0.0ms -17.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 4.5ms 🟢 5.5ms +24.0% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.2ms 🟢 0.2ms +6.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.0ms 🟢 0.0ms -4.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.2ms 🟢 0.2ms +9.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.4ms 🟢 0.3ms -2.3%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.2ms 🟢 0.2ms -14.7%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.3ms 🟢 0.3ms -7.4%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.0ms 🟢 0.0ms -29.0%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 21.3ms 🔴 24.0ms +12.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.3ms 🟢 0.3ms +16.6%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.3ms 🟢 0.3ms -0.8%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 5.0ms 🟢 5.6ms +11.1%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.1ms 🟢 0.1ms +6.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟢 3.8ms 🟢 4.3ms +14.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.1ms 🟢 0.1ms +9.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.1ms 🟢 0.1ms +5.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 4.7ms 🟢 5.3ms +12.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟢 4.2ms 🟢 4.5ms +5.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.4ms 🟢 0.4ms -1.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 0.4ms 🟢 0.5ms +13.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.0ms 🟢 0.0ms +6.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.2ms 🟢 0.2ms +7.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.1ms 🟢 0.1ms +14.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.0ms 🟢 0.0ms -16.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.1ms 🟢 0.1ms +0.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.1ms 🟢 0.1ms +1.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.0ms 🟢 0.0ms +0.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.2ms 🟢 0.2ms +12.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.0ms 🟢 0.0ms -31.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.2ms 🟢 0.2ms -0.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 4.4ms 🟢 4.8ms +10.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.3ms 🟢 0.3ms +9.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.2ms 🟢 0.2ms +6.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.1ms 🟢 0.1ms +5.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.1ms 🟢 0.1ms +6.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.1ms 🟢 0.1ms +5.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.0ms 🟢 0.0ms -6.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 12.2ms 🟡 14.7ms +20.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.0ms 🟢 0.0ms -11.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 0.3ms 🟢 0.3ms -6.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.1ms 🟢 0.1ms -2.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.2ms 🟢 0.2ms +11.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🟡 19.5ms 🔴 23.0ms +18.0% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.1ms 🟢 0.1ms +2.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.1ms 🟢 0.2ms +5.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 2.7ms 🟢 2.3ms -16.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.4ms 🟢 0.4ms +3.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.0ms 🟢 0.0ms -1.7%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 1.0ms 🟢 1.1ms +5.5%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 0.2ms 🟢 0.2ms -25.0%
emit 🔴 5.89s 🔴 6.13s +4.2%
 ↳ emit/@azure-tools/typespec-autorest 🟢 199.7ms 🟡 204.9ms +2.6%
 ↳ emit/@azure-tools/typespec-python 🔴 4.24s 🔴 4.47s +5.3% 🔴
 ↳ emit/@typespec/http-client-js 🔴 1.17s 🔴 1.19s +1.7%
 ↳ emit/@typespec/openapi3 🟢 150.5ms 🟢 156.3ms +3.9%
 ↳ emit/@typespec/openapi3/compute 🟢 131.4ms 🟢 137.1ms +4.3%
 ↳ emit/@typespec/openapi3/write 🟢 19.5ms 🟢 19.4ms -0.6%

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

azure-sdk commented Jun 2, 2026

You can try these changes here

🛝 Playground 🌐 Website

Copy link
Copy Markdown
Member

@weidongxu-microsoft weidongxu-microsoft left a comment

Choose a reason for hiding this comment

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

Please wait for sign off from .NET dev

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.

Add Spector tests for ArmResourceDeploymentScope

4 participants