Skip to content

Commit 5888312

Browse files
Copilotmattleibow
andcommitted
Address PR feedback: move files, implement TODOs, and use CSS classes
Co-authored-by: mattleibow <[email protected]>
1 parent b79b3d9 commit 5888312

File tree

10 files changed

+69
-45
lines changed

10 files changed

+69
-45
lines changed

sample/test/DeviceTestingKitApp.WasmTests/Program.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ public static async Task Main(string[] args)
1313
Console.WriteLine(" - Blazor WASM visual test runner");
1414

1515
var builder = WebAssemblyHostBuilder.CreateDefault(args);
16-
builder.RootComponents.Add<DeviceRunners.VisualRunners.Blazor.Components.App.App>("#app");
17-
builder.RootComponents.Add<HeadOutlet>("head::after");
1816

1917
// Add HttpClient for dependency injection
2018
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

src/DeviceRunners.VisualRunners.Blazor/Components/App/App.razor renamed to src/DeviceRunners.VisualRunners.Blazor/Components/App.razor

File renamed without changes.

src/DeviceRunners.VisualRunners.Blazor/Components/Pages/Home.razor

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
@page "/"
22
@using DeviceRunners.VisualRunners
3+
@using System.IO
34
@inject HomeViewModel ViewModel
45
@inject IJSRuntime JSRuntime
56

@@ -24,9 +25,9 @@
2425
<div class="list-group">
2526
@foreach (var assembly in ViewModel.TestAssemblies)
2627
{
27-
<a href="/assembly/@assembly.GetHashCode()" class="list-group-item list-group-item-action">
28+
<a href="/assembly/@Uri.EscapeDataString(Path.GetFileNameWithoutExtension(assembly.TestAssemblyInfo.AssemblyFileName))" class="list-group-item list-group-item-action">
2829
<div class="d-flex w-100 justify-content-between">
29-
<h5 class="mb-1" style="color: @GetStatusColor(assembly.ResultStatus)">@assembly.DisplayName</h5>
30+
<h5 class="mb-1 @GetStatusCssClass(assembly.ResultStatus)">@assembly.DisplayName</h5>
3031
</div>
3132
<div class="d-flex gap-3">
3233
<span class="text-success">✔ @assembly.Passed</span>
@@ -93,14 +94,14 @@
9394
}
9495
}
9596

96-
private string GetStatusColor(TestResultStatus status)
97+
private string GetStatusCssClass(TestResultStatus status)
9798
{
9899
return status switch
99100
{
100-
TestResultStatus.Passed => "#28a745",
101-
TestResultStatus.Failed => "#dc3545",
102-
TestResultStatus.Skipped => "#ffc107",
103-
_ => "#6c757d"
101+
TestResultStatus.Passed => "test-result-status-passed",
102+
TestResultStatus.Failed => "test-result-status-failed",
103+
TestResultStatus.Skipped => "test-result-status-skipped",
104+
_ => "test-result-status-notrun"
104105
};
105106
}
106107
}

src/DeviceRunners.VisualRunners.Blazor/Components/Pages/TestAssembly.razor

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
@page "/assembly/{id:int}"
1+
@page "/assembly/{assemblyName}"
22
@using DeviceRunners.VisualRunners
3+
@using System.IO
34
@inject NavigationManager Navigation
5+
@inject HomeViewModel HomeViewModel
46

57
<PageTitle>@(ViewModel?.DisplayName ?? "Test Assembly")</PageTitle>
68

