Playbooks
Crashtest never opens a socket - it hands handlers in-process Requests. So
the only thing a playbook needs to answer is: how does my app receive a
request without listen()?
Every playbook produces a config that supports:
$ npx crashtest run # exit 0 holds, 1 finding, 2 config problem
Pick yours:
- Plain Handlers - handler functions already shaped like Pages Functions (the fastest path: usually zero glue)
- Express - real
app.handle()dispatch - Hono - via
app.request() - Fastify - via
app.inject(), afterready() - Raw Node Servers - undecorated
http.createServerhandlers, per-route adapter - CI Gate - one composite step that turns the ledger into branch enforcement