Comments (3)
It looks like multiple describe
are running at the same time:
vitest/packages/vitest/src/runtime/runners/benchmark.ts
Lines 38 to 39 in 6eda473
However, multiple bench
inside single describe
are executed sequentially, so your sample code with four bench
inside single describe
shouldn't interfere each other. Can you check if you have multiple describe
?
Though I'm not familiar with the field of benchmarking, but I would feel everything should run sequentially by default and that probably gives better stability. Maybe we can check with what other benchmark framework does in general.
I'm playing with examples like this. Multiple bench files also run in parallel by default, but it can be made sequential by fileParallelism = false
:
https://stackblitz.com/edit/vitest-dev-vitest-cdshc4?file=test.log
Sample code
import { bench, describe } from "vitest"
import fs from "node:fs";
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))
describe("suite1", () => {
let i = 0;
bench("bench1", async () => {
await fs.promises.appendFile("test.log",`file1, suite1, bench1 = ${i++}\n`)
await sleep(500);
}, { time: 0, iterations: 0 })
let j = 0;
bench("bench2", async () => {
await fs.promises.appendFile("test.log",`file1, suite1, bench2 = ${j++}\n`)
await sleep(500);
}, { time: 0, iterations: 0 })
})
describe("suite2", () => {
let i = 0;
bench("bench1", async () => {
await fs.promises.appendFile("test.log",`file1, suite2, bench1 = ${i++}\n`)
await sleep(500);
}, { time: 0, iterations: 0 })
})
from vitest.
Thank you very much. We did what you suggested and it worked fine.
We made implimented it in the vite.config.js like this. Such that we still could have our tests run in parallel
import { defineConfig } from 'vitest/config';
export default defineConfig(({mode})=>({
test: {
fileParallelism: mode!=="benchmark",
},
}));
And regarding if benchmarks should run sequentially. I can see arguments for both. A good first step could be to add a small section for it in the documentation.
from vitest.
Related Issues (20)
- Multiline Vue component props breaks import.meta.env HOT 4
- queueMicrotask and mocked functions HOT 3
- vitest hangs with stubbed process HOT 3
- 1.2.0+ causes "Cannot read properties of null (reading 'Symbol(Last check for pointer-events)')" errors with @testing-library/user-event HOT 2
- Doesn't respect custom reactNamespace HOT 1
- Istanbul Cobertura output? HOT 2
- A check to see if all the mock functions are asserted for all the call it recieved with expected params. This check can be configured as warn and error mode. HOT 1
- Cannot Mock Implementation of `process.exit` HOT 6
- TypeError: Cannot read properties of undefined (reading 'test') HOT 13
- Vitest fails to access internal state when running yarn web with React Native
- Imported dependency file executed twice HOT 3
- 【BUG】Cannot bundle Node.js built-in "async_hooks" HOT 1
- Tries to assign to a getter-only field when formatting an error
- 【question】Unable to recognize the @ (root path) of the project HOT 1
- Vitest doesn't discover tests when pointed at monorepo root HOT 1
- 在使用vitest编写单测模块时,抛出错误模块与编写模块不一致 HOT 5
- Vitest could detect some errors it is currently silencing when using `jsdom` or `happy-dom` environments
- toHaveBeenNthCalledWith does not check call times HOT 1
- V8 Coverage: Exclude empty lines, comments, TS types
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vitest.