Quarantines or disables flaky/problematic tests using the QuarantineTools utility
npx skills add https://github.com/microsoft/aspire --skill test-management
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 documentationToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Use when implementing any feature or bugfix, before writing implementation code
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
Expert guidance for systematic backtesting of trading strategies. Use when developing, testing, stress-testing, or validating quantitative trading strategies. Covers "beating ideas to death" methodology, parameter robustness testing, slippage modeling, bias prevention, and interpreting backtest results. Applicable when user asks about backtesting, strategy validation, robustness testing, avoiding overfitting, or systematic trading development.
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use for submitting experiments via API, tracking experiment status, downloading results, optimizing protein sequences for better expression using computational tools (NetSolP, SoluProt, SolubleMPNN, ESM), or managing protein design workflows with wet-lab validation.
This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.
Take microsoft/test-management from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.