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.
To set a timeout on a single test, pass a third option to it/test, for example:
it('testing balabala', async () => {
...
}, 70000);
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.
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
}