Two tiers, matching the two ways a terminal app can be wrong: the component renders the wrong thing, or the binary behaves wrongly when actually run.
Features
- Frame history by default —
output()reads every frame, so a command that renders then exits doesn't race its own unmount waitForthat explains itself — a timeout reports the frames that were drawn, not just that time ran out- Real-binary runs —
runClispawns the actual entry point, not a mocked module - Environment genuinely withheld — fresh temp
HOMEandcwd, so a stray.envcan't hand back the credentials you scrubbed - Peer-resolved — binds to your
react,inkandink-testing-library, never its own copies
Install
npm install --save-dev @kud/cli-testingink (>=7) and react (>=19) are peer dependencies.