From baae58040d16ad7b8df9ab3f09f49dfd580085e8 Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Mon, 16 Aug 2021 18:38:44 +0100
Subject: [PATCH 01/18] Remove duplicate markup
---
.../test/testassets/BasicTestApp/BindCasesComponent.razor | 6 ------
1 file changed, 6 deletions(-)
diff --git a/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor b/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor
index d0bb9b8c81e8..2b04292aeec9 100644
--- a/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor
+++ b/src/Components/test/testassets/BasicTestApp/BindCasesComponent.razor
@@ -167,12 +167,6 @@
@textboxDateTimeFormatValue
-
- DateTime (format):
-
- @textboxDateTimeFormatValue
-
-
DateTime (format / invalid value):
From 66473d1e73b516fa0abca75ed6cc2f04c5b46c8d Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Mon, 16 Aug 2021 18:51:05 +0100
Subject: [PATCH 02/18] Workaround for "unexpected string" issue (seems like a
Selenium/WebDriver bug)
---
src/Components/test/E2ETest/Tests/BindTest.cs | 6 +++---
src/Components/test/E2ETest/Tests/EventBubblingTest.cs | 6 +++---
src/Components/test/E2ETest/Tests/FormsTest.cs | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/Components/test/E2ETest/Tests/BindTest.cs b/src/Components/test/E2ETest/Tests/BindTest.cs
index 50b871d01202..54abec28e8c7 100644
--- a/src/Components/test/E2ETest/Tests/BindTest.cs
+++ b/src/Components/test/E2ETest/Tests/BindTest.cs
@@ -2022,9 +2022,9 @@ private void ApplyInputValue(string cssSelector, string value)
// interaction as authentically as SendKeys in other cases.
var javascript = (IJavaScriptExecutor)Browser;
javascript.ExecuteScript(
- $"var elem = document.querySelector('{cssSelector}');"
- + $"elem.value = '{value}';"
- + "elem.dispatchEvent(new KeyboardEvent('change'));");
+ $"document.querySelector('{cssSelector}').value = '{value}'");
+ javascript.ExecuteScript(
+ $"document.querySelector('{cssSelector}').dispatchEvent(new KeyboardEvent('change'));");
}
}
}
diff --git a/src/Components/test/E2ETest/Tests/EventBubblingTest.cs b/src/Components/test/E2ETest/Tests/EventBubblingTest.cs
index 115c0faf170f..d902cfc054be 100644
--- a/src/Components/test/E2ETest/Tests/EventBubblingTest.cs
+++ b/src/Components/test/E2ETest/Tests/EventBubblingTest.cs
@@ -201,9 +201,9 @@ private void TriggerCustomBubblingEvent(string elementId, string eventName)
{
var jsExecutor = (IJavaScriptExecutor)Browser;
jsExecutor.ExecuteScript(
- $"document.getElementById('{elementId}').dispatchEvent(" +
- $" new Event('{eventName}', {{ bubbles: true }})" +
- $")");
+ $"window.testelem = document.getElementById('{elementId}')");
+ jsExecutor.ExecuteScript(
+ $"window.testelem.dispatchEvent(new Event('{eventName}', {{ bubbles: true }}))");
}
}
}
diff --git a/src/Components/test/E2ETest/Tests/FormsTest.cs b/src/Components/test/E2ETest/Tests/FormsTest.cs
index 050049982e2e..b90e347d1c57 100644
--- a/src/Components/test/E2ETest/Tests/FormsTest.cs
+++ b/src/Components/test/E2ETest/Tests/FormsTest.cs
@@ -809,9 +809,9 @@ private void ApplyInvalidInputDateValue(string cssSelector, string invalidValue)
// interaction as authentically as SendKeys in other cases.
var javascript = (IJavaScriptExecutor)Browser;
javascript.ExecuteScript(
- $"var elem = document.querySelector('{cssSelector}');"
- + $"elem.value = {JsonSerializer.Serialize(invalidValue, TestJsonSerializerOptionsProvider.Options)};"
- + "elem.dispatchEvent(new KeyboardEvent('change'));");
+ $"document.querySelector('{cssSelector}').value = {JsonSerializer.Serialize(invalidValue, TestJsonSerializerOptionsProvider.Options)}");
+ javascript.ExecuteScript(
+ $"document.querySelector('{cssSelector}').dispatchEvent(new KeyboardEvent('change'))");
}
private void EnsureAttributeRendering(IWebElement element, string attributeName, bool shouldBeRendered = true)
From 168eafc1aa0b2b287675716515ba533d48dbb84e Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Mon, 16 Aug 2021 18:59:01 +0100
Subject: [PATCH 03/18] Fix some parsing logic
---
.../test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs b/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs
index b59e11be7812..5bb5d369e507 100644
--- a/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs
+++ b/src/Components/test/E2ETest/Tests/WebAssemblyAuthenticationTests.cs
@@ -207,8 +207,10 @@ public void AuthenticatedUser_ProfileIncludesDetails_And_AccessToken()
},
payload.Scopes.OrderBy(id => id));
- var currentTime = DateTimeOffset.Parse(Browser.Exists(By.Id("current-time")).Text, CultureInfo.InvariantCulture);
- var tokenExpiration = DateTimeOffset.Parse(Browser.Exists(By.Id("access-token-expires")).Text, CultureInfo.InvariantCulture);
+ // The browser formats the text using the current language, so the following parsing relies on
+ // the server being set to an equivalent culture. This should be true in our test scenarios.
+ var currentTime = DateTimeOffset.Parse(Browser.Exists(By.Id("current-time")).Text, CultureInfo.CurrentCulture);
+ var tokenExpiration = DateTimeOffset.Parse(Browser.Exists(By.Id("access-token-expires")).Text, CultureInfo.CurrentCulture);
Assert.True(currentTime.AddMinutes(50) < tokenExpiration);
Assert.True(currentTime.AddMinutes(60) >= tokenExpiration);
}
From 53e883039352a7d48ea3eb3077bde891a4d61cae Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Tue, 17 Aug 2021 11:09:45 +0100
Subject: [PATCH 04/18] Workaround for string interpolation bug
---
.../testassets/TestServer/Controllers/CultureController.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Components/test/testassets/TestServer/Controllers/CultureController.cs b/src/Components/test/testassets/TestServer/Controllers/CultureController.cs
index 735191d92863..93f02a1f7ea8 100644
--- a/src/Components/test/testassets/TestServer/Controllers/CultureController.cs
+++ b/src/Components/test/testassets/TestServer/Controllers/CultureController.cs
@@ -22,8 +22,8 @@ public IActionResult SetCulture(string culture, string redirectUri)
}
var htmlEncoder = HtmlEncoder.Default;
- var html = $"Culture has been changed to {htmlEncoder.Encode(culture)}
" +
- $"Return to previous page";
+ var html = "Culture has been changed to " + htmlEncoder.Encode(culture) + "
" +
+ "Return to previous page";
return Content(html, "text/html");
}
}
From c5cc25644733960ae37f1390154e3799469c0d68 Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Tue, 17 Aug 2021 11:34:29 +0100
Subject: [PATCH 05/18] Another interpolation workaround
---
.../ServerInteropTestDefaultExceptionsBehavior.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Components/test/E2ETest/ServerExecutionTests/ServerInteropTestDefaultExceptionsBehavior.cs b/src/Components/test/E2ETest/ServerExecutionTests/ServerInteropTestDefaultExceptionsBehavior.cs
index 2ba799a3bb9c..73baa0e75f06 100644
--- a/src/Components/test/E2ETest/ServerExecutionTests/ServerInteropTestDefaultExceptionsBehavior.cs
+++ b/src/Components/test/E2ETest/ServerExecutionTests/ServerInteropTestDefaultExceptionsBehavior.cs
@@ -63,8 +63,8 @@ public void DotNetExceptionDetailsAreNotLoggedByDefault()
}
string GetExpectedMessage(string method) =>
- $"\"There was an exception invoking '{method}' on assembly 'BasicTestApp'. For more details turn on " +
- $"detailed exceptions in '{typeof(CircuitOptions).Name}.{nameof(CircuitOptions.DetailedErrors)}'\"";
+ "\"There was an exception invoking '" + method + "' on assembly 'BasicTestApp'. For more details turn on " +
+ "detailed exceptions in '" + typeof(CircuitOptions).Name + "." + nameof(CircuitOptions.DetailedErrors) + "'\"";
}
}
}
From 3dad549734d9d2289a0f756bba81d32f95e50446 Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Tue, 17 Aug 2021 11:58:39 +0100
Subject: [PATCH 06/18] Base href is required for loading initializer modules
---
.../test/testassets/TestServer/Pages/Transports.cshtml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/Components/test/testassets/TestServer/Pages/Transports.cshtml b/src/Components/test/testassets/TestServer/Pages/Transports.cshtml
index 6bf003a7b693..2476db63eb8b 100644
--- a/src/Components/test/testassets/TestServer/Pages/Transports.cshtml
+++ b/src/Components/test/testassets/TestServer/Pages/Transports.cshtml
@@ -1,6 +1,13 @@
@page
@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
+
+
+
+
+
+
+
@@ -58,3 +65,5 @@
});
}
+
+
From 1cfe9c8070c066595b243b134c9314acfa3410e3 Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Tue, 17 Aug 2021 12:15:50 +0100
Subject: [PATCH 07/18] Make namespaces consistent
---
.../ServerExecutionTests/HeadModificationPrerenderingTest.cs | 2 +-
src/Components/test/E2ETest/Tests/HeadModificationTest.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Components/test/E2ETest/ServerExecutionTests/HeadModificationPrerenderingTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/HeadModificationPrerenderingTest.cs
index 609a2b4c7902..ab29926a26f4 100644
--- a/src/Components/test/E2ETest/ServerExecutionTests/HeadModificationPrerenderingTest.cs
+++ b/src/Components/test/E2ETest/ServerExecutionTests/HeadModificationPrerenderingTest.cs
@@ -9,7 +9,7 @@
using Xunit;
using Xunit.Abstractions;
-namespace Microsoft.AspNetCore.Components.E2ETests.ServerExecutionTests
+namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
{
public class HeadModificationPrerenderingTest : ServerTestBase>
{
diff --git a/src/Components/test/E2ETest/Tests/HeadModificationTest.cs b/src/Components/test/E2ETest/Tests/HeadModificationTest.cs
index 2ec264f99633..a98182e8bad5 100644
--- a/src/Components/test/E2ETest/Tests/HeadModificationTest.cs
+++ b/src/Components/test/E2ETest/Tests/HeadModificationTest.cs
@@ -10,7 +10,7 @@
using Xunit;
using Xunit.Abstractions;
-namespace Microsoft.AspNetCore.Components.E2ETests.Tests
+namespace Microsoft.AspNetCore.Components.E2ETest.Tests
{
public class HeadModificationTest : ServerTestBase>
{
From ad29d710687c70850201b7b723f25261005b562d Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Tue, 17 Aug 2021 12:54:06 +0100
Subject: [PATCH 08/18] Fix NavigateOnSubmitWorks test
---
src/Components/test/E2ETest/Tests/FormsTest.cs | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/Components/test/E2ETest/Tests/FormsTest.cs b/src/Components/test/E2ETest/Tests/FormsTest.cs
index b90e347d1c57..d1bbdf36f910 100644
--- a/src/Components/test/E2ETest/Tests/FormsTest.cs
+++ b/src/Components/test/E2ETest/Tests/FormsTest.cs
@@ -739,16 +739,15 @@ public void RespectsCustomFieldCssClassProvider()
Browser.Equal("modified invalid-socks", () => socksInput.GetAttribute("class"));
}
- [Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/34857")]
+ [Fact]
public void NavigateOnSubmitWorks()
{
var app = Browser.MountTestComponent();
var input = app.FindElement(By.Id("text-input"));
- input.SendKeys("Enter");
+ input.SendKeys(Keys.Enter);
- var log = Browser.Manage().Logs.GetLog(LogType.Browser);
- Assert.DoesNotContain(log, entry => entry.Level == LogLevel.Severe);
+ Browser.Equal("Choose...", () => Browser.WaitUntilTestSelectorReady().SelectedOption.Text);
}
[Fact]
From 263c3db2a11425a5fe6f5108d5b0dbefcad4d890 Mon Sep 17 00:00:00 2001
From: Steve Sanderson
Date: Tue, 17 Aug 2021 14:02:16 +0100
Subject: [PATCH 09/18] Fix
ClosingTheBrowserWindow_GracefullyDisconnects_TheCurrentCircuit
---
.../ServerExecutionTests/CircuitGracefulTerminationTests.cs | 5 ++++-
src/Shared/E2ETesting/BrowserFixture.cs | 5 ++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs b/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs
index 0665d6346d23..b1de832e9f86 100644
--- a/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs
+++ b/src/Components/test/E2ETest/ServerExecutionTests/CircuitGracefulTerminationTests.cs
@@ -26,6 +26,8 @@ public CircuitGracefulTerminationTests(
ITestOutputHelper output)
: base(browserFixture, serverFixture, output)
{
+ // The browser won't sent the disconnection message if it's headless
+ browserFixture.EnsureNotHeadless = true;
}
public TaskCompletionSource