Skip to content

Commit 03292b1

Browse files
committed
Run only quarantined tests in outer loop
Allow quarantine flaky tests, which excludes the test from being executed by the normal CI pipelines. The quarantined tests get executed on preset schedule by a cron job for some period of time, after which they could manually unquarantined, if their stability improves. The quarantine attribute and the discoverer as well as some of the MSBuild infra are copied from dotnet/aspnetcore. The test execution is implemented in an Arcade SDK way, which should make it easy to maintain and enhance, if required. The quarantined test can be invoked with the following command: ./build.cmd -projects ./tests/Shared/SolutionTests.proj -restore -build -test /p:IsGitHubActions=true /p:RunQuarantinedTests=true Setting "RunQuarantinedTests=false" (which is default, so can be omitted) will execute all the non-quarantined tests.
1 parent 358405c commit 03292b1

29 files changed

+261
-6
lines changed

.github/workflows/tests-outerloop.yml

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Executes quarantined tests in the outerloop
2+
name: Outerloop Tests
3+
4+
on:
5+
workflow_dispatch:
6+
schedule:
7+
- cron: '0 14 * * *' # 6am PST (14:00 UTC)
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
15+
test:
16+
name: ${{ matrix.os.title }}
17+
runs-on: ${{ matrix.os.name }}
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
os:
22+
- name: ubuntu-latest
23+
title: Linux
24+
- name: windows-latest
25+
title: Windows
26+
steps:
27+
- name: Setup vars (Linux)
28+
if: ${{ matrix.os.name == 'ubuntu-latest' }}
29+
run: |
30+
echo "DOTNET_SCRIPT=./dotnet.sh" >> $GITHUB_ENV
31+
echo "BUILD_SCRIPT=./build.sh" >> $GITHUB_ENV
32+
33+
- name: Setup vars (Windows)
34+
if: ${{ matrix.os.name == 'windows-latest' }}
35+
run: |
36+
echo "DOTNET_SCRIPT=.\dotnet.cmd" >> $env:GITHUB_ENV
37+
echo "BUILD_SCRIPT=.\build.cmd" >> $env:GITHUB_ENV
38+
39+
- name: Checkout code
40+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
41+
42+
- name: Trust HTTPS development certificate (Linux)
43+
if: matrix.os.name == 'ubuntu-latest'
44+
run: ${{ env.DOTNET_SCRIPT }} dev-certs https --trust
45+
46+
- name: Run quarantined tests
47+
run: |
48+
${{ env.BUILD_SCRIPT }} -projects ${{ github.workspace }}/tests/Shared/SolutionTests.proj -restore -build -test -c Release /p:IsGitHubActions=true /p:RunQuarantinedTests=true /bl:${{ github.workspace }}/artifacts/log/Release/test-quarantined.binlog
49+
50+
- name: Upload logs, and test results
51+
if: always()
52+
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
53+
with:
54+
name: logs-${{ matrix.os.name }}
55+
path: |
56+
${{ github.workspace }}/artifacts/log/**/*.binlog
57+
${{ github.workspace }}/artifacts/log/**/TestLogs/**
58+
${{ github.workspace }}/TestResults/**

Aspire.sln

+1-1
Original file line numberDiff line numberDiff line change
@@ -3915,7 +3915,7 @@ Global
39153915
{39AD3DBA-6B79-44FC-9637-232544D0CA46} = {27381127-6C45-4B4C-8F18-41FF48DFE4B2}
39163916
{0C97F423-DAAE-4B63-B1B1-CB85E2840B98} = {27381127-6C45-4B4C-8F18-41FF48DFE4B2}
39173917
{23075FC1-D893-434D-9A20-02870B96ABA7} = {C424395C-1235-41A4-BF55-07880A04368C}
3918-
{F371C3EE-8AB3-4261-A5F2-9A1FF77ADC19} = {C424395C-1235-41A4-BF55-07880A04368C}
3918+
{F371C3EE-8AB3-4261-A5F2-9A1FF77ADC19} = {4981B3A5-4AFD-4191-BF7D-8692D9783D60}
39193919
{6E7B2D62-A1A4-4232-8FA9-DB01A454B9C1} = {C424395C-1235-41A4-BF55-07880A04368C}
39203920
{26E8EA4C-D3A6-4C6A-900D-2AA2C80D0AAF} = {C424395C-1235-41A4-BF55-07880A04368C}
39213921
{7C4F0F84-BAEC-469D-A3BC-28209B2C11AC} = {4981B3A5-4AFD-4191-BF7D-8692D9783D60}

Directory.Build.targets

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</ItemGroup>
1616

1717
<Import Condition="'$(SampleProject)' == 'true' or '$(CI)' != 'true' " Project="eng\Versions.dev.targets" />
18-
<Import Condition="'$(SampleProject)' != 'true' and '$(CI)' == 'true' " Project="eng\Versions.targets" />
18+
<Import Condition="'$(SampleProject)' != 'true' and '$(CI)' == 'true' and '$(IsGitHubActions)' != 'true' " Project="eng\Versions.targets" />
1919

2020
<Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
2121

eng/Testing.props

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<Project>
2+
<PropertyGroup Condition="'$(RunQuarantinedTests)' == 'true'">
3+
<ArtifactsLogDir>$(ArtifactsDir)log\$(Configuration)\Quarantined\</ArtifactsLogDir>
4+
<ArtifactsTestResultsDir>$(ArtifactsDir)TestResults\$(Configuration)\Quarantined\</ArtifactsTestResultsDir>
5+
<TestRunnerAdditionalArguments></TestRunnerAdditionalArguments>
6+
</PropertyGroup>
7+
8+
<PropertyGroup Condition="'$(UseVSTestRunner)' != 'true'">
9+
<_QuarantinedTestRunAdditionalArgs>-trait "Quarantined=true"</_QuarantinedTestRunAdditionalArgs>
10+
<_NonQuarantinedTestRunAdditionalArgs>-notrait "Quarantined=true"</_NonQuarantinedTestRunAdditionalArgs>
11+
</PropertyGroup>
12+
13+
<PropertyGroup Condition="'$(UseVSTestRunner)' == 'true'">
14+
<_QuarantinedTestRunAdditionalArgs>--filter Quarantined=true</_QuarantinedTestRunAdditionalArgs>
15+
<_NonQuarantinedTestRunAdditionalArgs>--filter Quarantined!=true</_NonQuarantinedTestRunAdditionalArgs>
16+
</PropertyGroup>
17+
18+
<PropertyGroup>
19+
<TestRunnerAdditionalArguments Condition="'$(RunQuarantinedTests)' == ''">$(_NonQuarantinedTestRunAdditionalArgs) $(TestRunnerAdditionalArguments)</TestRunnerAdditionalArguments>
20+
<TestRunnerAdditionalArguments Condition="'$(RunQuarantinedTests)' == 'true'">$(_QuarantinedTestRunAdditionalArgs) $(TestRunnerAdditionalArguments)</TestRunnerAdditionalArguments>
21+
</PropertyGroup>
22+
</Project>

eng/Testing.targets

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project>
2+
<PropertyGroup Condition=" '$(SkipTests)' == '' and '$(IsTestProject)' == 'true' ">
3+
<!-- Skip tests by default unless explicitly set to false -->
4+
<SkipTests>true</SkipTests>
5+
6+
<!-- Only run tests if the build is running on GitHub Actions -->
7+
<SkipTests Condition=" '$(IsGitHubActions)' == 'true' and '$(RunTestsOnGithubActions)' == 'true' ">false</SkipTests>
8+
9+
<!-- Only run tests if the build is running on Helix infra -->
10+
<SkipTests Condition=" '$(IsHelix)' == 'true' and '$(RunTestsOnHelix)' == 'true' ">false</SkipTests>
11+
12+
<!-- Otherwise, run tests on AzDO CI agents -->
13+
<SkipTests Condition=" '$(RunTestsOnGithubActions)' != 'true' and '$(RunTestsOnHelix)' != 'true' ">true</SkipTests>
14+
</PropertyGroup>
15+
</Project>

global.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@
2222
}
2323
},
2424
"msbuild-sdks": {
25+
"Microsoft.Build.NoTargets": "3.7.0",
26+
"Microsoft.Build.Traversal": "3.2.0",
2527
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2",
2628
"Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2",
27-
"Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.25164.2",
28-
"Microsoft.Build.NoTargets": "3.7.0"
29+
"Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.25164.2"
2930
}
3031
}

tests/Aspire.Cli.Tests/Hosting/CliBackchannelTests.cs

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Net.Sockets;
55
using System.Threading.Channels;
66
using Aspire.Cli;
7+
using Aspire.Components.Common.Tests;
78
using Aspire.Hosting.Utils;
89
using StreamJsonRpc;
910
using Xunit;
@@ -50,6 +51,7 @@ public async Task AppHostRespondsToPingWithMatchingTimestamp()
5051

5152
[Fact]
5253
[ActiveIssue("https://github.com/dotnet/aspire/issues/8113")]
54+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/8113")]
5355
public async Task AppHostConnectsBackToCliWithPingRequest()
5456
{
5557
var testStartedTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

tests/Aspire.Cli.Tests/Hosting/CliOrphanDetectorTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public async Task CliOrphanDetectorAfterTheProcessWasRunningForAWhileThenStops()
9595

9696
[Fact]
9797
[ActiveIssue("https://github.com/dotnet/aspire/issues/7920", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningOnGithubActions), nameof(PlatformDetection.IsWindows))]
98+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7920")]
9899
public async Task AppHostExitsWhenCliProcessPidDies()
99100
{
100101
using var fakeCliProcess = RemoteExecutor.Invoke(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using Xunit.Sdk;
5+
6+
namespace Aspire.Components.Common.Tests;
7+
8+
/// <summary>
9+
/// Marks a test as "Quarantined" so that the build will sequester it and ignore failures.
10+
/// </summary>
11+
/// <remarks>
12+
/// <para>
13+
/// This attribute works by applying xUnit.net "Traits" based on the criteria specified in the attribute
14+
/// properties. Once these traits are applied, build scripts can include/exclude tests based on them.
15+
/// </para>
16+
/// </remarks>
17+
/// <example>
18+
/// <code>
19+
/// [Fact]
20+
/// [QuarantinedTest]
21+
/// public void FlakyTest()
22+
/// {
23+
/// // Flakiness
24+
/// }
25+
/// </code>
26+
///
27+
/// <para>
28+
/// The above example generates the following facet:
29+
/// </para>
30+
///
31+
/// <list type="bullet">
32+
/// <item>
33+
/// <description><c>Quarantined</c> = <c>true</c></description>
34+
/// </item>
35+
/// </list>
36+
/// </example>
37+
[TraitDiscoverer("Aspire.Components.Common.Tests.QuarantinedTestTraitDiscoverer", "Aspire.Components.Common.Tests")]
38+
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
39+
public sealed class QuarantinedTestAttribute : Attribute, ITraitAttribute
40+
{
41+
/// <summary>
42+
/// Gets an optional reason for the quarantining, such as a link to a GitHub issue URL with more details as to why the test is quarantined.
43+
/// </summary>
44+
public string? Reason { get; }
45+
46+
/// <summary>
47+
/// Initializes a new instance of the <see cref="QuarantinedTestAttribute"/> class with an optional <see cref="Reason"/>.
48+
/// </summary>
49+
/// <param name="reason">A reason that this test is quarantined.</param>
50+
public QuarantinedTestAttribute(string? reason = null)
51+
{
52+
Reason = reason;
53+
}
54+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using Xunit.Abstractions;
5+
using Xunit.Sdk;
6+
7+
// Do not change this namespace without changing the usage in QuarantinedTestAttribute
8+
namespace Aspire.Components.Common.Tests;
9+
10+
public sealed class QuarantinedTestTraitDiscoverer : ITraitDiscoverer
11+
{
12+
public IEnumerable<KeyValuePair<string, string>> GetTraits(IAttributeInfo traitAttribute)
13+
{
14+
if (traitAttribute is ReflectionAttributeInfo attribute && attribute.Attribute is QuarantinedTestAttribute)
15+
{
16+
yield return new KeyValuePair<string, string>("Quarantined", "true");
17+
}
18+
else
19+
{
20+
throw new InvalidOperationException("The 'QuarantinedTest' attribute is only supported via reflection.");
21+
}
22+
}
23+
}

tests/Aspire.Dashboard.Tests/Integration/Playwright/AppBarTests.cs

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4+
using Aspire.Components.Common.Tests;
45
using Aspire.Dashboard.Resources;
56
using Aspire.Dashboard.Tests.Integration.Playwright.Infrastructure;
67
using Microsoft.AspNetCore.InternalTesting;
@@ -18,6 +19,7 @@ public AppBarTests(DashboardServerFixture dashboardServerFixture)
1819

1920
[Fact]
2021
[ActiveIssue("https://github.com/dotnet/aspire/issues/7943")]
22+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7943")]
2123
public async Task AppBar_Change_Theme()
2224
{
2325
// Arrange
@@ -65,6 +67,7 @@ await AsyncTestHelpers.AssertIsTrueRetryAsync(
6567

6668
[Fact]
6769
[ActiveIssue("https://github.com/dotnet/aspire/issues/7943")]
70+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7943")]
6871
public async Task AppBar_Change_Theme_ReloadPage()
6972
{
7073
// Arrange

tests/Aspire.Dashboard.Tests/Integration/Playwright/BrowserTokenAuthenticationTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public BrowserTokenAuthenticationTests(BrowserTokenDashboardServerFixture dashbo
3030

3131
[Fact]
3232
[ActiveIssue("https://github.com/dotnet/aspire/issues/7921", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningOnGithubActions), nameof(PlatformDetection.IsWindows))]
33+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7921")]
3334
public async Task BrowserToken_LoginPage_Success_RedirectToResources()
3435
{
3536
// Arrange

tests/Aspire.Hosting.Azure.Tests/AzureCosmosDBEmulatorFunctionalTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ await pipeline.ExecuteAsync(async token =>
269269
[Fact]
270270
[RequiresDocker]
271271
[ActiveIssue("https://github.com/dotnet/aspire/issues/7178")]
272+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7178")]
272273
public async Task AddAzureCosmosDB_RunAsEmulator_CreatesDatabase()
273274
{
274275
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));

tests/Aspire.Hosting.Elasticsearch.Tests/ElasticsearchFunctionalTests.cs

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class ElasticsearchFunctionalTests(ITestOutputHelper testOutputHelper)
2727
[Fact]
2828
[RequiresDocker]
2929
[ActiveIssue("https://github.com/dotnet/aspire/issues/5821")]
30+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/5821")]
3031
public async Task VerifyElasticsearchResource()
3132
{
3233
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));
@@ -70,6 +71,7 @@ await pipeline.ExecuteAsync(
7071
[InlineData(false)]
7172
[RequiresDocker]
7273
[ActiveIssue("https://github.com/dotnet/aspire/issues/7276")]
74+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7276")]
7375
public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume)
7476
{
7577
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));
@@ -233,6 +235,7 @@ await pipeline.ExecuteAsync(
233235
[Fact]
234236
[RequiresDocker]
235237
[ActiveIssue("https://github.com/dotnet/aspire/issues/5844")]
238+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/5844")]
236239
public async Task VerifyWaitForOnElasticsearchBlocksDependentResources()
237240
{
238241
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));

tests/Aspire.Hosting.MongoDB.Tests/MongoDbFunctionalTests.cs

+2
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ await pipeline.ExecuteAsync(async token =>
105105
[InlineData(false)]
106106
[RequiresDocker]
107107
[ActiveIssue("https://github.com/dotnet/aspire/issues/7293")]
108+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7293")]
108109
public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume)
109110
{
110111
var dbName = "testdb";
@@ -249,6 +250,7 @@ await pipeline.ExecuteAsync(async token =>
249250
[Fact]
250251
[RequiresDocker]
251252
[ActiveIssue("https://github.com/dotnet/aspire/issues/5937")]
253+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/5937")]
252254
public async Task VerifyWithInitBindMount()
253255
{
254256
// Creates a script that should be executed when the container is initialized.

tests/Aspire.Hosting.NodeJs.Tests/NodeFunctionalTests.cs

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public NodeFunctionalTests(NodeAppFixture nodeJsFixture)
1919
[Fact]
2020
[RequiresTools(["node"])]
2121
[ActiveIssue("https://github.com/dotnet/aspire/issues/4508", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningOnCI))]
22+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/4508")]
2223
public async Task VerifyNodeAppWorks()
2324
{
2425
using var cts = new CancellationTokenSource(TimeSpan.FromMinutes(1));
@@ -31,6 +32,7 @@ public async Task VerifyNodeAppWorks()
3132
[Fact]
3233
[RequiresTools(["npm"])]
3334
[ActiveIssue("https://github.com/dotnet/aspire/issues/4508", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningOnCI))]
35+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/4508")]
3436
public async Task VerifyNpmAppWorks()
3537
{
3638
using var cts = new CancellationTokenSource(TimeSpan.FromMinutes(1));

tests/Aspire.Hosting.Oracle.Tests/OracleFunctionalTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
namespace Aspire.Hosting.Oracle.Tests;
1717

1818
[ActiveIssue("https://github.com/dotnet/aspire/issues/5362", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningOnCI))]
19+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/5362")]
1920
public class OracleFunctionalTests(ITestOutputHelper testOutputHelper)
2021
{
2122
// Folders created for mounted folders need to be granted specific permissions

tests/Aspire.Hosting.Redis.Tests/RedisFunctionalTests.cs

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class RedisFunctionalTests(ITestOutputHelper testOutputHelper)
2626
[Fact]
2727
[RequiresDocker]
2828
[ActiveIssue("https://github.com/dotnet/aspire/issues/7177")]
29+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7177")]
2930
public async Task VerifyWaitForOnRedisBlocksDependentResources()
3031
{
3132
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3));
@@ -125,6 +126,7 @@ public async Task VerifyRedisResource()
125126
[Fact]
126127
[RequiresDocker]
127128
[ActiveIssue("https://github.com/dotnet/aspire/issues/7291")]
129+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7291")]
128130
public async Task VerifyDatabasesAreNotDuplicatedForPersistentRedisInsightContainer()
129131
{
130132
var randomResourceSuffix = Random.Shared.Next(10000).ToString();
@@ -230,6 +232,7 @@ public async Task VerifyDatabasesAreNotDuplicatedForPersistentRedisInsightContai
230232
[Fact]
231233
[RequiresDocker]
232234
[ActiveIssue("https://github.com/dotnet/aspire/issues/6099")]
235+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/6099")]
233236
public async Task VerifyWithRedisInsightImportDatabases()
234237
{
235238
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(5));
@@ -538,6 +541,7 @@ public async Task PersistenceIsDisabledByDefault()
538541
[InlineData(true)]
539542
[RequiresDocker]
540543
[ActiveIssue("https://github.com/dotnet/aspire/issues/7176")]
544+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7176")]
541545
public async Task RedisInsightWithDataShouldPersistStateBetweenUsages(bool useVolume)
542546
{
543547
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));

tests/Aspire.Hosting.Testing.Tests/TestingBuilderTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ public async Task GetHttpClientBeforeStart(bool genericEntryPoint)
212212
[InlineData(true, false)]
213213
[InlineData(true, true)]
214214
[ActiveIssue("https://github.com/dotnet/aspire/issues/7930", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningOnGithubActions), nameof(PlatformDetection.IsWindows))]
215+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/7930")]
215216
public async Task ArgsPropagateToAppHostConfiguration(bool genericEntryPoint, bool directArgs)
216217
{
217218
string[] args = directArgs ? ["APP_HOST_ARG=42"] : [];

tests/Aspire.Hosting.Testing.Tests/TestingFactoryTests.cs

+2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public void CanGetResources()
4747
[Fact]
4848
[RequiresDocker]
4949
[ActiveIssue("https://github.com/dotnet/aspire/issues/4650", typeof(PlatformDetection), nameof(PlatformDetection.IsRunningOnCI))]
50+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/4650")]
5051
public async Task HttpClientGetTest()
5152
{
5253
// Wait for the application to be ready
@@ -70,6 +71,7 @@ public void SetsCorrectContentRoot()
7071
[Fact]
7172
[RequiresDocker]
7273
[ActiveIssue("https://github.com/dotnet/aspire/issues/4650")]
74+
[QuarantinedTest("https://github.com/dotnet/aspire/issues/4650")]
7375
public async Task SelectsFirstLaunchProfile()
7476
{
7577
var config = _app.Services.GetRequiredService<IConfiguration>();

0 commit comments

Comments
 (0)