45

According to the docs one can increase the default async timeout from 5000ms using the jest-object

More specifically, by using the jestsettimeouttimeout

The issue I am facing is I am running a series of tests against an API that is very slow, 5-15 second response times, configuring this jest object at the top of each test is painfully annoying.

Is it possible to declare these settings once before all test files are run?

4 Answers 4

47

Jest offers a testTimeout option you can add to your package.json:

  "jest": {
    "testTimeout": 15000
  }
Sign up to request clarification or add additional context in comments.

Comments

40

OK, putting bits together:

The Jest search box doesn't actually return anything when you search for: setupFilesAfterEnv

And docs talk about: setupTestFrameworkScriptFile (which also doesn't return anything on the search:/ )

Anyway, the docs leave you scratching your head but this works:

jest.config.js:

module.exports = {
  setupFilesAfterEnv: ['./setup.js'],

setup.js:

jest.setTimeout(10000); // in milliseconds

The jest folks should make it easier to find this information.

2 Comments

If someone stumbles across this post. The jest folks added a new config option called testTimeout which would do the same. :)
FYI, I was looking for something I could use for a whole suite that would not affect other suites (in this case, it was an e2e suite whose tests took much longer to run than unit tests). I've now confirmed that using jest.setTimeout(n) is in fact per-suite and will not affect your other suites.
34

Use testTimeout. In yourjest.config.js (or similar), add the following:

const MILLISECONDS = 1000;

module.exports = {
  testTimeout: 60 * MILLISECONDS
}

Comments

8

If you are working with react and initializing you app using create-react-app, then under your src/ directory you should have a file named setupTests.js. Here you can setup a global timeout for all of your tests just by insert this line after the import statement for @testing-libary

jest.setTimeout(15000); // in milliseconds

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.