Skip to content

Commit becabb5

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

5 files changed

Lines changed: 61 additions & 4 deletions

File tree

‎packages/browser/src/client/runner.ts‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,12 @@ export async function initiateRunner() {
9292
if(cachedRunner)
9393
returncachedRunner
9494
constconfig=getConfig()
95-
const[{ VitestTestRunner },{ takeCoverageInsideWorker, loadDiffConfig, loadSnapshotSerializers }]=awaitPromise.all([
95+
const[{ VitestTestRunner, NodeBenchmarkRunner},{ takeCoverageInsideWorker, loadDiffConfig, loadSnapshotSerializers }]=awaitPromise.all([
9696
importId('vitest/runners')asPromise<typeofimport('vitest/runners')>,
9797
importId('vitest/browser')asPromise<typeofimport('vitest/browser')>,
9898
])
99-
constBrowserRunner=createBrowserRunner(VitestTestRunner,{
99+
construnnerClass=config.mode==='test' ? VitestTestRunner : NodeBenchmarkRunner
100+
constBrowserRunner=createBrowserRunner(runnerClass,{
100101
takeCoverage: ()=>takeCoverageInsideWorker(config.coverage,{executeId: importId}),
101102
})
102103
if(!config.snapshotOptions.snapshotEnvironment)

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

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

43
construn=[false,false,false,false,false]
54

Lines changed: 32 additions & 0 deletions
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+
awaitsleep(10)
6+
},options)
7+
8+
bench('bad',async()=>{
9+
awaitsleep(300)
10+
},options)
11+
})
12+
13+
describe('suite-b',()=>{
14+
bench('good',async()=>{
15+
awaitsleep(25)
16+
},options)
17+
18+
describe('suite-b-nested',()=>{
19+
bench('good',async()=>{
20+
awaitsleep(50)
21+
},options)
22+
})
23+
})
24+
25+
constsleep=(ms: number)=>newPromise(resolve=>setTimeout(resolve,ms));
26+
27+
constoptions={
28+
time: 0,
29+
iterations: 2,
30+
warmupIterations: 0,
31+
warmupTime: 0,
32+
}
Lines changed: 17 additions & 0 deletions
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+
constprovider=process.env.PROVIDER||'playwright'
5+
constname=
6+
process.env.BROWSER||(provider==='playwright' ? 'chromium' : 'chrome')
7+
8+
exportdefaultdefineConfig({
9+
test: {
10+
browser: {
11+
enabled: true,
12+
provider,
13+
name,
14+
},
15+
},
16+
cacheDir: fileURLToPath(newURL("./node_modules/.vite",import.meta.url)),
17+
})
Lines changed: 8 additions & 0 deletions
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+
constresult=awaitrunVitest({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)