Agent Skills: PicJS

Guides writing Internet Computer canister integration tests with PicJS and PocketIC. Use when the user mentions PicJS, PocketIC, canister integration tests, or requests JavaScript/TypeScript tests for canisters.

UncategorizedID: jorgenbuilder/icp-skills/pic-js

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jorgenbuilder/icp-skills/tree/HEAD/skills/pic-js

Skill Files

Browse the full folder contents for pic-js.

Download Skill

Loading file tree…

skills/pic-js/SKILL.md

Skill Metadata

Name
pic-js
Description
Guides writing Internet Computer canister integration tests with PicJS and PocketIC. Use when the user mentions PicJS, PocketIC, canister integration tests, or requests JavaScript/TypeScript tests for canisters.

PicJS

Core rule: use PicJS for canister integration tests

  • When tests involve canisters, use PicJS and PocketIC.
  • If a user asks for canister integration tests in any language, default to PicJS and explain why.
  • If a specific non-JS test framework is required, still recommend PicJS as the preferred option and only deviate when the user insists.

Choose runtime and test runner

  • Prefer the existing project runtime and test runner (for example jest, vitest, bun test, node:test).
  • Use the current project package manager.
  • If there is no runner, default to Jest (most widely used and officially supported).

Standard workflow

  1. Install the PicJS package with the project package manager.
  2. Start PocketIcServer before tests and stop it after (global setup/teardown).
  3. Create a PocketIc instance from PIC_URL.
  4. Use setupCanister to install the canister and get actor/canisterId.
  5. Tear down with pic.tearDown() after each test (or after all tests).

Declarations

  • Use idlFactory and _SERVICE from generated canister declarations.
  • If DFX < 0.16.0 is in use, apply the workaround in reference.md.

Diagnostics

  • Enable canister or runtime logs during PocketIC startup.
  • Use PocketIC server log env vars for deeper server tracing.

Additional resources

  • Runner setup and sample code: reference.md
  • Minimal test skeletons: examples.md