Skip to content

Commit d0caccd

Browse files
committed
Add E2E tests
1 parent fa27024 commit d0caccd

File tree

4 files changed

+190
-6
lines changed

4 files changed

+190
-6
lines changed

src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,15 @@ public void CanPersistPrerenderedState_Server()
10531053
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-server")).Text);
10541054
}
10551055

1056+
[Fact]
1057+
public void CanPersistPrerenderedStateDeclaratively_Server()
1058+
{
1059+
Navigate($"{ServerPathBase}/persist-state?server=true&declarative=true");
1060+
1061+
Browser.Equal("restored", () => Browser.FindElement(By.Id("server")).Text);
1062+
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-server")).Text);
1063+
}
1064+
10561065
[Fact]
10571066
public void CanPersistPrerenderedState_WebAssembly()
10581067
{
@@ -1062,6 +1071,15 @@ public void CanPersistPrerenderedState_WebAssembly()
10621071
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-wasm")).Text);
10631072
}
10641073

1074+
[Fact]
1075+
public void CanPersistPrerenderedStateDeclaratively_WebAssembly()
1076+
{
1077+
Navigate($"{ServerPathBase}/persist-state?wasm=true&declarative=true");
1078+
1079+
Browser.Equal("restored", () => Browser.FindElement(By.Id("wasm")).Text);
1080+
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-wasm")).Text);
1081+
}
1082+
10651083
[Fact]
10661084
public void CanPersistPrerenderedState_Auto_PersistsOnWebAssembly()
10671085
{
@@ -1071,6 +1089,16 @@ public void CanPersistPrerenderedState_Auto_PersistsOnWebAssembly()
10711089
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-auto")).Text);
10721090
}
10731091

1092+
1093+
[Fact]
1094+
public void CanPersistPrerenderedStateDeclaratively_Auto_PersistsOnWebAssembly()
1095+
{
1096+
Navigate($"{ServerPathBase}/persist-state?auto=true&declarative=true");
1097+
1098+
Browser.Equal("restored", () => Browser.FindElement(By.Id("auto")).Text);
1099+
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-auto")).Text);
1100+
}
1101+
10741102
[Fact]
10751103
public void CanPersistPrerenderedState_Auto_PersistsOnServer()
10761104
{
@@ -1084,6 +1112,19 @@ public void CanPersistPrerenderedState_Auto_PersistsOnServer()
10841112
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-auto")).Text);
10851113
}
10861114

