Skip to content

Commit b789728

Browse files
fix: correct transform time calculation in merged report (#10570) (#10578)
Co-authored-by: Hiroshi Ogawa <hi.ogawa.zz@gmail.com>
1 parent 6f794b1 commit b789728

3 files changed

Lines changed: 12 additions & 6 deletions

File tree

packages/vitest/src/node/core.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -642,8 +642,9 @@ export class Vitest {
642642
throw new Error('Cannot merge reports when `--reporter=blob` is used. Remove blob reporter from the config first.')
643643
}
644644

645-
const { files, errors, coverages, executionTimes } = await readBlobs(this.version, directory || this.config.mergeReports, this.projects)
646-
this.state.blobs = { files, errors, coverages, executionTimes }
645+
const { files, errors, coverages, executionTimes, transformTimes } = await readBlobs(this.version, directory || this.config.mergeReports, this.projects)
646+
this.state.blobs = { files, errors, coverages, executionTimes, transformTimes }
647+
this.state.transformTime = transformTimes.reduce((a, b) => a + b, 0)
647648

648649
await this.report('onInit', this)
649650

packages/vitest/src/node/reporters/blob.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ export class BlobReporter implements Reporter {
8282
coverage,
8383
executionTime,
8484
environmentModules,
85+
this.ctx.state.transformTime,
8586
] satisfies MergeReport)
8687

8788
let outputFile = this.options.outputFile ?? getOutputFile(this.ctx.config, 'blob')
@@ -133,15 +134,15 @@ export async function readBlobs(
133134
)
134135
}
135136
const content = await readFile(fullPath, 'utf-8')
136-
const [version, files, errors, coverage, executionTime, environmentModules] = parse(
137+
const [version, files, errors, coverage, executionTime, environmentModules, transformTime] = parse(
137138
content,
138139
) as MergeReport
139140
if (!version) {
140141
throw new TypeError(
141142
`vitest.mergeReports() expects all paths in "${blobsDirectory}" to be files generated by the blob reporter, but "${filename}" is not a valid blob file`,
142143
)
143144
}
144-
return { version, files, errors, coverage, file: filename, executionTime, environmentModules }
145+
return { version, files, errors, coverage, file: filename, executionTime, environmentModules, transformTime }
145146
})
146147
const blobs = await Promise.all(promises)
147148

@@ -209,12 +210,14 @@ export async function readBlobs(
209210
const errors = blobs.flatMap(blob => blob.errors)
210211
const coverages = blobs.map(blob => blob.coverage)
211212
const executionTimes = blobs.map(blob => blob.executionTime)
213+
const transformTimes = blobs.map(blob => blob.transformTime)
212214

213215
return {
214216
files,
215217
errors,
216218
coverages,
217219
executionTimes,
220+
transformTimes,
218221
}
219222
}
220223

@@ -223,6 +226,7 @@ export interface MergedBlobs {
223226
errors: unknown[]
224227
coverages: unknown[]
225228
executionTimes: number[]
229+
transformTimes: number[]
226230
}
227231

228232
export type MergeReport = [
@@ -232,6 +236,7 @@ export type MergeReport = [
232236
coverage: unknown,
233237
executionTime: number,
234238
environmentModules: MergeReportEnvironmentModules,
239+
transformTime: number,
235240
]
236241

237242
interface MergeReportEnvironmentModules {

test/e2e/test/reporters/merge-reports.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ test('total and merged execution times are shown', async () => {
265265
file.tasks.push(createTest('some test', file))
266266

267267
await writeBlob(
268-
[version, [file], [], undefined, 1500 * index, {}],
268+
[version, [file], [], undefined, 1500 * index, {}, 2000 * index],
269269
resolve(`./fixtures/reporters/merge-reports/.vitest/blob/blob-${index}-2.json`),
270270
)
271271
}
@@ -279,7 +279,7 @@ test('total and merged execution times are shown', async () => {
279279
expect(stdout).toContain('✓ first.test.ts (1 test)')
280280
expect(stdout).toContain('✓ second.test.ts (1 test)')
281281

282-
expect(stdout).toContain('Duration 4.50s')
282+
expect(stdout).toContain('Duration 4.50s (transform 6.00s')
283283
expect(stdout).toContain('Per blob 1.50s 3.00s')
284284
})
285285

0 commit comments

Comments
 (0)