Chạy kiểm thử
Unit tests
Unit tests nằm trong__tests__/ và sử dụng Vitest với jsdom.
Viết unit test cho policy
End-to-end tests
E2E tests gọi nhị phânfailproofai thực làm subprocess, pipe payload JSON tới stdin, và assert stdout output cũng như exit code. Điều này kiểm thử đường dẫn tích hợp hoàn chỉnh mà Claude Code sử dụng.
Setup
E2E tests chạy nhị phân trực tiếp từ nguồn repo. Trước lần chạy đầu tiên, build bundle CJS mà các file custom hook sử dụng khi import từ'failproofai':
dist/ bất cứ khi nào bạn thay đổi public hook API (src/hooks/custom-hooks-registry.ts, src/hooks/policy-helpers.ts, hoặc src/hooks/policy-types.ts).
Cấu trúc E2E test
Sử dụng E2E helpers
FixtureEnv - isolated per-test environment:
createFixtureEnv() đăng ký cleanup afterEach tự động.
runHook - gọi nhị phân:
Payloads - ready-made payload factories:
Viết E2E test
Hình dạng E2E response
Vitest config
E2E tests sử dụngvitest.config.e2e.mts với:
environment: "node"- không cần browser globalspool: "forks"- true process isolation (tests spawn subprocesses)testTimeout: 20_000- 20s per test (binary startup + hook eval)
forks rất quan trọng: thread-based workers chia sẻ globalThis, điều này có thể gây ảnh hưởng tới các tests spawning subprocess. Process-based forks tránh điều này.
CI
Full CI run (bun run lint && bunx tsc --noEmit && bun run test:run && bun run build) được yêu cầu pass trước khi merge. E2E suite chạy như một separate CI job song song.
Xem Contributing để biết complete pre-merge checklist.
