diff --git a/src/Components/Server/src/Circuits/CircuitHost.cs b/src/Components/Server/src/Circuits/CircuitHost.cs index f1983d987a58..82eb2ffa524c 100644 --- a/src/Components/Server/src/Circuits/CircuitHost.cs +++ b/src/Components/Server/src/Circuits/CircuitHost.cs @@ -104,7 +104,7 @@ public Task InitializeAsync(ProtectedPrerenderComponentApplicationStore store, C { Log.InitializationStarted(_logger); - return Renderer.Dispatcher.InvokeAsync(async () => + return HandleInboundActivityAsync(() => Renderer.Dispatcher.InvokeAsync(async () => { if (_initialized) { @@ -165,7 +165,7 @@ public Task InitializeAsync(ProtectedPrerenderComponentApplicationStore store, C UnhandledException?.Invoke(this, new UnhandledExceptionEventArgs(ex, isTerminating: false)); await TryNotifyClientErrorAsync(Client, GetClientErrorMessage(ex), ex); } - }); + })); } // We handle errors in DisposeAsync because there's no real value in letting it propagate. diff --git a/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs index 0a1eb6306a30..91c2b580fe60 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs @@ -22,28 +22,39 @@ public CircuitContextTest( { } - protected override void InitializeAsyncCore() + [Fact] + public void ComponentMethods_HaveCircuitContext() { Navigate(ServerPathBase); Browser.MountTestComponent(); - Browser.Equal("Circuit Context", () => Browser.Exists(By.TagName("h1")).Text); + TestCircuitContextCore(Browser); } [Fact] - public void ComponentMethods_HaveCircuitContext() + public void ComponentMethods_HaveCircuitContext_OnInitialPageLoad() { - Browser.Click(By.Id("trigger-click-event-button")); + // https://github.com/dotnet/aspnetcore/issues/57481 + Navigate($"{ServerPathBase}?initial-component-type={typeof(CircuitContextComponent).AssemblyQualifiedName}"); + TestCircuitContextCore(Browser); + } + + // Internal for reuse in Blazor Web tests + internal static void TestCircuitContextCore(IWebDriver browser) + { + browser.Equal("Circuit Context", () => browser.Exists(By.TagName("h1")).Text); + + browser.Click(By.Id("trigger-click-event-button")); - Browser.True(() => HasCircuitContext("SetParametersAsync")); - Browser.True(() => HasCircuitContext("OnInitializedAsync")); - Browser.True(() => HasCircuitContext("OnParametersSetAsync")); - Browser.True(() => HasCircuitContext("OnAfterRenderAsync")); - Browser.True(() => HasCircuitContext("InvokeDotNet")); - Browser.True(() => HasCircuitContext("OnClickEvent")); + browser.True(() => HasCircuitContext("SetParametersAsync")); + browser.True(() => HasCircuitContext("OnInitializedAsync")); + browser.True(() => HasCircuitContext("OnParametersSetAsync")); + browser.True(() => HasCircuitContext("OnAfterRenderAsync")); + browser.True(() => HasCircuitContext("InvokeDotNet")); + browser.True(() => HasCircuitContext("OnClickEvent")); bool HasCircuitContext(string eventName) { - var resultText = Browser.FindElement(By.Id($"circuit-context-result-{eventName}")).Text; + var resultText = browser.FindElement(By.Id($"circuit-context-result-{eventName}")).Text; var result = bool.Parse(resultText); return result; } diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index ab1ea0a9c7dd..ec3fdc9fae3b 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -4,6 +4,7 @@ using Components.TestServer.RazorComponents; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; +using Microsoft.AspNetCore.Components.E2ETests.ServerExecutionTests; using Microsoft.AspNetCore.E2ETesting; using OpenQA.Selenium; using TestServer; @@ -1142,8 +1143,7 @@ public void NavigationManagerCanRefreshSSRPageWhenServerInteractivityEnabled() public void InteractiveServerRootComponent_CanAccessCircuitContext() { Navigate($"{ServerPathBase}/interactivity/circuit-context"); - - Browser.Equal("True", () => Browser.FindElement(By.Id("has-circuit-context")).Text); + CircuitContextTest.TestCircuitContextCore(Browser); } [Fact] diff --git a/src/Components/test/testassets/BasicTestApp/Index.razor b/src/Components/test/testassets/BasicTestApp/Index.razor index be5417871d06..3ce2eb27dc95 100644 --- a/src/Components/test/testassets/BasicTestApp/Index.razor +++ b/src/Components/test/testassets/BasicTestApp/Index.razor @@ -1,4 +1,6 @@ @using Microsoft.AspNetCore.Components.Rendering +@using System.Web +@inject NavigationManager NavigationManager
Select test: