From 8880c907a4a279ef7144a64a1cc5f84f14a4574e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=BCller?= Date: Wed, 25 Feb 2026 11:49:17 +0100 Subject: [PATCH] feat(ui): implement filter for slow tests (#9705) Co-authored-by: userquin --- .../ui/client/components/FilterStatus.vue | 7 ++- packages/ui/client/components/ProgressBar.vue | 6 +-- packages/ui/client/components/StatusIcon.vue | 8 ++-- .../components/dashboard/TestFilesEntry.vue | 16 +++++-- .../components/dashboard/TestsEntry.vue | 26 ++++++++--- .../client/components/explorer/Explorer.vue | 45 ++++++++----------- .../components/explorer/ExplorerItem.vue | 15 +++++-- .../ui/client/components/views/ViewEditor.vue | 4 +- .../components/views/ViewReportError.vue | 2 +- .../client/composables/explorer/collector.ts | 11 +++++ .../ui/client/composables/explorer/filter.ts | 14 +++++- .../ui/client/composables/explorer/search.ts | 7 ++- .../ui/client/composables/explorer/state.ts | 6 +++ .../ui/client/composables/explorer/tree.ts | 8 ++++ .../ui/client/composables/explorer/types.ts | 4 ++ .../ui/client/composables/explorer/utils.ts | 21 ++++++++- .../vitest/src/node/config/serializeConfig.ts | 5 +++ packages/vitest/src/runtime/config.ts | 1 + test/config/test/pool.test.ts | 6 +++ test/ui/test/html-report.spec.ts | 4 +- test/ui/test/ui.spec.ts | 4 +- 21 files changed, 164 insertions(+), 56 deletions(-) diff --git a/packages/ui/client/components/FilterStatus.vue b/packages/ui/client/components/FilterStatus.vue index da9d8a2a7..2d7d165ec 100644 --- a/packages/ui/client/components/FilterStatus.vue +++ b/packages/ui/client/components/FilterStatus.vue @@ -16,7 +16,7 @@ function toggle() { diff --git a/packages/ui/client/components/ProgressBar.vue b/packages/ui/client/components/ProgressBar.vue index ecf2c0879..92468c25b 100644 --- a/packages/ui/client/components/ProgressBar.vue +++ b/packages/ui/client/components/ProgressBar.vue @@ -50,7 +50,7 @@ const widthPending = computed(() => { absolute l-0 t-0 - bg-red5 + bg-red-700 dark:bg-red-500 h-3px :class="classes" :style="`width: ${widthFailed}px;`" @@ -61,7 +61,7 @@ const widthPending = computed(() => { absolute l-0 t-0 - bg-green5 + bg-green-700 dark:bg-green-500 h-3px :class="classes" :style="`left: ${widthFailed}px; width: ${widthPass}px;`" @@ -72,7 +72,7 @@ const widthPending = computed(() => { absolute l-0 t-0 - bg-yellow5 + bg-yellow-700 dark:bg-yellow-500 h-3px :class="classes" :style="`left: ${widthPass + widthFailed}px; width: ${widthPending}px;`" diff --git a/packages/ui/client/components/StatusIcon.vue b/packages/ui/client/components/StatusIcon.vue index 44fd3057a..c7adbc621 100644 --- a/packages/ui/client/components/StatusIcon.vue +++ b/packages/ui/client/components/StatusIcon.vue @@ -11,20 +11,20 @@ defineProps<{ diff --git a/packages/ui/client/components/dashboard/TestFilesEntry.vue b/packages/ui/client/components/dashboard/TestFilesEntry.vue index b346f52b2..1243f23a1 100644 --- a/packages/ui/client/components/dashboard/TestFilesEntry.vue +++ b/packages/ui/client/components/dashboard/TestFilesEntry.vue @@ -30,12 +30,22 @@ import ErrorEntry from './ErrorEntry.vue' + + @@ -45,7 +55,7 @@ import ErrorEntry from './ErrorEntry.vue'
Snapshot Fail
-
+
{{ explorerTree.summary.filesSnapshotFailed }}
@@ -55,7 +65,7 @@ import ErrorEntry from './ErrorEntry.vue'
Errors
-
+
{{ unhandledErrors.length }}
diff --git a/packages/ui/client/components/dashboard/TestsEntry.vue b/packages/ui/client/components/dashboard/TestsEntry.vue index 7be0fe7bc..f21411033 100644 --- a/packages/ui/client/components/dashboard/TestsEntry.vue +++ b/packages/ui/client/components/dashboard/TestsEntry.vue @@ -3,11 +3,12 @@ import { explorerTree } from '~/composables/explorer' import { filter } from '~/composables/explorer/state' import DashboardEntry from './DashboardEntry.vue' -function toggleFilter(type: 'success' | 'failed' | 'skipped' | 'total') { +function toggleFilter(type: 'success' | 'failed' | 'skipped' | 'slow' | 'total') { // Reset all filters first filter.success = false filter.failed = false filter.skipped = false + filter.slow = false if (type === 'total') { return @@ -20,7 +21,7 @@ function toggleFilter(type: 'success' | 'failed' | 'skipped' | 'total') {