1.8 KiB
OpenPets testing
OpenPets currently uses lightweight Node contract checks instead of a full test framework.
Commands
pnpm test
pnpm check
pnpm testbuilds the workspace and runs deterministic regression tests.pnpm checkis the full pre-commit/phase gate: typecheck, build, then package tests/checks.
Package-level pnpm test commands generally run built dist artifacts and assume the package was built first. Use root pnpm test or package pnpm check when you need a fresh build included automatically.
Package-level check scripts should include package tests after typecheck/build so regression coverage cannot drift away from validation.
Package expectations
Packages with runtime contract coverage should expose test scripts:
apps/desktoppackages/clientpackages/mcppackages/claude
Packages without meaningful runtime checks yet may omit test until they gain behavior beyond type/build validation:
packages/clipackages/pet-format
Isolation rules
Tests must not require:
- a running Electron app
- a real Claude installation
- network access
- writes to real
~/.claude/settings.json - writes to real OpenPets user data
Use temp directories/files for settings and fixtures. Clean them up after the test. Do not depend on the process current working directory except for explicit repo-relative fixture paths.
What belongs in tests
Good fits for the current harness:
- IPC protocol contracts
- MCP tool contracts
- lease manager behavior
- Claude MCP command previews
- Claude hook event mapping and speech safety
- Claude settings merge/install/uninstall against temp files
- zip safety and catalog validation
Electron tray/window behavior remains manually verified until a later UI automation phase.