Skip to content

Commit becabb5

Browse files
authored
fix(browser): support benchmark (#5622)
1 parent 30e5dc1 commit becabb5

File tree

5 files changed

+61
-4
lines changed

5 files changed

+61
-4
lines changed

packages/browser/src/client/runner.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,12 @@ export async function initiateRunner() {
9292
if (cachedRunner)
9393
return cachedRunner
9494
const config = getConfig()
95-
const [{ VitestTestRunner }, { takeCoverageInsideWorker, loadDiffConfig, loadSnapshotSerializers }] = await Promise.all([
95+
const [{ VitestTestRunner, NodeBenchmarkRunner }, { takeCoverageInsideWorker, loadDiffConfig, loadSnapshotSerializers }] = await Promise.all([
9696
importId('vitest/runners') as Promise<typeof import('vitest/runners')>,
9797
importId('vitest/browser') as Promise<typeof import('vitest/browser')>,
9898
])
99-
const BrowserRunner = createBrowserRunner(VitestTestRunner, {
99+
const runnerClass = config.mode === 'test' ? VitestTestRunner : NodeBenchmarkRunner
100+
const BrowserRunner = createBrowserRunner(runnerClass, {
100101
takeCoverage: () => takeCoverageInsideWorker(config.coverage, { executeId: importId }),
101102
})
102103
if (!config.snapshotOptions.snapshotEnvironment)

test/benchmark/fixtures/basic/only.bench.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import assert from 'node:assert'
2-
import { bench, describe, expect } from 'vitest'
1+
import { bench, describe, expect, assert } from 'vitest'
32

43
const run = [false, false, false, false, false]
54

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { bench, describe } from 'vitest'
2+
3+
describe('suite-a', () => {
4+
bench('good', async () => {
5+
await sleep(10)
6+
}, options)
7+
8+
bench('bad', async () => {
9+
await sleep(300)
10+
}, options)
11+
})
12+
13+
describe('suite-b', () => {
14+
bench('good', async () => {
15+
await sleep(25)
16+
}, options)
17+
18+
describe('suite-b-nested', () => {
19+
bench('good', async () => {
20+
await sleep(50)
21+
}, options)
22+
})
23+
})
24+
25+
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
26+
27+
const options = {
28+
time: 0,
29+
iterations: 2,
30+
warmupIterations: 0,
31+
warmupTime: 0,
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { fileURLToPath } from 'node:url'
2+
import { defineConfig } from 'vitest/config'
3+
4+
const provider = process.env.PROVIDER || 'playwright'
5+
const name =
6+
process.env.BROWSER || (provider === 'playwright' ? 'chromium' : 'chrome')
7+
8+
export default defineConfig({
9+
test: {
10+
browser: {
11+
enabled: true,
12+
provider,
13+
name,
14+
},
15+
},
16+
cacheDir: fileURLToPath(new URL("./node_modules/.vite", import.meta.url)),
17+
})

test/browser/specs/benchmark.test.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { expect, test } from 'vitest'
2+
import { runVitest } from '../../test-utils'
3+
4+
test('benchmark', async () => {
5+
const result = await runVitest({ root: 'fixtures/benchmark' }, [], 'benchmark')
6+
expect(result.stdout).toContain('✓ basic.bench.ts > suite-a')
7+
expect(result.exitCode).toBe(0)
8+
})

0 commit comments

Comments
 (0)