Skip to content

Commit ff3752a

Browse files
committed
feat: enable overriding default wait time for "wait for" operations
1 parent 0fa594c commit ff3752a

9 files changed

Lines changed: 19 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ All notable changes to **bUnit** will be documented in this file. The project ad
66

77
## [Unreleased]
88

9+
## Added
10+
11+
- Added static `DefaultWaitTimeout` property to `TestContext` to enable overriding the default timeout of "wait for" methods like `WaitForAssertion` from 1 second to something else. By [@egil](https://github.com/egil).
12+
913
## Fixed
1014

1115
- TestRenderer throws `ObjectDisposedException` if any methods is accessed after it has been disposed. It will also prevent changes to the internal render tree after it has been disposed. By [@egil](https://github.com/egil).

src/bunit.core/Extensions/WaitForHelpers/WaitForHelper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protected WaitForHelper(
5151
{
5252
this.renderedFragment = renderedFragment ?? throw new ArgumentNullException(nameof(renderedFragment));
5353
this.completeChecker = completeChecker ?? throw new ArgumentNullException(nameof(completeChecker));
54-
54+
5555
logger = renderedFragment.Services.CreateLogger<WaitForHelper<T>>();
5656
renderer = (TestRenderer)renderedFragment
5757
.Services
@@ -125,7 +125,7 @@ private void InitializeWaiting()
125125
}
126126

127127
private Task<T> CreateWaitTask()
128-
{
128+
{
129129
// Two to failure conditions, that the renderer captures an unhandled
130130
// exception from a component or itself, or that the timeout is reached,
131131
// are executed on the renderers scheduler, to ensure that OnAfterRender
@@ -194,6 +194,6 @@ private void SubscribeToOnAfterRender()
194194

195195
private static TimeSpan GetRuntimeTimeout(TimeSpan? timeout)
196196
{
197-
return timeout ?? TimeSpan.FromSeconds(1);
197+
return timeout ?? TestContextBase.DefaultWaitTimeout;
198198
}
199199
}

src/bunit.core/TestContextBase.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ public abstract class TestContextBase : IDisposable
1010
private bool disposed;
1111
private ITestRenderer? testRenderer;
1212

13+
/// <summary>
14+
/// Gets or sets the default wait timeout used by "WaitFor" operations, i.e. <see cref="RenderedFragmentWaitForHelperExtensions.WaitForAssertion(IRenderedFragmentBase, Action, TimeSpan?)"/>.
15+
/// </summary>
16+
/// <remarks>The default is 1 second.</remarks>
17+
public static TimeSpan DefaultWaitTimeout { get; set; } = TimeSpan.FromSeconds(1);
18+
1319
/// <summary>
1420
/// Gets the renderer used by the test context.
1521
/// </summary>

tests/bunit.core.tests/Rendering/TestRendererTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public partial class TestRendererTest : TestContext
88
{
99
public TestRendererTest(ITestOutputHelper outputHelper)
1010
{
11+
TestContext.DefaultWaitTimeout = TimeSpan.FromSeconds(30);
1112
Services.AddXunitLogger(outputHelper);
1213
}
1314

tests/bunit.web.tests/BlazorE2E/ComponentRenderingTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class ComponentRenderingTest : TestContext
1919
{
2020
public ComponentRenderingTest(ITestOutputHelper outputHelper)
2121
{
22+
TestContext.DefaultWaitTimeout = TimeSpan.FromSeconds(30);
2223
Services.AddXunitLogger(outputHelper);
2324
JSInterop.Mode = JSRuntimeMode.Loose;
2425
}

tests/bunit.web.tests/EventDispatchExtensions/GeneralEventDispatchExtensionsTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class GeneralEventDispatchExtensionsTest : EventDispatchExtensionsTest<Ev
1111

1212
public GeneralEventDispatchExtensionsTest(ITestOutputHelper outputHelper)
1313
{
14+
TestContext.DefaultWaitTimeout = TimeSpan.FromSeconds(30);
1415
Services.AddXunitLogger(outputHelper);
1516
}
1617

tests/bunit.web.tests/Extensions/WaitForHelpers/RenderedFragmentWaitForElementsHelperExtensions.Async.Test.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class RenderedFragmentWaitForElementsHelperExtensionsAsyncTest : TestCont
99

1010
public RenderedFragmentWaitForElementsHelperExtensionsAsyncTest(ITestOutputHelper testOutput)
1111
{
12+
TestContext.DefaultWaitTimeout = TimeSpan.FromSeconds(30);
1213
Services.AddXunitLogger(testOutput);
1314
}
1415

tests/bunit.web.tests/Extensions/WaitForHelpers/RenderedFragmentWaitForElementsHelperExtensionsTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class RenderedFragmentWaitForElementsHelperExtensionsTest : TestContext
99

1010
public RenderedFragmentWaitForElementsHelperExtensionsTest(ITestOutputHelper testOutput)
1111
{
12+
TestContext.DefaultWaitTimeout = TimeSpan.FromSeconds(30);
1213
Services.AddXunitLogger(testOutput);
1314
}
1415

tests/bunit.web.tests/TestDoubles/Authorization/AuthorizationTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public class AuthorizationTest : TestContext
77
{
88
public AuthorizationTest(ITestOutputHelper outputHelper)
99
{
10+
TestContext.DefaultWaitTimeout = TimeSpan.FromSeconds(30);
1011
Services.AddXunitLogger(outputHelper);
1112
}
1213

0 commit comments

Comments
 (0)