diff --git a/src/Controls/tests/Core.UnitTests/PageTests.cs b/src/Controls/tests/Core.UnitTests/PageTests.cs index fd05b36823de..7c530229ec8f 100644 --- a/src/Controls/tests/Core.UnitTests/PageTests.cs +++ b/src/Controls/tests/Core.UnitTests/PageTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using Microsoft.Maui.Controls.Internals; using Microsoft.Maui.Graphics; using Xunit; @@ -295,13 +296,15 @@ public void BusyNotSentWhenNotVisible() } [Fact] - public void BusySentWhenBusyPageAppears() + public async Task BusySentWhenBusyPageAppears() { + TaskCompletionSource tcs = new TaskCompletionSource(); var sent = false; MessagingCenter.Subscribe(this, Page.BusySetSignalName, (p, b) => { Assert.True(b); sent = true; + tcs.SetResult(); }); var page = new ContentPage { IsBusy = true, IsPlatformEnabled = true }; @@ -310,12 +313,15 @@ public void BusySentWhenBusyPageAppears() _ = new TestWindow(page); + await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + Assert.True(sent, "Busy message not sent when visible"); } [Fact] - public void BusySentWhenBusyPageDisappears() + public async Task BusySentWhenBusyPageDisappears() { + TaskCompletionSource tcs = new TaskCompletionSource(); var page = new ContentPage { IsBusy = true }; _ = new TestWindow(page); ((IPageController)page).SendAppearing(); @@ -325,18 +331,26 @@ public void BusySentWhenBusyPageDisappears() { Assert.False(b); sent = true; + tcs.SetResult(); }); ((IPageController)page).SendDisappearing(); + await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + Assert.True(sent, "Busy message not sent when visible"); } [Fact] - public void BusySentWhenVisiblePageSetToBusy() + public async Task BusySentWhenVisiblePageSetToBusy() { var sent = false; - MessagingCenter.Subscribe(this, Page.BusySetSignalName, (p, b) => sent = true); + TaskCompletionSource tcs = new TaskCompletionSource(); + MessagingCenter.Subscribe(this, Page.BusySetSignalName, (p, b) => + { + sent = true; + tcs.SetResult(); + }); var page = new ContentPage(); _ = new TestWindow(page); @@ -346,6 +360,8 @@ public void BusySentWhenVisiblePageSetToBusy() page.IsBusy = true; + await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + Assert.True(sent, "Busy message not sent when visible"); }