Reputation: 1940
I want to verify a function that can get update after one minute, and I set some sleep in my code, but my default time out value is 15000 ms, my code has sleep 60000ms so it returns this error:
thrown: "Exceeded timeout of 15000 ms for a test.
Use jest.setTimeout(newTimeout) to increase the timeout value,
if this is a long-running test."
my code is here:
it('shows that timeline can get updated after one minute', async () => {
await selectTimeForTimeLine.selectTime('Last 5 minutes');
await page.waitForTimeout(3000);
const defaultTime = await alarmTimeLine.xAxisValues();
await page.evaluate(() => {
return new Promise((resolve) => setTimeout(resolve, 60000));
});
const correntTime = await alarmTimeLine.xAxisValues();
expect(defaultTime).not.toEqual(correntTime);
});
Where should I put jest.setTimeOut()
? I want to increase exceeded timeout value to 70000ms to make sure my code runs well.
Upvotes: 60
Views: 96654
Reputation: 123148
The jest docs used to be a little confusing, so I had them updated.
From the jest.setTimeout() docs:
Set the default timeout interval for tests and before/after hooks in milliseconds. This only affects the test file from which this function is called.
Ie jest.setTimeout() is handled on a file level. Their example doesn't make it clear, but you should have run jest.setTimeout()
at the top of your test file:
const SECONDS = 1000;
jest.setTimeout(70 * SECONDS)
describe(`something`, () => {
it('works', async () => {
asset(true).isTruthy()
});
})
Update: I've now sent a PR to the Jest team, which has been accepted, to clarify the docs. They now read:
To set timeout intervals on different tests in the same file, use the timeout option on each individual test.
This is part of Jest 29.5 and newer.
This is probably what you want. To use the timeout option on each individual test:
// Just to increase readability
const SECONDS = 1000;
describe(`something`, () => {
it('works', async () => {
asset(true).isTruthy()
}, 3 * SECONDS);
})
Upvotes: 28
Reputation: 1940
To set a timeout on a single test, pass a third option to it/test
, for example:
const SECONDS = 1000;
it('does expected thing', async () => {
...
}, 70 * SECONDS);
The value is in milliseconds. In this example 70 seconds.
Upvotes: 122
Reputation: 6615
jest also has a config file.
// jest.config.js
module.exports = {
// ...
testTimeout: 20000
}
Upvotes: 2
Reputation: 10174
After upgrading to v28+, this jest.setTimeout()
does not work for me anymore. I have to set the timeout explicitly in ./jest.config.js
:
// jest.config.js
module.exports = {
// ...
testTimeout: 70000
}
Upvotes: 15