[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
12

Configure Feed

Select the types of activity you want to include in your feed.

fix(ui): update running todo tests inside todo suites (each) (#5939)

authored by

Joaquín Sánchez and committed by
GitHub
(Jun 20, 2024, 5:57 PM +0200) 63ae10bd bec434cb

+40 -4
+36 -4
packages/ui/client/composables/explorer/collector.ts
··· 6 6 import type { CollectFilteredTests, CollectorInfo, Filter, FilteredTests } from '~/composables/explorer/types' 7 7 import { client, findById } from '~/composables/client' 8 8 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' 10 15 import { isSuite } from '~/utils/task' 11 - import { openedTreeItems, treeFilter, uiFiles } from '~/composables/explorer/state' 16 + import { openedTreeItems, treeFilter, uiEntries, uiFiles } from '~/composables/explorer/state' 12 17 import { explorerTree } from '~/composables/explorer/index' 13 18 import { expandNodesOnEndRun } from '~/composables/explorer/expand' 14 19 ··· 91 96 }) 92 97 } 93 98 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 + 94 118 function traverseFiles(collect: boolean) { 95 119 const rootTasks = explorerTree.root.tasks 96 120 // collect remote children ··· 146 170 147 171 // refresh explorer 148 172 queueMicrotask(() => { 149 - runFilter(search, filter) 173 + refreshExplorer(search, filter, end) 150 174 }) 151 175 152 176 if (applyExpandNodes) { ··· 158 182 } 159 183 }) 160 184 // refresh explorer 161 - queueMicrotask(() => runFilter(search, filter)) 185 + queueMicrotask(() => { 186 + refreshExplorer(search, filter, end) 187 + }) 162 188 } 189 + } 190 + 191 + function refreshExplorer(search: string, filter: Filter, end: boolean) { 192 + runFilter(search, filter) 193 + // update only at the end 194 + end && updateRunningTodoTests() 163 195 } 164 196 165 197 function createOrUpdateEntry(tasks: Task[]) {
+4
packages/ui/client/composables/explorer/utils.ts
··· 17 17 return node.type === 'test' || node.type === 'custom' 18 18 } 19 19 20 + export function isRunningTestNode(node: UITaskTreeNode): node is TestTreeNode | CustomTestTreeNode { 21 + return node.mode === 'run' && (node.type === 'test' || node.type === 'custom') 22 + } 23 + 20 24 export function isFileNode(node: UITaskTreeNode): node is FileTreeNode { 21 25 return node.type === 'file' 22 26 }