@@ -39,16 +41,18 @@
3941
@if (ViewModel?.TestCases != null && ViewModel.TestCases.Any())
4042
{
4143
<div class="list-group">
42-
@foreach (var testCase in FilteredTestCases)
44+
@for (int i = 0; i < FilteredTestCases.Count(); i++)
4345
{
44-
<a href="/result/@testCase.GetHashCode()" class="list-group-item list-group-item-action">
46+
var testCase = FilteredTestCases.ElementAt(i);
47+
var testIndex = i;
48+
<a href="/result/@Uri.EscapeDataString(Path.GetFileNameWithoutExtension(ViewModel.TestAssemblyInfo.AssemblyFileName))/@testIndex" class="list-group-item list-group-item-action">
4549
<div class="d-flex w-100 justify-content-between">
4650
<h6 class="mb-1">@testCase.DisplayName</h6>
47-
<small style="color: @GetStatusColor(testCase.ResultStatus)">@testCase.ResultStatus</small>
51+
<small class="@GetStatusCssClass(testCase.ResultStatus)">@testCase.ResultStatus</small>
4852
</div>
4953
@if (!string.IsNullOrEmpty(testCase.Message))
5054
{
51-
<p class="mb-1" style="color: @GetStatusColor(testCase.ResultStatus)">@testCase.Message</p>
55+
<p class="mb-1 @GetStatusCssClass(testCase.ResultStatus)">@testCase.Message</p>
5256
}
5357
</a>
5458
}
@@ -80,7 +84,7 @@
8084
</div>
8185

8286
@code {
83-
[Parameter] public int Id { get; set; }
87+
[Parameter] public string AssemblyName { get; set; } = "";
8488

8589
private TestAssemblyViewModel? ViewModel { get; set; }
8690
private string SearchQuery { get; set; } = "";
@@ -110,9 +114,9 @@
110114

111115
protected override void OnParametersSet()
112116
{
113-
// In a real implementation, you would look up the TestAssemblyViewModel by ID
114-
// For now, this is just a placeholder structure
115-
// ViewModel = GetTestAssemblyById(Id);
117+
// Look up the TestAssemblyViewModel by assembly name
118+
ViewModel = HomeViewModel.TestAssemblies.FirstOrDefault(a =>
119+
Uri.EscapeDataString(Path.GetFileNameWithoutExtension(a.TestAssemblyInfo.AssemblyFileName)) == AssemblyName);
116120
}
117121

118122
private async Task RunFilteredTests()
@@ -131,14 +135,14 @@
131135
}
132136
}
133137

134-
private string GetStatusColor(TestResultStatus status)
138+
private string GetStatusCssClass(TestResultStatus status)
135139
{
136140
return status switch
137141
{
138-
TestResultStatus.Passed => "#28a745",
139-
TestResultStatus.Failed => "#dc3545",
140-
TestResultStatus.Skipped => "#ffc107",
141-
_ => "#6c757d"
142+
TestResultStatus.Passed => "test-result-status-passed",
143+
TestResultStatus.Failed => "test-result-status-failed",
144+
TestResultStatus.Skipped => "test-result-status-skipped",
145+
_ => "test-result-status-notrun"
142146
};
143147
}
144148
}

src/DeviceRunners.VisualRunners.Blazor/Components/Pages/TestResult.razor

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
@page "/result/{id:int}"
1+
@page "/result/{assemblyName}/{testIndex:int}"
22
@using DeviceRunners.VisualRunners
3+
@using System.IO
34
@inject NavigationManager Navigation
5+
@inject HomeViewModel HomeViewModel
46

57
<PageTitle>Test Result</PageTitle>
68

@@ -10,7 +12,7 @@
1012
<nav aria-label="breadcrumb">
1113
<ol class="breadcrumb">
1214
<li class="breadcrumb-item"><a href="/">Home</a></li>
13-
<li class="breadcrumb-item"><a href="/assembly/@AssemblyId">Test Assembly</a></li>
15+
<li class="breadcrumb-item"><a href="/assembly/@Uri.EscapeDataString(AssemblyName)">Test Assembly</a></li>
1416
<li class="breadcrumb-item active" aria-current="page">Test Result</li>
1517
</ol>
1618
</nav>
@@ -23,7 +25,7 @@
2325
<div class="col">
2426
<div class="card">
2527
<div class="card-header">
26-
<h4 style="color: @GetStatusColor(ViewModel.ResultStatus)">
28+
<h4 class="@GetStatusCssClass(ViewModel.ResultStatus)">
2729
@(ViewModel.TestCase?.DisplayName ?? "Test Result")
2830
</h4>
2931
<span class="badge @GetStatusBadgeClass(ViewModel.ResultStatus)">
@@ -73,27 +75,32 @@
7375
</div>
7476

