✗ npx jest --version
24.5.0
Got a set of jest tests that are timezone sensitive. We typically run them with an npm script: "jest": "TZ=utc jest"
With the TZ set to utc I get values like this in snapshots:
modificationDate="2019-01-08T00:00:00.000Z"
Without it I get:
modificationDate="2019-01-08T08:00:00.000Z"
Is there a way to set that in my jest config so I can run npx jest
at the command line without having to go through the NPM script? There's nothing in config docs about this.
I tried adding these two to my jest.config.js. Neither one worked:
TZ: 'utc',
globals: {
TZ: 'utc',
},
Sure, it seems trivial to work around but I'm surprised Jest doesn't have a way to configure this for tests.
I just run into the same issue and I was able to resolve it by adding
process.env.TZ = 'your/timezone';
to myjest.config.js
.Maybe this helps in your case as well :)
The problem with
process.env.TZ = 'UTC';
is, that if something runs before this line and usesDate
, the value will be cached inDate
. Thereforeprocess.env
is in general not suitable for setting the timezone. See https://github.com/nodejs/node/issues/3449So a better way is to use an actual env variable, but for tests this will work:
1. Add this to your package.json
2. Put this file besides package.json as
global-setup.js
3. Optional: Add a test that ensures UTC execution
The normal
setupFiles
did not work for me, since they run too late (jest: ^23.5.0). So it is mandatory to use the globalSetup file.