1115+
[Fact]
1116+
public void CanPersistPrerenderedStateDeclaratively_Auto_PersistsOnServer()
1117+
{
1118+
Navigate(ServerPathBase);
1119+
Browser.Equal("Hello", () => Browser.Exists(By.TagName("h1")).Text);
1120+
BlockWebAssemblyResourceLoad();
1121+
1122+
Navigate($"{ServerPathBase}/persist-state?auto=true&declarative=true");
1123+
1124+
Browser.Equal("restored", () => Browser.FindElement(By.Id("auto")).Text);
1125+
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-auto")).Text);
1126+
}
1127+
10871128
[Fact]
10881129
public void CanPersistState_AllRenderModesAtTheSameTime()
10891130
{
@@ -1272,4 +1313,56 @@ private void ClearBrowserLogs()
12721313
{
12731314
((IJavaScriptExecutor)Browser).ExecuteScript("console.clear()");
12741315
}
1316+
1317+
[Fact]
1318+
public void CanPersistMultiplePrerenderedStateDeclaratively_Server()
1319+
{
1320+
Navigate($"{ServerPathBase}/persist-multiple-state-declaratively?server=true");
1321+
1322+
Browser.Equal("restored 1", () => Browser.FindElement(By.Id("server-1")).Text);
1323+
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-server-1")).Text);
1324+
1325+
Browser.Equal("restored 2", () => Browser.FindElement(By.Id("server-2")).Text);
1326+
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-server-2")).Text);
1327+
}
1328+
1329+
[Fact]
1330+
public void CanPersistMultiplePrerenderedStateDeclaratively_WebAssembly()
1331+
{
1332+
Navigate($"{ServerPathBase}/persist-multiple-state-declaratively?wasm=true");
1333+
1334+
Browser.Equal("restored 1", () => Browser.FindElement(By.Id("wasm-1")).Text);
1335+
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-wasm-1")).Text);
1336+
1337+
Browser.Equal("restored 2", () => Browser.FindElement(By.Id("wasm-2")).Text);
1338+
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-wasm-2")).Text);
1339+
}
1340+
1341+
[Fact]
1342+
public void CanPersistMultiplePrerenderedStateDeclaratively_Auto_PersistsOnServer()
1343+
{
1344+
Navigate(ServerPathBase);
1345+
Browser.Equal("Hello", () => Browser.Exists(By.TagName("h1")).Text);
1346+
BlockWebAssemblyResourceLoad();
1347+
1348+
Navigate($"{ServerPathBase}/persist-multiple-state-declaratively?auto=true");
1349+
1350+
Browser.Equal("restored 1", () => Browser.FindElement(By.Id("auto-1")).Text);
1351+
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-auto-1")).Text);
1352+
1353+
Browser.Equal("restored 2", () => Browser.FindElement(By.Id("auto-2")).Text);
1354+
Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-auto-2")).Text);
1355+
}
1356+
1357+
[Fact]
1358+
public void CanPersistMultiplePrerenderedStateDeclaratively_Auto_PersistsOnWebAssembly()
1359+
{
1360+
Navigate($"{ServerPathBase}/persist-multiple-state-declaratively?auto=true");
1361+
1362+
Browser.Equal("restored 1", () => Browser.FindElement(By.Id("auto-1")).Text);
1363+
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-auto-1")).Text);
1364+
1365+
Browser.Equal("restored 2", () => Browser.FindElement(By.Id("auto-2")).Text);
1366+
Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-auto-2")).Text);
1367+
}
12751368
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
@page "/persist-multiple-state-declaratively"
2+
@using Microsoft.AspNetCore.Components.Web
3+
4+
<h1>Persist multiple State Components declaratively</h1>
5+
6+
@if (Server.GetValueOrDefault())
7+
{
8+
<strong>Server Persist State Component 1</strong>
9+
<TestContentPackage.DeclarativePersistStateComponent @key=1 InitialValue="restored 1" KeyName="server-1" @rendermode="@RenderMode.InteractiveServer" />
10+
<hr />
11+
<strong>Server Persist State Component 2</strong>
12+
<TestContentPackage.DeclarativePersistStateComponent @key=2 InitialValue="restored 2" KeyName="server-2" @rendermode="@RenderMode.InteractiveServer" />
13+
<hr />
14+
}
15+
16+
@if (WebAssembly.GetValueOrDefault())
17+
{
18+
<strong>WebAssembly Persist State Component 1</strong>
19+
<TestContentPackage.DeclarativePersistStateComponent @key=1 InitialValue="restored 1" KeyName="wasm-1" @rendermode="@RenderMode.InteractiveWebAssembly" />
20+
<hr />
21+
<strong>WebAssembly Persist State Component 2</strong>
22+
<TestContentPackage.DeclarativePersistStateComponent @key=2 InitialValue="restored 2" KeyName="wasm-2" @rendermode="@RenderMode.InteractiveWebAssembly" />
23+
<hr />
24+
}
25+
26+
@if (Auto.GetValueOrDefault())
27+
{
28+
<strong>Auto Persist State Component 1</strong>
29+
<TestContentPackage.DeclarativePersistStateComponent @key=1 InitialValue="restored 1" KeyName="auto-1" @rendermode="@RenderMode.InteractiveAuto" />
30+
<hr />
31+
<strong>Auto Persist State Component 2</strong>
32+
<TestContentPackage.DeclarativePersistStateComponent @key=2 InitialValue="restored 2" KeyName="auto-2" @rendermode="@RenderMode.InteractiveAuto" />
33+
<hr />
34+
}
35+
36+
@code {
37+
[Parameter, SupplyParameterFromQuery(Name = "server")]
38+
public bool? Server { get; set; }
39+
40+
[Parameter, SupplyParameterFromQuery(Name = "wasm")]
41+
public bool? WebAssembly { get; set; }
42+
43+
[Parameter, SupplyParameterFromQuery(Name = "auto")]
44+
public bool? Auto { get; set; }
45+
}

src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/PersistStateComponents.razor

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,38 @@
55

66
@if (Server.GetValueOrDefault()) {
77
<strong>Server Persist State Component</strong>
8-
<TestContentPackage.PersistStateComponent KeyName="server" @rendermode="@RenderMode.InteractiveServer" />
9-
<hr />
8+
@if (!Declarative)
9+
{
10+
<TestContentPackage.PersistStateComponent KeyName="server" @rendermode="@RenderMode.InteractiveServer" />
11+
<hr />
12+
} else {
13+
<TestContentPackage.DeclarativePersistStateComponent InitialValue="restored" KeyName="server" @rendermode="@RenderMode.InteractiveServer" />
14+
<hr />
15+
}
1016
}
1117

1218
@if (WebAssembly.GetValueOrDefault()) {
1319
<strong>WebAssembly Persist State Component</strong>
14-
<TestContentPackage.PersistStateComponent KeyName="wasm" @rendermode="@RenderMode.InteractiveWebAssembly" />
15-
<hr />
20+
@if (!Declarative)
21+
{
22+
<TestContentPackage.PersistStateComponent KeyName="wasm" @rendermode="@RenderMode.InteractiveWebAssembly" />
23+
<hr />
24+
} else {
25+
<TestContentPackage.DeclarativePersistStateComponent InitialValue="restored" KeyName="wasm" @rendermode="@RenderMode.InteractiveWebAssembly" />
26+
<hr />
27+
}
1628
}
1729

1830
@if (Auto.GetValueOrDefault()) {
1931
<strong>Auto Persist State Component</strong>
20-
<TestContentPackage.PersistStateComponent KeyName="auto" @rendermode="@RenderMode.InteractiveAuto" />
21-
<hr />
32+
@if (!Declarative)
33+
{
34+
<TestContentPackage.PersistStateComponent KeyName="auto" @rendermode="@RenderMode.InteractiveAuto" />
35+
<hr />
36+
} else {
37+
<TestContentPackage.DeclarativePersistStateComponent InitialValue="restored" KeyName="auto" @rendermode="@RenderMode.InteractiveAuto" />
38+
<hr />
39+
}
2240
}
2341

2442
@code {
@@ -30,4 +48,7 @@
3048

3149
[Parameter, SupplyParameterFromQuery(Name = "auto")]
3250
public bool? Auto { get; set; }
51+
52+
[Parameter, SupplyParameterFromQuery(Name = "declarative")]
53+
public bool Declarative { get; set; }
3354
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<p>Application state is <span id="@KeyName">@Value</span></p>
2+
<p>Render mode: <span id="render-mode-@KeyName">@_renderMode</span></p>
3+
4+
@code {
5+
[Parameter, EditorRequired]
6+
public string InitialValue { get; set; } = "";
7+
8+
[Parameter, EditorRequired]
9+
public string KeyName { get; set; } = "";
10+
11+
[SupplyParameterFromPersistentComponentState]
12+
public string Value { get; set; }
13+
14+
private string _renderMode = "SSR";
15+
16+
protected override void OnInitialized()
17+
{
18+
if (OperatingSystem.IsBrowser())
19+
{
20+
throw new InvalidOperationException($"{Value ?? ("null")} - {InitialValue}");
21+
}
22+
Value ??= !RendererInfo.IsInteractive ? InitialValue : "not restored";
23+
_renderMode = OperatingSystem.IsBrowser() ? "WebAssembly" : "Server";
24+
}
25+
}

0 commit comments

Comments
 (0)