7577
@code {
76-
[Parameter] public int Id { get; set; }
78+
[Parameter] public string AssemblyName { get; set; } = "";
79+
[Parameter] public int TestIndex { get; set; }
7780

7881
private TestResultViewModel? ViewModel { get; set; }
79-
private int AssemblyId { get; set; }
8082

8183
protected override void OnParametersSet()
8284
{
83-
// In a real implementation, you would look up the TestResultViewModel by ID
84-
// For now, this is just a placeholder structure
85-
// ViewModel = GetTestResultById(Id);
86-
// AssemblyId = GetAssemblyIdForResult(Id);
85+
// Look up the TestAssemblyViewModel by assembly name
86+
var assemblyViewModel = HomeViewModel.TestAssemblies.FirstOrDefault(a =>
87+
Uri.EscapeDataString(Path.GetFileNameWithoutExtension(a.TestAssemblyInfo.AssemblyFileName)) == AssemblyName);
88+
89+
if (assemblyViewModel != null && TestIndex >= 0 && TestIndex < assemblyViewModel.TestCases.Count())
90+
{
91+
var testCase = assemblyViewModel.TestCases.ElementAt(TestIndex);
92+
ViewModel = testCase.TestResult;
93+
}
8794
}
8895

89-
private string GetStatusColor(TestResultStatus status)
96+
private string GetStatusCssClass(TestResultStatus status)
9097
{
9198
return status switch
9299
{
93-
TestResultStatus.Passed => "#28a745",
94-
TestResultStatus.Failed => "#dc3545",
95-
TestResultStatus.Skipped => "#ffc107",
96-
_ => "#6c757d"
100+
TestResultStatus.Passed => "test-result-status-passed",
101+
TestResultStatus.Failed => "test-result-status-failed",
102+
TestResultStatus.Skipped => "test-result-status-skipped",
103+
_ => "test-result-status-notrun"
97104
};
98105
}
99106

src/DeviceRunners.VisualRunners.Blazor/Components/App/Routes.razor renamed to src/DeviceRunners.VisualRunners.Blazor/Components/Routes.razor

File renamed without changes.

src/DeviceRunners.VisualRunners.Blazor/WebAssemblyAppBuilderExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using DeviceRunners.Core;
2+
using Microsoft.AspNetCore.Components.Web;
23
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
34
using Microsoft.Extensions.DependencyInjection;
45

@@ -15,6 +16,10 @@ public static WebAssemblyHostBuilder UseVisualTestRunner(this WebAssemblyHostBui
1516
configurationBuilder?.Invoke(configBuilder);
1617
var configuration = configBuilder.Build();
1718

19+
// register root components automatically
20+
appBuilder.RootComponents.Add<DeviceRunners.VisualRunners.Blazor.Components.App>("#app");
21+
appBuilder.RootComponents.Add<HeadOutlet>("head::after");
22+
1823
// register runner components
1924
appBuilder.Services.AddSingleton<IVisualTestRunnerConfiguration>(configuration);
2025
appBuilder.Services.AddSingleton<IDiagnosticsManager, DiagnosticsManager>();

src/DeviceRunners.VisualRunners.Blazor/wwwroot/css/app.css

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,23 @@ main {
124124
flex: 1;
125125
}
126126

127+
/* Test result status colors */
128+
.test-result-status-passed {
129+
color: #28a745;
130+
}
131+
132+
.test-result-status-failed {
133+
color: #dc3545;
134+
}
135+
136+
.test-result-status-skipped {
137+
color: #ffc107;
138+
}
139+
140+
.test-result-status-notrun {
141+
color: #6c757d;
142+
}
143+
127144
#blazor-error-ui {
128145
background: lightyellow;
129146
bottom: 0;

src/DeviceRunners.VisualRunners.Maui/VisualTestRunnerUsage.cs

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/DeviceRunners.VisualRunners.Blazor/VisualTestRunnerUsage.cs renamed to src/DeviceRunners.VisualRunners/VisualTestRunnerUsage.cs

File renamed without changes.

0 commit comments

Comments
 (0)