@page "/test-suite" @implements IDisposable Database Test Suite Runner - Chrono DB

Database Feature Test Suite

Automated end-to-end verification of all database features, constraints, and JSONB mappings referenced in Chrono Cloud.

@testResults.Count
Total Tests
@testResults.Count(t => t.Status == TestStatus.Passed)
Passed
@testResults.Count(t => t.Status == TestStatus.Failed)
Failed
@(testResults.Sum(t => t.DurationMs))ms
Total Duration
@if (isRunning) {
Executing Test Suite...
@currentProgressStatus
}
Test Suite Execution Results
Target Provider: @ConfigService.ProviderType
@if (!testResults.Any() && !isRunning) {
Test Suite Ready

Click "Run All Database Tests" above to execute tests against the database.

} else {
@foreach (var test in testResults) {
@test.Id @test.Name @test.Category
@(test.DurationMs)ms @if (test.Status == TestStatus.Running) { } else if (test.Status == TestStatus.Passed) { } else if (test.Status == TestStatus.Failed) { } @test.Status.ToString().ToUpper()

@test.Description

@if (!string.IsNullOrEmpty(test.ErrorMessage)) {
Failure: @test.ErrorMessage
}
@if (expandedTestLogs.Contains(test.Id)) {
@if (test.Logs.Any()) { @foreach (var log in test.Logs) {
@log
} } else {
No logs recorded.
}
}
}
}
@code { private List testResults = []; private HashSet expandedTestLogs = []; private bool isRunning; private string currentProgressStatus = ""; protected override void OnInitialized() { ConfigService.OnConfigurationChanged += HandleConfigChanged; } private void HandleConfigChanged() { ClearResults(); InvokeAsync(StateHasChanged); } private async Task RunTestsAsync() { isRunning = true; testResults.Clear(); expandedTestLogs.Clear(); currentProgressStatus = "Initializing test suite..."; StateHasChanged(); testResults = await DbService.RunAllTestsAsync(msg => { currentProgressStatus = msg; InvokeAsync(StateHasChanged); }); // Automatically expand any failed tests for convenience foreach (var failed in testResults.Where(t => t.Status == TestStatus.Failed)) { expandedTestLogs.Add(failed.Id); } isRunning = false; StateHasChanged(); } private void ClearResults() { testResults.Clear(); expandedTestLogs.Clear(); } private void ToggleLogs(string testId) { if (expandedTestLogs.Contains(testId)) expandedTestLogs.Remove(testId); else expandedTestLogs.Add(testId); } private static string GetBorderClass(TestStatus status) => status switch { TestStatus.Passed => "border-success border-opacity-50", TestStatus.Failed => "border-danger border-opacity-75", TestStatus.Running => "border-primary border-opacity-50", _ => "border-secondary border-opacity-25" }; private static string GetBadgeClass(TestStatus status) => status switch { TestStatus.Passed => "bg-success", TestStatus.Failed => "bg-danger", TestStatus.Running => "bg-primary", _ => "bg-secondary" }; public void Dispose() { ConfigService.OnConfigurationChanged -= HandleConfigChanged; } }