time-fast-forward
v1.0.3
Published
Fake the system time (Date, hrtime) in your tests, without freezing it (unlike in many other libraries). Freeze only when you need.
Downloads
185
Maintainers
Readme
time-fast-forward
Control the system time (Date, hrtime) in your tests, without freezing it (unlike in many other libraries).
Mock date and time both in NodeJS and web applications. Supports typescript.
Installation
npm install --save-dev time-fast-forward
Examples
import { jumpToTime, shiftTimeBy, resetTime } from 'time-fast-forward';
console.log(new Date()); // -> Sat Sep 12 2020 01:18:21
// Add one hour to the current clock
shiftTimeBy(60 * 60 * 1000);
console.log(new Date()); // -> Sat Sep 12 2020 02:18:21
// Shift -2 hours from now (-1 hour from the original time in this example)
shiftTimeBy(-2 * 60 * 60 * 1000);
console.log(new Date()); // -> Sat Sep 12 2020 00:18:21
// Jump to a given date and time. Mind when providing anything relative here
jumpToTime("Fri, 11 Sep 2022 22:26:43 GMT"); // jumpToTime(2020, 1, 3), etc
console.log(new Date()); // -> Fri Sep 11 2022 22:26:43
resetTime(); // Get back to the normal time
console.log(new Date()); // -> Sat Sep 12 2020 01:18:21
This library can also potentially support time freezing, PRs for this are welcome:
console.log(new Date()); // -> Sat Sep 12 2020 01:18:21
// note seconds here ^
setTimeout(() => {
console.log(new Date()); // -> Sat Sep 12 2020 01:18:22
// time is still ticking ^
// Not implemented yet: PRs are welcome!
freezeTime();
setTimeout(() => {
console.log(new Date()); // -> Sat Sep 12 2020 01:18:22
// now time is frozen ^
// Not implemented yet: PRs are welcome!
unfreezeTime();
console.log(new Date()); // -> Sat Sep 12 2020 01:18:22
// now at +1s from real time ^
resetTime();
console.log(new Date()); // -> Sat Sep 12 2020 01:18:21
// back to the normal time! ^
}, 1000);
}, 1000);