Are tests inside one file run in parallel in Jest?
Jest in 2020
To add a bit more information on this, async
tests are run in series inside of a describe()
statement. This is useful for IO/Database setup and cleanup functions. Just take a look at the following example:
some.spec.js
describe("my asynchronous tests", () => {
beforeEach(async () => {
console.log('> setup test')
// SOMETHING ASYNCHRONOUS
});
afterEach(async () => {
console.log('< teardown test')
// SOMETHING ASYNCHRONOUS
});
test("test 1", async () => {
console.log('-- starting test 1');
// SOMETHING ASYNCHRONOUS
console.log('-- finished test 1');
}, 100000);
test("test 2", async () => {
console.log('-- starting test 2');
// SOMETHING ASYNCHRONOUS
console.log('-- finished test 2');
}, 100000);
});
Outputs:
> setup test
-- starting test 1
-- finished test 1
< teardown test
> setup test
-- starting test 2
-- finished test 2
< teardown test
Multiple describe()
statements will execute in parallel though, even if they're in the same file.
You can safely assume tests inside a single file will run in the order of appearance. You could prove this by putting a console.log
in each it
block.
It's probably worth mentioning that it's generally bad practice to rely on the order of execution / external state...and you never know, Jest (or the current underlying test runner, Jasmine) may decide to run them in a random order in a newer version.