Pest v4.6.0 представляє розподіл шардів за часом — новий режим, який балансує CI-шарди на основі реальної тривалості виконання тестів, а не просто кількості файлів. Якщо ви вже використовуєте --shard у CI, достатньо записати дані про час виконання за допомогою --update-shards та додати отриманий JSON-файл до репозиторію.
--update-shardstests/.pest/shards.jsonПід час паралельного запуску тестів на кількох CI-шардах поділ за кількістю файлів часто створює нерівномірне навантаження: один шард завершує роботу за секунди, тоді як інший працює кілька хвилин. Pest v4.6.0 розв'язує цю проблему завдяки збалансованому за часом шардингу.
Крок 1: Запустіть повний набір тестів із прапорцем --update-shards, щоб зафіксувати час виконання кожного класу:
./vendor/bin/pest --update-shards
Для пришвидшення процесу цей параметр можна комбінувати з --parallel:
./vendor/bin/pest --parallel --update-shards
Це запише тривалість виконання кожного тестового класу у файл tests/.pest/shards.json:
{
"timings": {
"Tests\\Feature\\Payments\\StripeCheckoutTest": 1.608,
"Tests\\Feature\\Reports\\SalesReportTest": 2.105,
"Tests\\Unit\\Models\\UserTest": 0.050
},
"checksum": "...",
"updated_at": "2026-04-14T10:30:00+00:00"
}
Крок 2: Додайте (commit) tests/.pest/shards.json до вашого репозиторію.
Крок 3: Запускайте шардовані CI-завдання як зазвичай. Якщо файл із таймінгами наявний, Pest автоматично застосує збалансований розподіл:
./vendor/bin/pest --shard=1/5
Вивід підтвердить, що активовано режим time-balanced:
Shard: 1 of 5 — 12 files ran, out of 50 (time-balanced).
Якщо після створення файлу з таймінгами ви додасте або перейменуєте тестові файли, Pest виявить розбіжність і виведе попередження:
WARN The [tests/.pest/shards.json] file is out of date...
Тести все одно будуть запущені: нові файли розподіляться рівномірно, а вже відомі — згідно з часом їхнього виконання. Видалення файлів не викликає попереджень, а застарілі записи ігноруватимуться до наступного оновлення JSON-файлу.
Приклад налаштування матриці у GitHub Actions:
strategy:
matrix:
shard: [1, 2, 3, 4, 5]
steps:
- name: Run tests
run: ./vendor/bin/pest --shard=${{ matrix.shard }}/5
PR: #1671, розроблено @nunomaduro
Досліджуйте потужний пакет Intervention Image для PHP, який виводить редагування зображень на новий рівень з оновленою версією 3. Чи готові ви дізнатися, які нові можливості та функції чекають на вас у цьому інструменті
Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!
Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу