-
I downloaded pocket-ic-arm64-darwin.gz
-
Rename it to
pocket-ic.gzfrompocket-ic-arm64-darwin.gz -
gzip -d pocket-ic.gz
-
chmod +x pocket-ic
-
export POCKET_IC_BIN=“$(pwd)/pocket-ic”
-
xattr -dr com.apple.quarantine pocket-ic
-
./pocket-ic --help
-
% which pocket-ic
pocket-ic not found?
why that is happening ?
in my npm prjoectconsole.log(Using PocketIC binary: ${process.env.POCKET_IC_BIN});is undefined
npm run test
Error: PocketIC creation timeout
❯ Timeout._onTimeout setup/global-setup.ts:76:32
74| PocketIc.create(url),
75| new Promise((_, reject) =>
76| setTimeout(() => reject(new Error("PocketIC creation timeout")), 10000)
| ^
77| )
78| ]) as PocketIc;
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯
Test Files 1 failed (1)
Tests 1 skipped (1)
Start at 09:57:13
Duration 10.64s
export function randomString() {
return Math.random().toString(36).substring(2, 8);
}
declare global {
var __PIC__: PocketIcServer;
var pic: PocketIc;
var user: Identity;
var actor: _SERVICE;
var is_global_set: boolean;
var loginAs: (user: Identity) => Promise<_SERVICE>;
var register: () => Promise<void>;
var newUser: (login?: boolean, name?: string) => Promise<Identity>;
namespace NodeJS {
interface ProcessEnv {
PIC_URL: string;
}
}
}
vi.stubGlobal("matchMedia", () => ({
addEventListener: () => {},
}));
const WASM_PATH = resolve(
__dirname,
"../../target",
"wasm32-unknown-unknown",
"release",
"backend.wasm",
);
const setupTestEnvironment = async () => {
try {
console.log("Starting test environment setup...");
// Check for POCKET_IC_BIN environment variable
// if (!process.env.POCKET_IC_BIN) {
// throw new Error("POCKET_IC_BIN environment variable not found. Please set it to the path of your PocketIC binary.");
// }
console.log(`................Using PocketIC binary: ${import.meta.env.VITE_POCKET_IC_BIN}`);
console.log(`................Using PocketIC binary: ${process.env.POCKET_IC_BIN}`);
const alice = createIdentity("1");
console.log("Starting PocketIC server...");
const picIcServer = await PocketIcServer.start({
showCanisterLogs: true,
});
const url = picIcServer.getUrl();
console.log(`PocketIC server URL: ${url}`);
console.log("Creating PocketIC instance...");
const pic = await Promise.race([
PocketIc.create(url),
new Promise((_, reject) =>
setTimeout(() => reject(new Error("PocketIC creation timeout")), 10000)
)
]) as PocketIc;
console.log("PocketIC instance created successfully");
const setup: SetupCanisterOptions = {
idlFactory,
wasm,
};
console.log("Setting up canister...");
const fixture = await pic.setupCanister<_SERVICE>(setup);
console.log("Canister setup complete");
process.env.PIC_URL = url;
global.__PIC__ = picIcServer;
global.pic = pic;
global.user = alice;
global.actor = fixture.actor;
global.is_global_set = true;
fixture.actor.setIdentity(alice);
global.loginAs = async (user: Identity) => {
fixture.actor.setIdentity(user);
return fixture.actor;
};
global.register = async () => {
await global.actor.register();
};
global.newUser = async (login: boolean = false, name = randomString()) => {
const newUser: Identity = createIdentity(randomString());
global.actor.setIdentity(newUser);
if (!login) {
global.actor.setIdentity(alice);
}
return newUser;
};
console.log("Test environment setup complete");
} catch (error) {
console.error("Setup failed:", error);
if (global.__PIC__) {
await global.__PIC__.stop();
}
throw error;
}
};
beforeAll(setupTestEnvironment);
afterAll(async () => {
// await global.pic.tearDown();
// delete global.pic;
// delete global.actor;
// delete global.loginAs;
// delete global.user;
});

