Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/littleboycoding/solana-test-validator-js
Spin-up solana-test-validator instance in JavaScript
https://github.com/littleboycoding/solana-test-validator-js
javascript mocha solana test typescript
Last synced: about 1 month ago
JSON representation
Spin-up solana-test-validator instance in JavaScript
- Host: GitHub
- URL: https://github.com/littleboycoding/solana-test-validator-js
- Owner: littleboycoding
- Created: 2022-06-04T00:20:55.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-06-17T03:50:17.000Z (over 2 years ago)
- Last Synced: 2024-11-14T14:47:32.074Z (about 1 month ago)
- Topics: javascript, mocha, solana, test, typescript
- Language: TypeScript
- Homepage: https://littleboycoding.github.io/solana-test-validator-js/
- Size: 138 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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](https://mochajs.org) ☕.
## Documentation
documentation for all API is generated via [TypeDoc](https://typedoc.org) at [littleboycoding.github.io/solana-test-validator-js](https://littleboycoding.github.io/solana-test-validator-js)
## Requirement
- [solana-tool-suite](https://docs.solana.com/cli/install-solana-cli-tools)
verify by running `solana-test-validator --version`
## Setup
Install dependencies
```sh
$ npm i -D solana-test-validator-js @solana/web3.js
```In your .gitignore
```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
```typescript
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 !
```typescript
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,
"",
]);
});after(function () {
cleanup();
});
});
```### Mocha global fixture
Mocha's global fixture make it easy to setup test that guaranteed to run only once
`fixture.ts`
```typescript
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`
```typescript
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](https://hardhat.org) 👷 and [Truffle](https://trufflesuite.com) 🍫 !