1.0.2 • Published 3 years ago

solana-test-validator-js v1.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

solana-test-validator-js

Spin-up solana-test-validator instance in JavaScript, intended to be use with test framework.

It create connection instance and funded account ready to be use in test !

highly recommended to use in combination with Mocha ☕.

Documentation

documentation for all API is generated via TypeDoc at littleboycoding.github.io/solana-test-validator-js

Requirement

verify by running solana-test-validator --version

Setup

Install dependencies

$ npm i -D solana-test-validator-js @solana/web3.js

In your .gitignore

test-ledger/

Examples

Mocha & TypeScript

Create and connect with startAndConnect

this function spawn solana-test-validator process then create connection instance

additionally, it also create funded accounts with given number

import { Connection, Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js";
import {
  startAndConnect,
  getAccounts,
  Cleanup,
} from "solana-test-validator-js";

describe("Test", function () {
  let connection: Connection;
  let cleanup: Cleanup;

  const accounts = getAccounts(1);

  this.timeout(60000);

  before(async function () {
    [connection, cleanup] = startAndConnect([], {
      number: 1,
      lamports: LAMPORTS_PER_SOL * 10000,
    });
  });

  after(function () {
    cleanup();
  });
});

Deploy mock program

startAndConnect accept all solana-test-validator arguments, this example use --bpf-program to deploy mock program !

import { Connection, Keypair } from "@solana/web3.js";
import {
  startAndConnect,
  Cleanup,
  getAccounts,
} from "solana-test-validator-js";

describe("Test", function () {
  let connection: Connection;
  let cleanup: Cleanup;

  const accounts = getAccounts(1);

  this.timeout(60000);

  before(async function () {
    [connection, cleanup] = startAndConnect([
      "--bpf-program",
      PROGRAM_ADDRESS,
      "<path-to-program.so>",
    ]);
  });

  after(function () {
    cleanup();
  });
});

Mocha global fixture

Mocha's global fixture make it easy to setup test that guaranteed to run only once

fixture.ts

import { startAndConnect } from "solana-test-validator-js";

export async function MochaGlobalSetup() {
  const [, cleanup] = startAndConnect();
  this.cleanup();
}

export function MochaGlobalTeardown() {
  if (this.cleanup) this.cleanup();
}

test.ts

import {
  startAndConnect,
  getAccounts,
  connection,
} from "solana-test-validator-js";

describe("Test", function () {
  const accounts = getAccounts(1);

  this.timeout(60000);

  it("should work", async function () {
    const account = await connection.getAccountInfo(accounts[0].publicKey);
  });
});

Note

This project is highly inspired by awesome projects Hardhat 👷 and Truffle 🍫 !

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.2.1

3 years ago

0.1.19

3 years ago

0.1.18

3 years ago

0.1.17

3 years ago

0.1.16

3 years ago

0.1.15

3 years ago

0.1.14

3 years ago

0.1.13

3 years ago

0.1.12

3 years ago

0.1.11

3 years ago

0.1.10

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago