JavaScript Testing Framework for Solana
This is a beta version of the Solana Toolkit, and is still a WIP. Please post all feedback as a GitHub issue here.
Add Dependency
Navigate to your program directory and run:
npm install solana-bankrun
Bankrun Overview
Bankrun is a fast and lightweight framework for testing Solana programs in NodeJS.
It uses the
solana-program-test
crate
under the hood and allows you to do things that are not possible with
solana-test-validator
, such as jumping back and forth in time or dynamically
setting account data.
Bankrun works by spinning up a lightweight BanksServer
that's like an RPC node
but much faster, and creating a BanksClient
to talk to the server. This runs
the Solana
Banks.
Minimal Example
import { start } from "solana-bankrun";import { PublicKey, Transaction, SystemProgram } from "@solana/web3.js";test("one transfer", async () => {const context = await start([], []);const client = context.banksClient;const payer = context.payer;const receiver = PublicKey.unique();const blockhash = context.lastBlockhash;const transferLamports = 1_000_000n;const ixs = [SystemProgram.transfer({fromPubkey: payer.publicKey,toPubkey: receiver,lamports: transferLamports,}),];const tx = new Transaction();tx.recentBlockhash = blockhash;tx.add(...ixs);tx.sign(payer);await client.processTransaction(tx);const balanceAfter = await client.getBalance(receiver);expect(balanceAfter).toEqual(transferLamports);});