From c50788e3d43a7dbfe3145bb51c885fed7e8a5a6d Mon Sep 17 00:00:00 2001 From: bayger Date: Thu, 18 Jun 2026 16:22:06 +0200 Subject: [PATCH 1/2] Add score and full pass stats to test run pass/fail tab --- src/views/testing/TestRunDetailView.vue | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/views/testing/TestRunDetailView.vue b/src/views/testing/TestRunDetailView.vue index 4283f40..a3c1421 100644 --- a/src/views/testing/TestRunDetailView.vue +++ b/src/views/testing/TestRunDetailView.vue @@ -278,6 +278,17 @@ const passStats = computed(() => { return { total, passed, pct: Math.round((passed / total) * 100) } }) +const fullPassStats = computed(() => { + if (checkedFields.value.length === 0 || conversations.value.length === 0) return null + const completed = conversations.value.filter( + c => c.status !== 'queued' && c.status !== 'in_progress' && c.status !== 'error' + ) + const fullPass = completed.filter( + c => checkedFields.value.every(f => isPassing(c, f)) + ).length + return { total: completed.length, fullPass } +}) + // ── Status helpers ───────────────────────────────────────────── function runStatusBadgeClass(status: ScenarioRunStatus): string { @@ -495,6 +506,9 @@ function openConversation(conv: ScenarioConversationResponse) {
{{ passStats.passed }} / {{ passStats.total }} checks passed
{{ conversations.length }} conversations × {{ checkedFields.length }} checked fields
+
+ {{ fullPassStats.fullPass }}/{{ fullPassStats.total }} conversations with full pass +
@@ -512,6 +526,7 @@ function openConversation(conv: ScenarioConversationResponse) { class="table-header-cell text-center" :title="'Expected: ' + JSON.stringify(field.expectedValue)" >{{ field.label }} + Score Result @@ -546,6 +561,22 @@ function openConversation(conv: ScenarioConversationResponse) { + + + + +