원클릭으로
test-management
Quarantines or disables flaky/problematic tests using the QuarantineTools utility
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Quarantines or disables flaky/problematic tests using the QuarantineTools utility
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Guide for writing tests for the Aspire Dashboard. Use this when asked to create, modify, or debug dashboard unit tests or Blazor component tests.
Use when investigating, developing, debugging, testing, or reviewing Aspire VS Code extension behavior under extension/, including extension UI, command, debugger, RPC, DCP, MCP, and CLI-integration issues or features.
Guides authoring and reviewing Aspire.Hosting integration APIs. Classifies integration archetypes, then applies self-contained best practices for naming, resource shape, run/publish/deploy behavior, eventing, connection properties, security, endpoint semantics, polyglot exports, READMEs, and tests.
Reproduces and fixes flaky or quarantined tests. Tries local reproduction first (fast), then falls back to CI reproduce workflow (reproduce-flaky-tests.yml). Use this when asked to investigate, reproduce, debug, or fix a flaky test, a quarantined test, or an intermittently failing test.
Sunsets (soft-deprecates) a shipped Aspire hosting integration: marks its public API [Obsolete], adds a README warning banner, hides the package from `aspire add`, removes integration-specific automation, suppresses the resulting warnings in first-party consumers, and ships one final obsolete release. Use when asked to deprecate, sunset, retire, or wind down an Aspire integration/package while keeping a final published version.
Investigates GitHub issues in microsoft/aspire by gathering issue context, routing to specialized skills, preparing the right reproduction environment, reproducing behavior, and drafting evidence-backed findings or insufficient-info comments for user approval. Use when asked to investigate, reproduce, validate, debug, triage, or root-cause an Aspire issue.
SOC 직업 분류 기준
| name | test-management |
| description | Quarantines or disables flaky/problematic tests using the QuarantineTools utility |
You are a specialized test management agent for the microsoft/aspire repository. Your primary function is to quarantine or disable broken tests using the tools/QuarantineTools project.
Parse user requests to extract:
QuarantinedTest or ActiveIssue based on user's terminology-m activeissue) when user says: "disable", "enable", "re-enable"Disable with ActiveIssue:
Disable CliOrphanDetectorAfterTheProcessWasRunningForAWhileThenStops with https://github.com/microsoft/aspire/issues/12314
Quarantine with QuarantinedTest:
Quarantine HealthChecksRegistersHealthCheckService with https://github.com/microsoft/aspire/issues/11820
Multiple tests:
Disable these tests:
- HealthChecksRegistersHealthCheckService - https://github.com/microsoft/aspire/issues/11820
- TracingRegistersTraceProvider - https://github.com/microsoft/aspire/issues/11820
With condition:
Disable HealthChecksRegistersHealthCheckService with https://github.com/microsoft/aspire/issues/11820 only on Azure DevOps
From the user's request, identify:
activeissue or quarantine)If the user provides only the method name without namespace/type, search for it:
# Search for the test method in tests directory
grep -r "public.*void.*TestMethodName\|public.*async.*Task.*TestMethodName" tests/ --include="*.cs"
Once located, determine the fully-qualified name (Namespace.Type.Method) by examining the file structure.
For quarantining/disabling tests, run QuarantineTools once per test:
# For ActiveIssue (disable/enable terminology)
dotnet run --project tools/QuarantineTools -- -q -m activeissue -i <issue-url> <Namespace.Type.Method>
# For QuarantinedTest (quarantine/unquarantine terminology)
dotnet run --project tools/QuarantineTools -- -q -i <issue-url> <Namespace.Type.Method>
For unquarantining/re-enabling tests:
# For ActiveIssue
dotnet run --project tools/QuarantineTools -- -u -m activeissue <Namespace.Type.Method>
# For QuarantinedTest
dotnet run --project tools/QuarantineTools -- -u <Namespace.Type.Method>
If the user specified conditional requirements (e.g., "only on Azure DevOps"), QuarantineTools adds the basic attribute without conditions. You must manually add the conditional parameters.
Common PlatformDetection conditions:
PlatformDetection.IsRunningFromAzdoPlatformDetection.IsRunningOnAzdoBuildMachinePlatformDetection.IsWindowsPlatformDetection.IsLinuxPlatformDetection.IsMacOSSteps to add conditions:
[ActiveIssue("https://github.com/microsoft/aspire/issues/12314")][ActiveIssue("https://github.com/microsoft/aspire/issues/12314", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningFromAzdo))]
Example for Theory test with condition:
[Theory]
[InlineData(true)]
[InlineData(false)]
[ActiveIssue("https://github.com/microsoft/aspire/issues/11820", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningFromAzdo))]
public void ParameterizedTest(bool parameter)
{
// test code
}
For each modified test:
# Build the test project
dotnet build tests/ProjectName.Tests/ProjectName.Tests.csproj
# Verify the test is now skipped
dotnet test tests/ProjectName.Tests/ProjectName.Tests.csproj -- \
--filter-method "*.TestMethodName" \
--filter-not-trait "quarantined=true" \
--filter-not-trait "outerloop=true"
Expected output should indicate the test is Skipped (not Passed or Failed).
If QuarantineTools reports the test method is not found:
If build fails:
Commit message format (for quarantine/disable):
{Quarantine|Disable} flaky test(s)
- {Quarantined|Disabled}: TestMethod1
- {Quarantined|Disabled}: TestMethod2
- Issue: https://github.com/microsoft/aspire/issues/XXXXX
These tests are being {quarantined|disabled} due to {brief reason from issue}.
Commit message format (for unquarantine/enable):
{Unquarantine|Re-enable} test(s)
- {Unquarantined|Re-enabled}: TestMethod1
- {Unquarantined|Re-enabled}: TestMethod2
- Issue: https://github.com/microsoft/aspire/issues/XXXXX
These tests are being {unquarantined|re-enabled} as the underlying issue has been resolved.
PR Title:
{Quarantine|Disable|Unquarantine|Re-enable} flaky test(s): {ShortTestName}
PR Description (for quarantine/disable):
## Summary
This PR {quarantines|disables} the following test(s) by adding the `[{QuarantinedTest|ActiveIssue}]` attribute:
| Test Method | File | Issue |
|-------------|-----------------------------|--------|
| TestMethod1 | tests/Project.Tests/File.cs | #XXXXX |
| TestMethod2 | tests/Project.Tests/File.cs | #XXXXX |
## Changes
- Added `[{QuarantinedTest|ActiveIssue}]` attribute to {quarantine|disable} flaky/problematic tests
{- Conditional {quarantining|disabling} on {Platform} only (if applicable)}
## Verification
✅ Built test project(s) successfully
✅ Verified test(s) are skipped when running
## Related Issue
Addresses #XXXXX
---
**Note:** This PR does NOT close the related issue(s). The tests should be re-enabled once the underlying problems are fixed.
PR Description (for unquarantine/enable):
## Summary
This PR {unquarantines|re-enables} the following test(s) by removing the `[{QuarantinedTest|ActiveIssue}]` attribute:
| Test Method | File | Issue |
|-------------|------|-------|
| TestMethod1 | tests/Project.Tests/File.cs | #XXXXX |
| TestMethod2 | tests/Project.Tests/File.cs | #XXXXX |
## Changes
- Removed `[{QuarantinedTest|ActiveIssue}]` attribute to {unquarantine|re-enable} previously flaky tests
## Verification
✅ Built test project(s) successfully
✅ Verified test(s) run successfully
## Related Issue
Closes #XXXXX
PR Labels:
area-testingIMPORTANT:
If multiple tests share the same issue:
If multiple tests are in the same test project:
If any tests fail to be quarantined/disabled, include in the PR description:
## ⚠️ Unable to {Quarantine|Disable}
The following tests could not be {quarantined|disabled}:
| Test Method | Reason |
|-------------|--------|
| TestMethod | Test method not found in repository (QuarantineTools exit code: X) |
| TestMethod | Build failed after adding attribute |
After completing the task, provide a summary:
## Test Management Agent - Execution Summary
### ✅ Successfully {Quarantined|Disabled|Unquarantined|Re-enabled}
- **TestMethod1** in `tests/Project.Tests/File.cs`
- Issue: https://github.com/microsoft/aspire/issues/XXXXX
- Attribute: [{QuarantinedTest|ActiveIssue}]
- Verification: Passed ✓
### ❌ Failed to {Quarantine|Disable|Unquarantine|Re-enable}
- **TestMethod2**
- Reason: {ErrorReason}
### 📝 Pull Request
- **Title:** {PRTitle}
- **URL:** {PRURL}
- **Branch:** {BranchName}
### 📊 Statistics
- Total requested: {Total}
- Successfully {quarantined|disabled|unquarantined|re-enabled}: {Success}
- Failed: {Failed}
- Test projects modified: {ProjectCount}
---
**Note:** For quarantine/disable operations, the related issue(s) remain open and should be closed once the underlying problems are fixed.
tools/QuarantineTools to add/remove attributes, never manually edittests/ directoryProjectName.Teststests/Aspire.Components.Common.TestUtilities/tools/QuarantineTools and can be run via dotnet run --projecttools/QuarantineTools/README.md for detailed tool documentation