diff --git a/src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmTestBrowserCommand.cs b/src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmTestBrowserCommand.cs index 1b3722cdf..c9f24e9f5 100644 --- a/src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmTestBrowserCommand.cs +++ b/src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmTestBrowserCommand.cs @@ -103,7 +103,19 @@ protected override async Task InvokeInternal(ILogger logger) token.WaitHandle.WaitOne(); } - driver.Quit(); // Firefox driver hangs if Quit is not issued. + // close all tabs before quit is a workaround for broken Selenium - GeckoDriver communication in Firefox + // https://github.com/dotnet/runtime/issues/101617 + logger.LogInformation($"Closing {driver.WindowHandles.Count} browser tabs before setting the main tab to config page and quitting."); + while (driver.WindowHandles.Count > 1) + { + driver.Navigate().GoToUrl("about:config"); + driver.Navigate().GoToUrl("about:blank"); + driver.Close(); //Close Tab + driver.SwitchTo().Window(driver.WindowHandles.Last()); + } + driver.Navigate().GoToUrl("about:config"); + driver.Navigate().GoToUrl("about:blank"); + driver.Quit(); // Firefox driver hangs if Quit is not issued. driverService.Dispose(); driver.Dispose(); }