[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(browser): support benchmark (#5622)

authored by

Hiroshi Ogawa and committed by
GitHub
(Apr 29, 2024, 1:27 PM +0200) becabb5e 30e5dc1b

+61 -4
+8
test/browser/specs/benchmark.test.ts
··· 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 + })
+3 -2
packages/browser/src/client/runner.ts
··· 92 92 if (cachedRunner) 93 93 return cachedRunner 94 94 const config = getConfig() 95 - const [{ VitestTestRunner }, { takeCoverageInsideWorker, loadDiffConfig, loadSnapshotSerializers }] = await Promise.all([ 95 + const [{ VitestTestRunner, NodeBenchmarkRunner }, { takeCoverageInsideWorker, loadDiffConfig, loadSnapshotSerializers }] = await Promise.all([ 96 96 importId('vitest/runners') as Promise<typeof import('vitest/runners')>, 97 97 importId('vitest/browser') as Promise<typeof import('vitest/browser')>, 98 98 ]) 99 - const BrowserRunner = createBrowserRunner(VitestTestRunner, { 99 + const runnerClass = config.mode === 'test' ? VitestTestRunner : NodeBenchmarkRunner 100 + const BrowserRunner = createBrowserRunner(runnerClass, { 100 101 takeCoverage: () => takeCoverageInsideWorker(config.coverage, { executeId: importId }), 101 102 }) 102 103 if (!config.snapshotOptions.snapshotEnvironment)
+1 -2
test/benchmark/fixtures/basic/only.bench.ts
··· 1 - import assert from 'node:assert' 2 - import { bench, describe, expect } from 'vitest' 1 + import { bench, describe, expect, assert } from 'vitest' 3 2 4 3 const run = [false, false, false, false, false] 5 4
+32
test/browser/fixtures/benchmark/basic.bench.ts
··· 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 + }
+17
test/browser/fixtures/benchmark/vitest.config.ts
··· 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 + })