Nuno Maduro announced Pest v5 on stage at Laracon US 2026 in Boston and tagged v5.0.0 during the conference. The headline feature is the TIA (Test Impact Analysis) engine, which slashed Laravel Cloud's 19,000-test suite from 3 minutes down to 5 seconds. The release also bundles first-party plugins for AI agents, LLM evaluation, PHPStan, and Rector.
What's New at a Glance
- TIA Engine — re-runs only affected tests; replays cached results for the rest
- Agent plugin — gives AI coding agents a single command to verify changes inside a real test suite
- Evals plugin — scores LLM output with deterministic checks and AI-powered scorers
- PHPStan plugin — teaches PHPStan about
it(),test(),expect(), and$thisin test closures - Rector plugin — 60 rules to rewrite assertions as Pest matchers and handle major version upgrades
- New expectations for emails, ULIDs, IP addresses, MAC addresses, and more
- PHP 8.4 and PHPUnit 13 as the new baseline
Test Impact Analysis With the TIA Engine
The TIA engine records which tests touch which files on the first run, then executes only the tests affected by your latest changes and replays cached results for everything else.
./vendor/bin/pest --parallel --tia
A typical summary looks like this:
Tests: 774 passed (2658 assertions, 7 affected, 2 uncached, 765 replayed)
Duration: 3.92s
Cached results preserve coverage data, so --coverage reports and --min thresholds behave as if the full suite ran. The dependency graph understands migrations, Blade templates, Inertia/Vite module graphs, and Livewire components — no configuration needed. Pest also normalizes files before hashing them, so a Pint formatting pass or a comment edit produces an identical hash and runs nothing.
Note: The TIA engine requires PCOV or Xdebug to record its baseline. CI baseline sharing requires an authenticated GitHub CLI and only works on GitHub.
Configure TIA behaviour in tests/Pest.php:
pest()->tia()
->always()
->locally()
->baselined()
->filtered();
Verifying AI Agent Changes With the Agent Plugin
The Agent plugin gives coding agents a way to confirm their changes actually work inside your real test suite, complete with factories, RefreshDatabase, and Laravel fakes:
composer require pestphp/pest-plugin-agent --dev
./vendor/bin/pest --agent='$user = \App\Models\User::factory()->create(); $this->actingAs($user)->get("/dashboard")->assertOk();'
Each snippet runs as an isolated test named "verify". This is designed for quick feedback during development, not as a replacement for committed regression tests.
Testing LLM Output With Evals
The Evals plugin scores LLM output quality using the familiar expect() API:
composer require pestphp/pest-plugin-evals --dev
it('answers capital city questions correctly', function (): void {
expect(CapitalCityAgent::class)
->prompt('What is the capital of France?')
->toContain('Paris') // deterministic
->toBeRelevant() // LLM-as-judge
->toBeSimilar('Paris, France'); // semantic similarity
});
Evals are skipped on a normal run and only execute when you pass --evals. Scored expectations accept a threshold between 0.0 and 1.0 (default 0.7). Available scorers include toBeRelevant(), toBeSafe(), toBeFactual(), toBeSimilar(), toPassJudge(), toHaveToolCalls(), and toFollowTrajectory().
PHPStan and Rector Plugins
The PHPStan plugin reads your Pest.php configuration to resolve $this types inside test closures, narrows types through expectation chains, and catches impossible expectations like expect(10)->toStartWith('1').
The Rector plugin ships 60 rules across coding style and version upgrade sets. A quick example of what it rewrites:
// Before
expect(count($array))->toBe(5);
expect(array_key_exists('id', $array))->toBeTrue();
// After
expect($array)->toHaveCount(5)
->toHaveKey('id');
Preview changes safely with vendor/bin/rector process --dry-run.
Upgrading to Pest 5
Pest 5 requires PHP 8.4 and PHPUnit 13. The Pest upgrade guide documents no API-level breaking changes beyond the version bumps. For most projects it is a one-line change:
"pestphp/pest": "^5.0"
Update any Pest-maintained plugins to ^5.0 at the same time.
Key Takeaways
- The TIA engine can reduce large suite runtimes dramatically by replaying cached results
- The Agent plugin is purpose-built for AI coding agent workflows, not general regression testing
- Evals run only on demand (
--evals) so they never add cost to a standard CI run - PHPStan and Rector plugins are now first-party and installable via Composer
- Upgrading from Pest 4 is straightforward; PHPUnit 13 compatibility is the main consideration
Source: Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals — Laravel News