@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.

/@dfinity/pic/

    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