Luigit
repositories / will

will

owned by admin

docs/test.md

Raw
Rendered preview

Testing

Tier Tool Scope
unit node:test pure policy: wake ordering, budget, retention, triggers, prompts
property fast-check laws: ordering stability, retention partition, reserve arithmetic
integration node:test service HTTP + worker on tmpdirs, spool drain, telegram runtime vs fake server, ZAI tools vs fake REST, worktree with real git, deploy/CI pollers vs fake APIs, end-to-end walking skeleton with fake session
snapshot node:test snapshot asserts serialization contracts (see below)
coverage node built-in + ratchet committed floor, only rises
browser Playwright web e2e when web/ or service routes change
boot podman two-container readiness within 60 s
compatibility CI previous images -> candidate -> previous
mutation scheduled diagnostic survivors killed or baselined

Ordinary release tests make no real model or ZAI calls; the scheduled canary (scripts/zai-canary.ts) checks provider drift with bounded cost.

Snapshot contracts live in src/shared/contracts.snapshot.ts; they pin wire shapes without volatile values (deterministic ids and clocks are injected).

Run everything locally with npm test; coverage with npm run coverage.

# Testing

| Tier | Tool | Scope |
|---|---|---|
| unit | node:test | pure policy: wake ordering, budget, retention, triggers, prompts |
| property | fast-check | laws: ordering stability, retention partition, reserve arithmetic |
| integration | node:test | service HTTP + worker on tmpdirs, spool drain, telegram runtime vs fake server, ZAI tools vs fake REST, worktree with real git, deploy/CI pollers vs fake APIs, end-to-end walking skeleton with fake session |
| snapshot | node:test snapshot asserts | serialization contracts (see below) |
| coverage | node built-in + ratchet | committed floor, only rises |
| browser | Playwright | web e2e when web/ or service routes change |
| boot | podman | two-container readiness within 60 s |
| compatibility | CI | previous images -> candidate -> previous |
| mutation | scheduled diagnostic | survivors killed or baselined |

Ordinary release tests make no real model or ZAI calls; the scheduled canary
(`scripts/zai-canary.ts`) checks provider drift with bounded cost.

Snapshot contracts live in `src/shared/contracts.snapshot.ts`; they pin wire
shapes without volatile values (deterministic ids and clocks are injected).

Run everything locally with `npm test`; coverage with `npm run coverage`.