Fake the agent
tests/Evals/SupportBotTest.php
TextResponse objects with real Usage, Meta, and tool calls — so even costBelow() and toolCalled() assertions are testable offline. SupportBot::assertPrompted(...) then verifies exactly what was sent.
Fake the judge
The judge is an agent too:Faking judge scores
Multi-turn rows just work
When the target agent is faked, multi-turn rows route straight to the fake — your canned responses andassertPrompted() checks behave identically for single- and multi-turn rows, and nothing leaks to the network.
Dry runs from the CLI
For class-based suites,--dry-run fakes everything automatically:
Terminal
Keep faked runs out of Cloud
A faked agent produces real-looking scores from canned strings. If you use Vizra Cloud, say so, and the run stays out of the history:Wiring test, not measurement
--dry-run is already excluded automatically — this is only needed for Pest evals
that fake the agent themselves, because nothing else distinguishes them from a real run.
Local recording is unaffected either way.