Commit 2e67941
authored
chore(rules): enforce exhaustive CLI+MCP E2E tests and CI merge gate (#41)
## What
Strengthens the project testing rules in `CLAUDE.md`. **Rules/docs only
— no source or test changes.**
Derived from real session history (a `init` command shipped broken, then
E2E was added reactively). Codifies the practice as BLOCKING rules so it
can't recur silently.
### P1 — E2E (CLI + MCP) BLOCKING
Every CLI command and MCP tool must have an E2E test that exercises the
**real** surface (spawn built binary / real MCP stdio), full lifecycle,
**no internal mocks**. New command/flag/tool = new/updated E2E in the
same change. Browser E2E (Playwright/Maestro) marked N/A — this package
has no UI (overrides global ui-testing rule).
### P2 — Coverage maps to E2E
Every command, flag, MCP tool, and metric maps to ≥1 E2E scenario; a
surface with no E2E is an incomplete feature.
### P3 — CI is the merge gate
Full pipeline (lint → typecheck → build → test incl. E2E → coverage)
runs in `.github/workflows/ci.yml`; red blocks merge. Ban
`eslint-disable` / `@ts-ignore` / skipped tests.
> Coverage threshold gate was already present in `vitest.config.ts`
(80/70/80/80) — no change needed.
## Test
Docs only. Verified the existing suite stays green: **134 suites / 342
tests pass**, build clean, coverage thresholds satisfied.1 parent fe8fc48 commit 2e67941
1 file changed
Lines changed: 11 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
69 | 71 | | |
70 | 72 | | |
71 | 73 | | |
| |||
161 | 163 | | |
162 | 164 | | |
163 | 165 | | |
| 166 | + | |
164 | 167 | | |
165 | 168 | | |
166 | 169 | | |
| |||
178 | 181 | | |
179 | 182 | | |
180 | 183 | | |
181 | | - | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
182 | 192 | | |
183 | 193 | | |
184 | 194 | | |
| |||
0 commit comments