В начале октября я коротко рассказывал о Laratesto — своей связке Laravel и Testo. С тех пор пакет заметно подрос. Сегодня, 21 октября, вышла версия 0.9.0: с отдельным HTTP-клиентом, SQL и логами рядом с результатом теста и более понятными сообщениями об ошибках.

Зачем я делаю Laratesto
Мне хочется использовать Testo в Laravel-проектах и сохранить привычные возможности тестирования: запросы к приложению, проверку JSON, авторизацию, базу данных, сессии и команды Artisan. Laratesto берёт на себя запуск приложения и очистку его состояния после теста.
При этом не обязательно переносить всё сразу. Уже написанные тесты PHPUnit или Pest можно оставить рядом, а новые постепенно добавлять на Testo. Именно о таком подходе я писал в октябрьском анонсе проектов.
Что нового в 0.9.0
По сравнению с предыдущим релизом 0.8.3 здесь три основных изменения.
HTTP-клиент без обязательного наследования. Теперь внутри теста с плагином Laravel можно получить клиент через Laratesto::http(). Для этого не нужен свой базовый класс или дополнительный trait. Заголовки, cookies и сессия согласованы с существующими помощниками, а повторный запуск теста получает новый клиент. Старый клиент нельзя случайно использовать в другом выполнении.
SQL и логи приложения рядом с тестом. В настройках можно включить captureSql и captureLogs. Тогда видно, какие запросы выполнялись, сколько времени они заняли и что приложение записало в журнал. Это особенно полезно, когда проверка упала, а одного «получили не тот результат» мало. Значения параметров SQL и контекст логов подключаются отдельно; текст самого запроса и сообщения остаётся как есть.
Ошибка указывает на проверку в тесте. Исправлены стеки вызовов Laravel-проверок: вместо внутренних переходов по коду связки Testo показывает место вызова проверки. Меньше времени на поиск той самой строки, с которой всё началось.
Для меня это развитие одной идеи: тест должен помогать понять проблему, а не просто сообщать, что что-то сломалось. Подробности релиза 0.9.0.
Что успело измениться с начала октября
Между анонсом и нынешним выпуском были и другие обновления. Инструменты переноса тестов вынесены в отдельный пакет laratesto-rector. В Laratesto появились три инструкции для AI-помощников: настройка, написание тестов и перенос из PHPUnit. Доработана очистка состояния Laravel после ошибок запуска и отката транзакций. А в 0.8.3 исправлено обнаружение тестов, чтобы служебные методы связки не попадали в список проверок.
Все изменения по версиям собраны в истории изменений.
Что говорят проверки
Вот результат CI для релизного коммита на PHP 8.5. В таблице — размер наборов, число проверок и пропуски; пропущенные тесты не записываю в прошедшие.
| Набор | Тестов | Проверок | Пропущено |
|---|---|---|---|
| Unit | 125 | 1065 | 2 |
| Laravel | 120 | 429 | 1 |
| Перенос через Rector | 435 | 4259 | 6 |
| Всего | 680 | 5753 | 9 |
Итого 671 тест прошёл, 9 пропущены, ошибок нет. Обязательные наборы также прошли на PHP 8.3 и 8.4. Отдельная проверка работы покрытия кода на PHP 8.5 выполнила 2 теста и 16 проверок без пропусков — это проверка совместимости с покрытием, а не процент покрытия всего пакета.
Примеры документации проверены на PHP 8.3.35, 8.4.26 и 8.5.11: по 7 тестов и 10 проверок на каждой версии. Экспериментальная задача для PHP 8.6 пока останавливается на ограничении зависимости nette/schema, до запуска тестов.
Сравнительного замера скорости с прошлой версией пока нет. Поэтому обещаний «стало быстрее в несколько раз» здесь не будет: этот выпуск прежде всего про удобство и диагностику.
Где попробовать
Laratesto 0.9.0 уже опубликован. Пакет рассчитан на Laravel 13; требования к PHP и Testo, установка и примеры есть в README и документации на русском.
На странице Laratesto собираю историю проекта: с чего начинал и что получается по мере разработки.








