11import type { Task } from '@vitest/runner'
22import type { FileTreeNode , Filter , FilterResult , ParentTreeNode , SearchMatcher , UITaskTreeNode } from '~/composables/explorer/types'
3+ import { isTestCase } from '@vitest/runner/utils'
34import { client , config , findById } from '~/composables/client'
45import { explorerTree } from '~/composables/explorer/index'
56import { currentProjectName , filteredFiles , projectSort , uiEntries } from '~/composables/explorer/state'
@@ -10,8 +11,8 @@ import {
1011 isTestNode ,
1112} from '~/composables/explorer/utils'
1213
13- export function testMatcher ( task : Task , search : SearchMatcher , filter : Filter ) {
14- return task ? matchTask ( task , search , filter ) : false
14+ export function testMatcher ( task : Task , search : SearchMatcher , filter : Filter , filterSlow = true ) {
15+ return task ? matchTask ( task , search , filter , filterSlow ) : false
1516}
1617/**
1718 * Filter child nodes using search, filter and only tests.
@@ -219,13 +220,11 @@ function* filterParents(
219220 }
220221}
221222
222- function matchState ( task : Task , filter : Filter ) {
223- if ( filter . slow ) {
224- if ( task . type === 'test' ) {
223+ function matchState ( task : Task , filter : Filter , filterSlow = true ) {
224+ if ( filterSlow && filter . slow ) {
225+ if ( isTestCase ( task ) ) {
225226 const threshold = config . value . slowTestThreshold
226- if ( typeof threshold === 'number' && typeof task . result ?. duration === 'number' && task . result . duration > threshold ) {
227- return true
228- }
227+ return typeof threshold === 'number' && typeof task . result ?. duration === 'number' && task . result . duration > threshold
229228 }
230229 }
231230
@@ -251,10 +250,11 @@ function matchTask(
251250 task : Task ,
252251 search : SearchMatcher ,
253252 filter : Filter ,
253+ filterSlow = true ,
254254) {
255255 // search and filter will apply together
256256 if ( search ( task ) ) {
257- const hasStatusFilter = filter . success || filter . failed || filter . skipped || filter . slow
257+ const hasStatusFilter = filter . success || filter . failed || filter . skipped || ( filterSlow && filter . slow )
258258 if ( hasStatusFilter ) {
259259 if ( matchState ( task , filter ) ) {
260260 return true
0 commit comments