UNPKG

time-fast-forward

Version:

Fake the system time (Date, hrtime) in your tests, without freezing it (unlike in many other libraries). Freeze only when you need.

72 lines (51 loc) 2.63 kB
# time-fast-forward ![npm](https://img.shields.io/npm/v/time-fast-forward) ![GitHub](https://img.shields.io/github/license/ZitRos/time-fast-forward) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/ZitRos/time-fast-forward/NPM%20package) ![Codecov](https://img.shields.io/codecov/c/github/ZitRos/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 ```bash npm install --save-dev time-fast-forward ``` ## Examples ```ts 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: ```ts 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); ``` ## License [MIT](LICENSE) © [Nikita Savchenko](https://nikita.tk)