ether-time-traveler
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

ether-time-traveler

A utility that simplifies writing time dependent or stateless tests on a local Ethereum blockchain.

Forked from ejwessel's ganache-time-traveler to allow use in a testing environment using ethers.js.

Install

  • npm i ether-time-traveler

Usage

The general outline is to add require at the top of your tests

const timeMachine = require('ether-time-traveler');

add the beforeEach and afterEach hooks into your test file

contract('Test', async (accounts) =>  {
 
   const provider = new MockProvider();
   let exampleContract;
 
   beforeEach(async() => {
       let snapshotId = await timeMachine.takeSnapshot(provider);
   };
 
   afterEach(async() => {
       await timeMachine.revertToSnapshot(provider, snapshotId);
   });
 
   before('Deploy Contracts', async() => {
       /* DEPLOY CONTRACTS HERE */
       exampleContract = await ExampleContract.new();
   });
 
   /* ADD TESTS HERE */
 
   it('Time Dependent Test', async () => {
       await timeMachine.advanceTimeAndBlock(provider, SECONDS_TO_ADVANCE_BY)
   });
});

Methods

advanceTime(<ethers_provider>, <seconds_to_advance_by>)

Advances the time on the blockchain forward. Takes an extra parameter, which is the number of seconds to advance by. Note: for advancetime() to take effect, the block must also be mined using advanceBlock(). See advanceTimeAndBlock() to do both.

advanceBlock(<ethers_provider>)

Mines a new block; advances the block forward by 1 block.

advanceBlockAndSetTime(<ethers_provider>, <new_time>)

Advances the block forward by 1 and sets the time to a new time.

advanceTimeAndBlock(<ethers_provider>, <seconds_to_advance_by>)

Advances the block by 1 in addition to advancing the time on the blockchain forward. Takes an extra parameter, which is the number of seconds to advance by.

takeSnapshot(<ethers_provider>)

Snapshot the state of the blockchain at the current block. Returns the integer id of the snapshot created.

revertToSnapshot(<ethers_provider>, <id_to_revert_to>)

Revert the state of the blockchain to a previous snapshot. Takes an extra parameter, which is the snapshot id to revert to.

Resources

Package Sidebar

Install

npm i ether-time-traveler

Weekly Downloads

1

Version

1.1.0

License

ISC

Unpacked Size

11.5 kB

Total Files

4

Last publish

Collaborators

  • tomfrench