Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 596f739

Browse filesBrowse files
authored
fix: project color label on html reporter (#10142)
1 parent f1b1f6c commit 596f739
Copy full SHA for 596f739

11 files changed

+91-30Lines changed: 91 additions & 30 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎packages/ui/client/composables/client/index.ts‎

Copy file name to clipboardExpand all lines: packages/ui/client/composables/client/index.ts
+7-4Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {
44
RunnerTaskEventPack,
55
RunnerTaskResultPack,
66
RunnerTestFile,
7-
SerializedConfig,
7+
SerializedRootConfig,
88
TestAnnotation,
99
} from 'vitest'
1010
import type { BrowserRunnerState } from '../../../types'
@@ -67,7 +67,7 @@ export const client = (function createVitestClient() {
6767
}
6868
})()
6969

70-
export const config = shallowRef<Partial<SerializedConfig>>({} as any)
70+
export const config = shallowRef<Partial<SerializedRootConfig>>({} as any)
7171
export const status = ref<WebSocketStatus>('CONNECTING')
7272
export const availableProjects = shallowRef<string[]>([])
7373

@@ -171,12 +171,15 @@ watch(
171171
ws.addEventListener('open', async () => {
172172
status.value = 'OPEN'
173173
client.state.filesMap.clear()
174-
let [files, _config, errors, projects] = await Promise.all([
174+
let [files, _config, errors] = await Promise.all([
175175
client.rpc.getFiles(),
176176
client.rpc.getConfig(),
177177
client.rpc.getUnhandledErrors(),
178-
client.rpc.getResolvedProjectLabels(),
179178
])
179+
const projects = _config.projects.map(project => ({
180+
name: project.name || '',
181+
color: project.color,
182+
}))
180183
if (_config.standalone) {
181184
const filenames = await client.rpc.getTestFiles()
182185
files = filenames.map(([{ name, root }, filepath]) => {
Collapse file

‎packages/ui/client/composables/client/static.ts‎

Copy file name to clipboardExpand all lines: packages/ui/client/composables/client/static.ts
+3-10Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { BirpcReturn } from 'birpc'
33
import type {
44
ModuleGraphData,
55
RunnerTestFile,
6-
SerializedConfig,
6+
SerializedRootConfig,
77
WebSocketEvents,
88
WebSocketHandlers,
99
} from 'vitest'
@@ -15,8 +15,7 @@ import { StateManager } from '../../../../ws-client/src/state'
1515
interface HTMLReportMetadata {
1616
paths: string[]
1717
files: RunnerTestFile[]
18-
config: SerializedConfig
19-
projects: string[]
18+
config: SerializedRootConfig
2019
moduleGraph: Record<string, Record<string, ModuleGraphData>>
2120
unhandledErrors: unknown[]
2221
// filename -> source
@@ -49,12 +48,6 @@ export function createStaticClient(): VitestClient {
4948
getConfig: () => {
5049
return metadata.config
5150
},
52-
getResolvedProjectNames: () => {
53-
return metadata.projects
54-
},
55-
getResolvedProjectLabels: () => {
56-
return []
57-
},
5851
getModuleGraph: async (projectName, id) => {
5952
return metadata.moduleGraph[projectName]?.[id]
6053
},
@@ -85,7 +78,7 @@ export function createStaticClient(): VitestClient {
8578
saveTestFile: asyncNoop,
8679
getProvidedContext: () => ({}),
8780
getTestFiles: asyncNoop,
88-
} as WebSocketHandlers
81+
} as Omit<WebSocketHandlers, 'getResolvedProjectLabels'>
8982

9083
ctx.rpc = rpc as any as BirpcReturn<WebSocketHandlers, WebSocketEvents>
9184

Collapse file

‎packages/ui/node/reporter.ts‎

Copy file name to clipboardExpand all lines: packages/ui/node/reporter.ts
+3-5Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ModuleGraphData, RunnerTestFile, SerializedConfig } from 'vitest'
1+
import type { ModuleGraphData, RunnerTestFile, SerializedRootConfig } from 'vitest'
22
import type { HTMLOptions, Reporter, Vitest } from 'vitest/node'
33
import { existsSync, promises as fs } from 'node:fs'
44
import { fileURLToPath } from 'node:url'
@@ -29,8 +29,7 @@ function getOutputFile(config: PotentialConfig | undefined) {
2929
interface HTMLReportData {
3030
paths: string[]
3131
files: RunnerTestFile[]
32-
config: SerializedConfig
33-
projects: string[]
32+
config: SerializedRootConfig
3433
moduleGraph: Record<string, Record<string, ModuleGraphData>>
3534
unhandledErrors: unknown[]
3635
// filename -> source
@@ -69,9 +68,8 @@ export default class HTMLReporter implements Reporter {
6968
const result: HTMLReportData = {
7069
paths: this.ctx.state.getPaths(),
7170
files: this.ctx.state.getFiles(),
72-
config: this.ctx.getRootProject().serializedConfig,
71+
config: this.ctx.serializedRootConfig,
7372
unhandledErrors: this.ctx.state.getUnhandledErrors(),
74-
projects: this.ctx.projects.map(p => p.name),
7573
moduleGraph: {},
7674
sources: {},
7775
}
Collapse file

‎packages/vitest/src/api/setup.ts‎

Copy file name to clipboardExpand all lines: packages/vitest/src/api/setup.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export function setup(ctx: Vitest, _server?: ViteDevServer): void {
9898
await ctx.rerunTask(id)
9999
},
100100
getConfig() {
101-
return ctx.getRootProject().serializedConfig
101+
return ctx.serializedRootConfig
102102
},
103103
getResolvedProjectLabels(): { name: string; color?: LabelColor }[] {
104104
return ctx.projects.map(p => ({ name: p.name, color: p.color }))
Collapse file

‎packages/vitest/src/api/types.ts‎

Copy file name to clipboardExpand all lines: packages/vitest/src/api/types.ts
+5-2Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { File, TaskEventPack, TaskResultPack, TestAnnotation, TestArtifact } from '@vitest/runner'
22
import type { Awaitable } from '@vitest/utils'
33
import type { BirpcReturn } from 'birpc'
4-
import type { SerializedConfig } from '../runtime/config'
4+
import type { SerializedRootConfig } from '../runtime/config'
55
import type { SerializedTestSpecification } from '../runtime/types/utils'
66
import type { LabelColor, ModuleGraphData, UserConsoleLog } from '../types/general'
77
import type { ModuleDefinitionDurationsDiagnostic, UntrackedModuleDefinitionDiagnostic } from '../types/module-locations'
@@ -39,7 +39,10 @@ export interface WebSocketHandlers {
3939
getFiles: () => File[]
4040
getTestFiles: () => Promise<SerializedTestSpecification[]>
4141
getPaths: () => string[]
42-
getConfig: () => SerializedConfig
42+
getConfig: () => SerializedRootConfig
43+
/**
44+
* @deprecated Use `getConfig().projects` instead.
45+
*/
4346
getResolvedProjectLabels: () => { name: string; color?: LabelColor }[]
4447
getModuleGraph: (
4548
projectName: string,
Collapse file

‎packages/vitest/src/node/config/serializeConfig.ts‎

Copy file name to clipboardExpand all lines: packages/vitest/src/node/config/serializeConfig.ts
+3-1Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import type { SerializedConfig } from '../../runtime/config'
12
import type { TestProject } from '../project'
2-
import type { ApiConfig, SerializedConfig } from '../types/config'
3+
import type { ApiConfig } from '../types/config'
34
import { configDefaults } from '../../defaults'
45
import { isAgent } from '../../utils/env'
56

@@ -46,6 +47,7 @@ export function serializeConfig(project: TestProject): SerializedConfig {
4647
disableConsoleIntercept: config.disableConsoleIntercept,
4748
root: config.root,
4849
name: config.name,
50+
color: config.color,
4951
globals: config.globals,
5052
snapshotEnvironment: config.snapshotEnvironment,
5153
passWithNoTests: config.passWithNoTests,
Collapse file

‎packages/vitest/src/node/core.ts‎

Copy file name to clipboardExpand all lines: packages/vitest/src/node/core.ts
+8-1Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { Awaitable } from '@vitest/utils'
33
import type { Writable } from 'node:stream'
44
import type { ViteDevServer } from 'vite'
55
import type { ModuleRunner } from 'vite/module-runner'
6-
import type { SerializedCoverageConfig } from '../runtime/config'
6+
import type { SerializedCoverageConfig, SerializedRootConfig } from '../runtime/config'
77
import type { ArgumentsType, ProvidedContext, UserConsoleLog } from '../types/general'
88
import type { SourceModuleDiagnostic, SourceModuleLocations } from '../types/module-locations'
99
import type { CliOptions } from './cli/cli-api'
@@ -503,6 +503,13 @@ export class Vitest {
503503
return this.coreWorkspaceProject
504504
}
505505

506+
public get serializedRootConfig(): SerializedRootConfig {
507+
return {
508+
...this.getRootProject().serializedConfig,
509+
projects: this.projects.map(project => project.serializedConfig),
510+
}
511+
}
512+
506513
public getProjectByName(name: string): TestProject {
507514
const project = this.projects.find(p => p.name === name)
508515
|| this.coreWorkspaceProject
Collapse file

‎packages/vitest/src/public/index.ts‎

Copy file name to clipboardExpand all lines: packages/vitest/src/public/index.ts
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export type {
4040
RuntimeConfig,
4141
SerializedConfig,
4242
SerializedCoverageConfig,
43+
SerializedRootConfig,
4344
} from '../runtime/config'
4445

4546
export { VitestEvaluatedModules as EvaluatedModules } from '../runtime/moduleRunner/evaluatedModules'
Collapse file

‎packages/vitest/src/runtime/config.ts‎

Copy file name to clipboardExpand all lines: packages/vitest/src/runtime/config.ts
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import type { PrettyFormatOptions } from '@vitest/pretty-format'
33
import type { SequenceHooks, SequenceSetupFiles, SerializableRetry, TestTagDefinition } from '@vitest/runner'
44
import type { SnapshotEnvironment, SnapshotUpdateState } from '@vitest/snapshot'
55
import type { SerializedDiffOptions } from '@vitest/utils/diff'
6+
import type { LabelColor } from '../types/general'
67

78
/**
89
* Config that tests have access to.
910
*/
1011
export interface SerializedConfig {
1112
name: string | undefined
13+
color?: LabelColor
1214
globals: boolean
1315
base: string | undefined
1416
snapshotEnvironment?: string
@@ -158,6 +160,10 @@ export interface SerializedCoverageConfig {
158160
customProviderModule: string | undefined
159161
}
160162

163+
export interface SerializedRootConfig extends SerializedConfig {
164+
projects: SerializedConfig[]
165+
}
166+
161167
export type RuntimeConfig = Pick<
162168
SerializedConfig,
163169
| 'allowOnly'
Collapse file

‎test/cli/test/reporters/__snapshots__/html.test.ts.snap‎

Copy file name to clipboardExpand all lines: test/cli/test/reporters/__snapshots__/html.test.ts.snap
-6Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,6 @@ exports[`html reporter > resolves to "failing" status for test file "json-fail"
109109
"paths": [
110110
"<rootDir>/test/cli/fixtures/reporters/json-fail.test.ts",
111111
],
112-
"projects": [
113-
"",
114-
],
115112
"sources": {
116113
"<rootDir>/test/cli/fixtures/reporters/json-fail.test.ts": "import { expect, test } from 'vitest'
117114
@@ -218,9 +215,6 @@ exports[`html reporter > resolves to "passing" status for test file "all-passing
218215
"paths": [
219216
"<rootDir>/test/cli/fixtures/reporters/all-passing-or-skipped.test.ts",
220217
],
221-
"projects": [
222-
"",
223-
],
224218
"sources": {
225219
"<rootDir>/test/cli/fixtures/reporters/all-passing-or-skipped.test.ts": "import { expect, test } from 'vitest'
226220

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.