Skip to content

Commit 63ae10b

Browse files
authored
fix(ui): update running todo tests inside todo suites (each) (#5939)
1 parent bec434c commit 63ae10b

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

packages/ui/client/composables/explorer/collector.ts

+36-4
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ import { hasFailedSnapshot } from '@vitest/ws-client'
66
import type { CollectFilteredTests, CollectorInfo, Filter, FilteredTests } from '~/composables/explorer/types'
77
import { client, findById } from '~/composables/client'
88
import { runFilter, testMatcher } from '~/composables/explorer/filter'
9-
import { createOrUpdateFileNode, createOrUpdateNodeTask, createOrUpdateSuiteTask } from '~/composables/explorer/utils'
9+
import {
10+
createOrUpdateFileNode,
11+
createOrUpdateNodeTask,
12+
createOrUpdateSuiteTask,
13+
isRunningTestNode,
14+
} from '~/composables/explorer/utils'
1015
import { isSuite } from '~/utils/task'
11-
import { openedTreeItems, treeFilter, uiFiles } from '~/composables/explorer/state'
16+
import { openedTreeItems, treeFilter, uiEntries, uiFiles } from '~/composables/explorer/state'
1217
import { explorerTree } from '~/composables/explorer/index'
1318
import { expandNodesOnEndRun } from '~/composables/explorer/expand'
1419

@@ -91,6 +96,25 @@ export function runCollect(
9196
})
9297
}
9398

99+
function* collectRunningTodoTests() {
100+
yield * uiEntries.value.filter(isRunningTestNode)
101+
}
102+
103+
function updateRunningTodoTests() {
104+
const idMap = client.state.idMap
105+
let task: Task | undefined
106+
for (const test of collectRunningTodoTests()) {
107+
// lookup the parent
108+
task = idMap.get(test.parentId)
109+
if (task && isSuite(task) && task.mode === 'todo') {
110+
task = idMap.get(test.id)
111+
if (task) {
112+
task.mode = 'todo'
113+
}
114+
}
115+
}
116+
}
117+
94118
function traverseFiles(collect: boolean) {
95119
const rootTasks = explorerTree.root.tasks
96120
// collect remote children
@@ -146,7 +170,7 @@ function doRunFilter(
146170

147171
// refresh explorer
148172
queueMicrotask(() => {
149-
runFilter(search, filter)
173+
refreshExplorer(search, filter, end)
150174
})
151175

152176
if (applyExpandNodes) {
@@ -158,10 +182,18 @@ function doRunFilter(
158182
}
159183
})
160184
// refresh explorer
161-
queueMicrotask(() => runFilter(search, filter))
185+
queueMicrotask(() => {
186+
refreshExplorer(search, filter, end)
187+
})
162188
}
163189
}
164190

191+
function refreshExplorer(search: string, filter: Filter, end: boolean) {
192+
runFilter(search, filter)
193+
// update only at the end
194+
end && updateRunningTodoTests()
195+
}
196+
165197
function createOrUpdateEntry(tasks: Task[]) {
166198
let task: Task
167199
for (let i = 0; i < tasks.length; i++) {

packages/ui/client/composables/explorer/utils.ts

+4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ export function isTestNode(node: UITaskTreeNode): node is TestTreeNode | CustomT
1717
return node.type === 'test' || node.type === 'custom'
1818
}
1919

20+
export function isRunningTestNode(node: UITaskTreeNode): node is TestTreeNode | CustomTestTreeNode {
21+
return node.mode === 'run' && (node.type === 'test' || node.type === 'custom')
22+
}
23+
2024
export function isFileNode(node: UITaskTreeNode): node is FileTreeNode {
2125
return node.type === 'file'
2226
}

0 commit comments

Comments
 (0)