From 2d6fa60dab871a2380ceb6d884dcf8e554f636e8 Mon Sep 17 00:00:00 2001 From: Glen Date: Mon, 15 Jun 2026 10:28:37 +0200 Subject: [PATCH] Stabilize StarWars subscription tests against CI timing flake --- .../StarWarsCodeFirstTests.cs | 56 +++++++------------ 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/src/HotChocolate/Core/test/Execution.Tests/Integration/StarWarsCodeFirst/StarWarsCodeFirstTests.cs b/src/HotChocolate/Core/test/Execution.Tests/Integration/StarWarsCodeFirst/StarWarsCodeFirstTests.cs index bf11b65b97c..c8f99d2622e 100644 --- a/src/HotChocolate/Core/test/Execution.Tests/Integration/StarWarsCodeFirst/StarWarsCodeFirstTests.cs +++ b/src/HotChocolate/Core/test/Execution.Tests/Integration/StarWarsCodeFirst/StarWarsCodeFirstTests.cs @@ -822,8 +822,6 @@ public async Task SubscribeToReview() """, TestContext.Current.CancellationToken); - // Get the enumerator before publishing so the consumer is registered - // and won't race with event dispatch. await using var enumerator = subscriptionResult.ReadResultsAsync().GetAsyncEnumerator( TestContext.Current.CancellationToken); @@ -870,6 +868,9 @@ ... on Review { """, TestContext.Current.CancellationToken); + await using var enumerator = subscriptionResult.ReadResultsAsync().GetAsyncEnumerator( + TestContext.Current.CancellationToken); + await executor.ExecuteAsync( """ mutation { @@ -881,17 +882,10 @@ await executor.ExecuteAsync( """, TestContext.Current.CancellationToken); - OperationResult? eventResult = null; - - using (var cts = new CancellationTokenSource(2000)) - { - await foreach (var queryResult in - subscriptionResult.ReadResultsAsync().WithCancellation(cts.Token)) - { - eventResult = queryResult; - break; - } - } + Assert.True(await enumerator.MoveNextAsync().AsTask().WaitAsync( + TimeSpan.FromSeconds(30), + TestContext.Current.CancellationToken)); + var eventResult = enumerator.Current; snapshot.Add(eventResult); @@ -922,6 +916,9 @@ fragment SomeFrag on Review { """, TestContext.Current.CancellationToken); + await using var enumerator = subscriptionResult.ReadResultsAsync().GetAsyncEnumerator( + TestContext.Current.CancellationToken); + await executor.ExecuteAsync( """ mutation { @@ -933,17 +930,10 @@ await executor.ExecuteAsync( """, TestContext.Current.CancellationToken); - OperationResult? eventResult = null; - - using (var cts = new CancellationTokenSource(2000)) - { - await foreach (var queryResult in - subscriptionResult.ReadResultsAsync().WithCancellation(cts.Token)) - { - eventResult = queryResult; - break; - } - } + Assert.True(await enumerator.MoveNextAsync().AsTask().WaitAsync( + TimeSpan.FromSeconds(30), + TestContext.Current.CancellationToken)); + var eventResult = enumerator.Current; snapshot.Add(eventResult); @@ -980,6 +970,9 @@ public async Task SubscribeToReview_With_Variables() .Build(), TestContext.Current.CancellationToken); + await using var enumerator = subscriptionResult.ReadResultsAsync().GetAsyncEnumerator( + TestContext.Current.CancellationToken); + await executor.ExecuteAsync( """ mutation { @@ -991,17 +984,10 @@ await executor.ExecuteAsync( """, TestContext.Current.CancellationToken); - OperationResult? eventResult = null; - - using (var cts = new CancellationTokenSource(2000)) - { - await foreach (var queryResult in - subscriptionResult.ReadResultsAsync().WithCancellation(cts.Token)) - { - eventResult = queryResult; - break; - } - } + Assert.True(await enumerator.MoveNextAsync().AsTask().WaitAsync( + TimeSpan.FromSeconds(30), + TestContext.Current.CancellationToken)); + var eventResult = enumerator.Current; snapshot.Add(eventResult);