На першому дні Laracon US 2026 у Бостоні Нуно Мадуро представив Pest 5 - нову мажорну версію тестового фреймворку. Реліз побудований на PHP 8.4 і PHPUnit 13, а головна його ідея звучить так: більшість тестів, які ви запускаєте, не мають стосунку до того, що ви щойно змінили.
Tia Engine: переганяємо лише те, що зачепили
Tia Engine (test impact analysis) - центральна можливість релізу. Після першого повного прогону движок запам'ятовує, які тести яких файлів торкаються. На кожному наступному запуску він дивиться, що ви змінили, переганяє лише пов'язані тести, а для решти віддає закешовані результати.
За даними команди Pest, набір, який раніше виконувався десять хвилин, відпрацьовує приблизно за чотири секунди - без втрати точності покриття коду.
./vendor/bin/pest --parallel --tia
Для роботи потрібен драйвер покриття - PCOV або Xdebug.
Плагін Agent: перевірка змін AI-агентом
Плагін Agent розрахований на сценарій, який став буденним: код пише агент, а перевіряти доводиться людині. Він дає AI-агентові одну команду, щоб переконатися, що зміна справді працює - причому всередині вашого реального набору тестів, а не в ізольованій пісочниці.
Якщо встановлено плагін браузерного тестування, агент може керувати й справжнім браузером.
composer require pestphp/pest-plugin-agent --dev
Evals: тестуємо якість відповідей LLM
Плагін Evals розв'язує зворотну задачу - оцінити не код, а вивід моделі. Він поєднує детерміновані перевірки з оцінювачами на базі LLM, і все це через той самий expect(), яким ви користуєтеся у звичайних тестах.
composer require pestphp/pest-plugin-evals --dev
Evals за замовчуванням пропускаються - щоб їх виконати, потрібен прапорець --evals. Це розумний компроміс: звернення до моделі коштують грошей і виконуються повільно, тож у звичайному прогоні їм не місце.
Плагіни для PHPStan і Rector
Тепер офіційні. PHPStan-плагін навчає аналізатор розуміти функціональний API Pest - it(), test(), expect() і поведінку $this всередині тестів. Раніше це доводилося обходити власними конфігурами або мовчазним ігноруванням помилок.
composer require pestphp/pest-plugin-phpstan --dev
composer require phpstan/phpstan --dev
Rector-плагін приносить набір правил для автоматичного осучаснення тестового коду.
composer require pestphp/pest-plugin-rector --dev
composer require rector/rector --dev
Шардинг за часом виконання
Якщо ви розкидаєте тести по кількох CI-машинах, Pest 5 ділить набір не за кількістю тестів, а за реальним часом їх виконання. Дані про тривалість збираються окремою командою:
./vendor/bin/pest --update-shards
Різниця відчутна там, де кілька повільних тестів раніше випадково збиралися на одному шарді й тримали весь пайплайн.
Нові матчери
Додали вісім перевірок для поширених форматів:
toBeEmail()
toBeUlid()
toBeIpAddress()
toBeMacAddress()
toBeHostname()
toBeDomain()
toBeBase64()
toBeHexadecimal()
Як оновитися
У composer.json:
"pestphp/pest": "^5.0"
Усі плагіни, які підтримує команда Pest, теж варто підняти до ^5.0.
Головна вимога релізу - PHP 8.4 або новіший. Для проєктів на 8.2 чи 8.3 оновлення почнеться з підняття версії PHP, і це варто закласти в планування.
Підсумок
Pest 5 рухається у двох напрямах одночасно. Перший - швидкість: Tia Engine прибирає з прогону все, чого ви не торкалися, і це найпомітніша зміна в щоденній роботі. Другий - робота з AI: плагін для агентів і evals визнають, що тести тепер пишуть і перевіряють не лише люди.
Офіційний анонс - на pestphp.com.