diff --git a/dotnet/test/webdriver/DevTools/DevToolsTabsTests.cs b/dotnet/test/webdriver/DevTools/DevToolsTabsTests.cs index 9b329f780b66e..7cb351c6e6753 100644 --- a/dotnet/test/webdriver/DevTools/DevToolsTabsTests.cs +++ b/dotnet/test/webdriver/DevTools/DevToolsTabsTests.cs @@ -24,7 +24,6 @@ namespace OpenQA.Selenium.Tests.DevTools; [TestFixture] public class DevToolsTabsTests : DevToolsTestFixture { - [Test] [IgnoreBrowser(Browser.IE, "IE does not support Chrome DevTools Protocol")] [IgnoreBrowser(Browser.Firefox, "Firefox does not support Chrome DevTools Protocol")] @@ -37,13 +36,27 @@ public async Task ClosingTabDoesNotBreakDevToolsSession() var oldWindowHandle = Driver.CurrentWindowHandle; Driver.SwitchTo().NewWindow(WindowType.Tab); Driver.SwitchTo().Window(oldWindowHandle); - Driver.Close(); - Assert.That( - async () => + + var targetDetached = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + void targetDetachedHandler(object _, CurrentCdpVersion.Target.DetachedFromTargetEventArgs e) + { + if (e.TargetId == oldWindowHandle) { - await domains.Console.Enable(); - }, - Throws.Nothing - ); + targetDetached.TrySetResult(true); + } + } + + domains.Target.DetachedFromTarget += targetDetachedHandler; + + try + { + Driver.Close(); + await targetDetached.Task.WaitAsync(TimeSpan.FromSeconds(5)); + Assert.That(async () => await domains.Console.Enable(), Throws.Nothing); + } + finally + { + domains.Target.DetachedFromTarget -= targetDetachedHandler; + } } }