У Pest v4.5.0 з’явилася можливість автоматичного перезапуску flaky-тестів.

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 22 квітня, 2026
Нова версія Pest v4.5.0 пропонує потужні інструменти для боротьби з нестабільними тестами та автоматичної перевірки архітектури ваших проєктів. Дізнайтеся, як модифікатор flaky та нові асерції допоможуть зробити процес тестування ще надійнішим.

У Pest v4.5.0 з’явилася вбудована підтримка повторного запуску нестабільних тестів за допомогою нового модифікатора flaky() та CLI-флага --flaky. Оновлення також включає нову архітектурну перевірку для виявлення розбіжностей у регістрі шляхів до файлів, фільтр покриття --only-covered та низку інших покращень.

# Що нового

# Модифікатор flaky() та опція --flaky

Тести, що час від часу падають через затримки, зовнішні залежності або інші недетерміновані умови, тепер можна позначити методом ->flaky(). Якщо такий тест провалюється, Pest автоматично перезапускає його вказану кількість разів, перш ніж зафіксувати помилку. За замовчуванням кількість спроб дорівнює 3.

it('sends an email notification', function () {
    // ...
})->flaky();
 
it('resolves within the timeout', function () {
    // ...
})->flaky(tries: 5);

Новий флаг --flaky дозволяє запускати лише ті тести, що позначені як нестабільні. Це спрощує їх ізольоване налагодження:

vendor/bin/pest --flaky

Хуки життєвого циклу, як-от beforeEach та afterEach, виконуються перед кожною спробою, що гарантує коректне скидання стану тесту.

# Архітектурна перевірка toBeCasedCorrectly

Метод ->toBeCasedCorrectly() додано до набору архітектурних перевірок Pest. Він порівнює namespace кожного класу з фактичним шляхом до файлу та сигналізує про розбіжності в регістрі символів. Оскільки macOS та Windows зазвичай нечутливі до регістру, такі помилки часто непомітні під час розробки, проте вони спричиняють збої після деплою на Linux-сервери.

arch()
    ->expect('App')
    ->toBeCasedCorrectly();

Наприклад, ця перевірка виявить помилку, якщо клас за шляхом app/Providers/AppServiceProvider.php має namespace App\providers\AppServiceProvider.

PR: #1455, автор @SimonBroekaert

# Опція --only-covered для звіту про покриття

Флаг --coverage отримав доповнення --only-covered, яке приховує зі звіту всі файли з 0% покриття. Це зручно під час роботи над великими проєктами, коли потрібно зосередитися саме на тих файлах, які охоплюють ваші нові тести.

vendor/bin/pest --coverage --only-covered

Ця опція не впливає на розрахунки порогів --min або --exact — вони й надалі враховуватимуть усі файли проєкту.

PR: #1626, автор @SimonBroekaert

# Виправлення помилок

# Посилання

Популярні

Logomark Logotype

Все, що потрібно знати про Laravel 13

Laravel 13 вийде в березні 2026 року й вимагатиме мінімум PHP 8.3. Хочете дізнатися, як PHP‑атрибути для моделей, нові налаштування черг і метод Cache::touch() вплинуть на вашу розробку?

Logomark Logotype

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання

Logomark Logotype

Налаштування Xdebug з Docker та PHP 8.4 всього за одну хвилину

Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці