From e0007f4f4bf6f0bd42d16c5d2e5cec2023b42a96 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Wed, 8 May 2019 11:43:16 +0100 Subject: [PATCH] Improve robustness of components Bind and EventBubbling E2E tests --- .../E2ETest/Infrastructure/BasicTestAppTestBase.cs | 11 +++++++++-- src/Components/test/E2ETest/Tests/BindTest.cs | 2 +- .../test/E2ETest/Tests/EventBubblingTest.cs | 1 + .../testassets/BasicTestApp/BindCasesComponent.razor | 2 ++ .../BasicTestApp/EventBubblingComponent.razor | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Components/test/E2ETest/Infrastructure/BasicTestAppTestBase.cs b/src/Components/test/E2ETest/Infrastructure/BasicTestAppTestBase.cs index b8ecfe1b62..d4933b858e 100644 --- a/src/Components/test/E2ETest/Infrastructure/BasicTestAppTestBase.cs +++ b/src/Components/test/E2ETest/Infrastructure/BasicTestAppTestBase.cs @@ -38,9 +38,16 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Infrastructure protected SelectElement WaitUntilTestSelectorReady() { var elemToFind = By.CssSelector("#test-selector > select"); - new WebDriverWait(Browser, TimeSpan.FromSeconds(30)).Until( - driver => driver.FindElement(elemToFind) != null); + WaitUntilExists(elemToFind, timeoutSeconds: 30); return new SelectElement(Browser.FindElement(elemToFind)); } + + protected IWebElement WaitUntilExists(By findBy, int timeoutSeconds = 10) + { + IWebElement result = null; + new WebDriverWait(Browser, TimeSpan.FromSeconds(timeoutSeconds)) + .Until(driver => (result = driver.FindElement(findBy)) != null); + return result; + } } } diff --git a/src/Components/test/E2ETest/Tests/BindTest.cs b/src/Components/test/E2ETest/Tests/BindTest.cs index 832837840d..b08a315441 100644 --- a/src/Components/test/E2ETest/Tests/BindTest.cs +++ b/src/Components/test/E2ETest/Tests/BindTest.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.Threading.Tasks; using BasicTestApp; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; @@ -28,6 +27,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests // On WebAssembly, page reloads are expensive so skip if possible Navigate(ServerPathBase, noReload: !_serverFixture.UsingAspNetHost); MountTestComponent(); + WaitUntilExists(By.Id("bind-cases")); } [Fact] diff --git a/src/Components/test/E2ETest/Tests/EventBubblingTest.cs b/src/Components/test/E2ETest/Tests/EventBubblingTest.cs index 66949202e5..a15d1b31d4 100644 --- a/src/Components/test/E2ETest/Tests/EventBubblingTest.cs +++ b/src/Components/test/E2ETest/Tests/EventBubblingTest.cs @@ -33,6 +33,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests { Navigate(ServerPathBase, noReload: !_serverFixture.UsingAspNetHost); MountTestComponent(); + WaitUntilExists(By.Id("event-bubbling")); } [Fact] diff --git a/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor b/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor index 37ab4d2e6f..707ed9124a 100644 --- a/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor +++ b/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor @@ -1,3 +1,5 @@ +

Bind cases

+

Textbox

Initially blank: diff --git a/src/Components/test/testassets/BasicTestApp/EventBubblingComponent.razor b/src/Components/test/testassets/BasicTestApp/EventBubblingComponent.razor index 4de6f38b22..f5fcfac319 100644 --- a/src/Components/test/testassets/BasicTestApp/EventBubblingComponent.razor +++ b/src/Components/test/testassets/BasicTestApp/EventBubblingComponent.razor @@ -1,4 +1,4 @@ -

Bubbling standard event

+

Bubbling standard event