pic-js
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
- Install the PicJS package with the project package manager.
- Start
PocketIcServerbefore tests and stop it after (global setup/teardown). - Create a
PocketIcinstance fromPIC_URL. - Use
setupCanisterto install the canister and getactor/canisterId. - Tear down with
pic.tearDown()after each test (or after all tests).
Declarations
- Use
idlFactoryand_SERVICEfrom 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
More from jorgenbuilder/icp-skills
icp-cli
Guides use of the Internet Computer (ICP) CLI (icp) v0.1.0 for local networks, builds, deploys, canister operations, identities, cycles/tokens, recipe system, environments, and advanced features. Use when the user asks about icp-cli, icp commands, canister deployment, local ICP network workflows, recipes, multi-environment deployments, or command help. Also use whenever dfx is mentioned so guidance always maps to icp.
21forum-research
Research and read content on forum.dfinity.org (Discourse). Use when the user asks to browse, search, summarize, or analyze Dfinity forum topics or users. Read-only access with authenticated browsing and JSON endpoints.
13icp-cli-usage
Guides use of the ICP CLI (icp) for local networks, builds, deploys, canister operations, identities, and cycles/tokens. Use when the user asks about icp-cli, icp commands, canister deployment, local ICP network workflows, or command help.
1