Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Chopsticks integration for Ganache-like testing #210

Merged
merged 7 commits into from
Mar 12, 2024

Conversation

prxgr4mm3r
Copy link
Collaborator

This PR are connected to Ganache-like testing feature #49. The main purpose of this issue is to make testing easier by implementing next features:

  • block time stamp manipulation (can mine a block with arbitrary block time stamp)
  • block number manipulation
  • taking a snapshot and retrieve later
  • Balance manipulation of accounts
  • Impersonate any account

All of them can already implemented in Chopsticks. Below I will explain how to use it.
Firstly, you should set up your swanky project with swanky init and choose that you want to install swanky-node. Then you should use swanky node chopsticks init to initiate chopsticks config, which will be stored in the ./node/config/ folder. Then you start the node(swanky node start) and fork it with chopsticks(swanky node chopsticks start).
Now we have a testing node that has all the features that we need. Chopsticks allow to use of different RPC calls. Full list of them you can check here.
For example, you can do timestamp manipulation by `dev_timeTravel' RPC call:

import { WsProvider } from '@polkadot/rpc-provider'
const ws = new WsProvider(`ws://localhost:8000`)
await ws.send('dev_timeTravel', ['Jan 1, 2023'])

Or go back to any block by 'dev_setHead':

import { WsProvider } from '@polkadot/rpc-provider'
const ws = new WsProvider(`ws://localhost:8000`)
await ws.send('dev_setHead', [1000000])

@prxgr4mm3r prxgr4mm3r changed the title Add Chopsticks integration for Ganache-type testing Add Chopsticks integration for Ganache-like testing Feb 28, 2024
src/commands/node/chopsticks/init.ts Outdated Show resolved Hide resolved
src/lib/command-utils.ts Outdated Show resolved Hide resolved
src/lib/tasks.ts Show resolved Hide resolved
src/commands/node/chopsticks/start.ts Outdated Show resolved Hide resolved
src/commands/node/chopsticks/start.ts Show resolved Hide resolved
src/commands/node/chopsticks/start.ts Outdated Show resolved Hide resolved
src/commands/node/chopsticks/start.ts Outdated Show resolved Hide resolved
src/commands/node/chopsticks/init.ts Outdated Show resolved Hide resolved
src/commands/node/chopsticks/init.ts Outdated Show resolved Hide resolved
@ipapandinas ipapandinas force-pushed the feature/chopsticks-integration branch from 6ea252b to f3120da Compare March 5, 2024 13:10
Copy link
Contributor

@ipapandinas ipapandinas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, I appreciate the PR description, good practice for posterity

@ipapandinas ipapandinas force-pushed the feature/chopsticks-integration branch from f3120da to 2795f22 Compare March 12, 2024 15:13
@ipapandinas ipapandinas merged commit ec0cfb3 into ink-devhub-1 Mar 12, 2024
3 checks passed
@ipapandinas ipapandinas deleted the feature/chopsticks-integration branch March 12, 2024 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants