Спершу виміряти, потім лагодити найповільніше.
1. Знайти повільні тести:
php artisan test --profile
Зазвичай кілька тестів забирають більшу частину часу - справжні HTTP-запити, sleep(), сідер з тисячами рядків.
2. Паралельний запуск:
php artisan test --parallel
Laravel створює окрему тестову базу на кожен процес. Тести мають бути незалежними: спільні файли, кеш чи зовнішні ресурси під паралеллю дадуть «моргаючі» падіння.
3. Дешевші налаштування:
WithCachedConfig(Laravel 13) - конфігурація збирається один раз, а не на кожен тест;LazilyRefreshDatabase- тести без бази не мігрують її;- драйвери
arrayдля кешу й сесії,syncдля черги, низькийBCRYPT_ROUNDSдля хешування.
4. Менше роботи в самих тестах:
- створювати рівно ті дані, які перевіряються, а не викликати важкий сідер;
make()замістьcreate(), де база не потрібна;- підміняти мережу (
Http::fake()) і час (travel()), а не чекати.
5. Ширше: на CI розбивати набір між машинами (--shard у Pest), а локально запускати лише тести, яких торкнулися зміни (--tia у Pest 5).
Швидкий набір - не розкіш: тести, які йдуть 25 хвилин, розробники перестають запускати локально.