From f9984cf3a364bc403e99d99e10f48417f92c8c29 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Fri, 19 Jul 2019 18:54:02 +0100 Subject: [PATCH] Update reconnection E2E tests --- .../ServerExecutionTests/ServerSideAppTest.cs | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/src/Components/test/E2ETest/ServerExecutionTests/ServerSideAppTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/ServerSideAppTest.cs index d68a65234d6b..d61063b00486 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/ServerSideAppTest.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/ServerSideAppTest.cs @@ -142,21 +142,17 @@ public void HasFetchDataPage() public void ReconnectUI() { Browser.FindElement(By.LinkText("Counter")).Click(); - var javascript = (IJavaScriptExecutor)Browser; - javascript.ExecuteScript(@" -window.modalDisplayState = []; -window.Blazor.circuitHandlers.push({ - onConnectionUp: () => window.modalDisplayState.push(document.getElementById('components-reconnect-modal').style.display), - onConnectionDown: () => window.modalDisplayState.push(document.getElementById('components-reconnect-modal').style.display) -}); -window.Blazor._internal.forceCloseConnection();"); - new WebDriverWait(Browser, TimeSpan.FromSeconds(10)).Until( - driver => (long)javascript.ExecuteScript("console.log(window.modalDisplayState); return window.modalDisplayState.length") == 2); + var javascript = (IJavaScriptExecutor)Browser; + javascript.ExecuteScript("Blazor._internal.forceCloseConnection()"); - var states = (string)javascript.ExecuteScript("return window.modalDisplayState.join(',')"); + // We should see the 'reconnecting' UI appear + var reconnectionDialog = WaitUntilReconnectionDialogExists(); + Browser.True(() => reconnectionDialog.GetCssValue("display") == "block"); - Assert.Equal("block,none", states); + // Then it should disappear + new WebDriverWait(Browser, TimeSpan.FromSeconds(10)) + .Until(driver => reconnectionDialog.GetCssValue("display") == "none"); } [Fact] @@ -169,16 +165,17 @@ public void RendersContinueAfterReconnect() var initialValue = element.Text; var javascript = (IJavaScriptExecutor)Browser; - javascript.ExecuteScript(@" -window.connectionUp = false; -window.Blazor.circuitHandlers.push({ - onConnectionUp: () => window.connectionUp = true -}); -window.Blazor._internal.forceCloseConnection();"); + javascript.ExecuteScript("Blazor._internal.forceCloseConnection()"); - new WebDriverWait(Browser, TimeSpan.FromSeconds(10)).Until( - driver => (bool)javascript.ExecuteScript("return window.connectionUp")); + // We should see the 'reconnecting' UI appear + var reconnectionDialog = WaitUntilReconnectionDialogExists(); + Browser.True(() => reconnectionDialog.GetCssValue("display") == "block"); + // Then it should disappear + new WebDriverWait(Browser, TimeSpan.FromSeconds(10)) + .Until(driver => reconnectionDialog.GetCssValue("display") == "none"); + + // We should receive a render that occurred while disconnected var currentValue = element.Text; Assert.NotEqual(initialValue, currentValue); @@ -204,5 +201,13 @@ public void ErrorsStopTheRenderingProcess() Browser.True(() => Browser.Manage().Logs.GetLog(LogType.Browser) .Any(l => l.Level == LogLevel.Info && l.Message.Contains("Connection disconnected."))); } + + private IWebElement WaitUntilReconnectionDialogExists() + { + IWebElement reconnectionDialog = null; + new WebDriverWait(Browser, TimeSpan.FromSeconds(10)) + .Until(driver => (reconnectionDialog = driver.FindElement(By.Id("components-reconnect-modal"))) != null); + return reconnectionDialog; + } } }