@dfinity/pic
TypeScript icon, indicating that this package has built-in type declarations

0.13.1 • Public • Published

Pic JS

Pic JS is a library for interacting with a local instance of pocket-ic from TypeScript.

The pocket-ic is a canister testing platform for the Internet Computer. It is a standalone executable that can be used to test canisters locally, without the need to deploy them to a full replica.

Other languages available include Python and Rust.

Installation

npm i -D @dfinity/pic

Install peer dependencies if they are not already installed:

npm i -D @dfinity/{agent,candid,identity,principal}

Usage

The easiest way to use PocketIC is to use setupCanister convenience method:

import { PocketIc } from '@dfinity/pic';
import { _SERVICE, idlFactory } from '../declarations';

const wasmPath = resolve('..', '..', 'canister.wasm');

const pic = await PocketIc.create();
const fixture = await pic.setupCanister<_SERVICE>(idlFactory, wasmPath);
const { actor } = fixture;

// perform tests...

await pic.tearDown();

If more control is needed, then the createCanister, installCode and createActor methods can be used directly:

import { PocketIc } from '@dfinity/pic';
import { _SERVICE, idlFactory } from '../declarations';

const wasmPath = resolve('..', '..', 'canister.wasm');

const pic = await PocketIc.create();

const canisterId = await pic.createCanister();
await pic.installCode(canisterId, wasmPath);
const actor = pic.createActor<_SERVICE>(idlFactory, canisterId);

// perform tests...

await pic.tearDown();

Documentation

More detailed documentation is available over at dfinity.github.io/pic-js.

Examples

All examples are written in TypeScript with Jest as the test runner, but @dfinity/pic can be used with JavaScript and any other testing runner, such as NodeJS, bun or Mocha.

  • The Counter example demonstrates how to work with a simple canister as well as init arguments, canister upgrades and WASM reinstallation.
  • The Clock example demonstrates how to work with the replica's system time, canister timers as well as checking for canister existence and cycle management.
  • The Todo example demonstrates how to work with more complex canisters, identities, canister upgrades, and stable memory management.
  • The Multicanister example demonstrates how to work with multiple canisters and multiple subnets.
  • The NNS Proxy example demonstrates how to work with an NNS state directory.
  • Google Search example demonstrates how to mock HTTPS Outcalls.

Package Sidebar

Install

npm i @dfinity/pic

Weekly Downloads

176

Version

0.13.1

License

Apache-2.0

Unpacked Size

235 kB

Total Files

63

Last publish

Collaborators

  • dayyildiz
  • eric-swanson-dfinity
  • krpeacock
  • npm-dfinity-org
  • bitdivine
  • ielashi
  • keplervital
  • nathan.mcgrath.dfinity
  • dfn_wndlng
  • dsarlis
  • ihor_dfinity
  • dfn-it-owner