I'm using Enzyme with enzyme-to-json to do Jest snapshot testing of my React components. I'm testing shallow snapshots of a DateRange
component that renders a display field with the current range (e.g. 5/20/2016 - 7/18/2016
) and two DateInput
components that allow selecting a Date
value. This means that my snapshot contains the Date
s I pass to the component both in the DateInput
props and in a text representation it resolves itself. In my test I'm creating some fixed dates using new Date(1995, 4, 23)
.
When I run my test in different timezones, this produces different snapshots, because the Date(year, month, ...)
constructor creates the date in the local timezone. E.g. use of new Date()
produces this difference in snapshot between runs in my local timezone and on our CI server.
- value={1995-05-22T22:00:00.000Z}
+ value={1995-05-23T00:00:00.000Z}
I tried removing the timezone offset from the dates, but then the snapshot differed in the display field value, where the local timezone-dependent representation is used.
- value={5/20/2016 - 7/18/2016}
+ value={5/19/2016 - 7/17/2016}
How can I make my tests produce the same Date
s in snapshots regardless of the timezone they're run in?
TZ
environment variable in my test script declaration, and it worked like a charm. I didn't even have to mock out any Date function. – Godderd