Нуну Мадуро став другим спікером на Laracon US 2025 у вівторок, де представив нові можливості для майбутньої версії Pest v4.0. Коли ми писали про виступ Нуну на Laracon US 2024, користувачі вже встановили Pest понад 18 мільйонів разів. А тепер, через рік, загальна кількість встановлень досягла близько 39 мільйонів!
Якщо вам здалося, що Pest v2 і v3 були вражаючими, то Pest v4 підніме стандарти ще вище! Ця версія акцентує увагу на об'єднанні найкращого з юніт-тестування та браузерного тестування.
В Pest 4 ви зможете легко писати сучасні браузерні тести, використовуючи Playwright. Тестування між бекендом і фронтендом вашого додатку ще ніколи не було таким зручним.
- Кінцеве тестування у браузері в Pest
- Візуальне тестування
- Тестування на пристроях
- Критерії покриття коду для браузерних та юніт-тестів
- Tinker сесії під час тестування
- Тестове шардування для паралельного виконання тестів у CI
- І багато іншого...
Давайте детальніше розглянемо основні моменти цих можливостей, які були представлені на Laracon US:
# Браузерне тестування в Pest
Браузерне тестування в Pest забезпечує можливість запускати тести у браузері за допомогою сучасних інструментів, таких як Playwright, без необхідності створення окремих тестових пакетів для юніт-тестів і кінцевого тестування. Поєднання браузерного та юніт-тестування створює єдність у вашій тестовій структурі та відкриває нові можливості:
test('login', function () {
$user = User::factory()->create();
visit('/')
->click('Log in')
->type('email', $user->email)
->type('password', 'secret')
->press('Log in')
->assertSee('Dashboard');
});
Pest автоматично чекає після взаємодії зі сторінкою, кліків по посиланням, заповнення та надсилання форм, потім перевіряє, що користувач потрапив на панель управління. Завдяки цим потужним API, Pest дозволяє вам налагоджувати браузерні тести за допомогою методів ->debug() та ->tinker():
test('login', function () {
$user = User::factory()->create();
visit('/')
->click('Log in')
->type('email', $user->email)
->type('password', 'secret')
->press('Log in')
->assertSee('Dashboard')
->tinker();
});
Метод tinker() зупиняє виконання тесту та надає вам стан сервера і бази даних у REPL:
# Візуальне тестування
Pest 4 включає методи візуального тестування, які можуть виявляти зміни в інтерфейсі вашої сторінки, порівнюючи знімки до і після. Це дає можливість перевіряти ваш UI перед і після змін, гарантуючи, що регресій не сталося:
# Smoke Testing
Smoke testing в Pest 4 є потужним інструментом для підтвердження успішності запитів у вашому додатку та відсутності помилок JavaScript. За допомогою smoke testing ви зможете швидко перевірити, що на сторінках вашого додатку немає помилок JavaScript та консольних логів:
test('login', function () {
$user = User::factory()->create();
visit(['/', '/about'])
->assertNoJavaScriptErrors()
->assertNoConsoleLogs();
// Або просто перевірте, що немає помилок/логів:
visit(['/', '/about'])
->assertNoSmoke();
});
# Тестування на пристроях та режимі світла/темряви
Pest 4 має нові функції для тестування на пристроях, які спрощують вибір типу пристрою для запуску тесту. Ось кілька прикладів з презентації Нуну на Laracon US:
visit('/') -> on()->mobile();
visit('/') -> on()->iPhone15();
visit('/') -> inDarkMode();
visit('/') -> inLightMode();
// ...
# Паралельне тестування
Pest 4 підтримує паралельне тестування у браузері завдяки можливостям паралельного виконання Playwright. Це робить тестування значно швидшим, ніж попередні браузерні тестові пакети, такі як Dusk. Крім того, в GitHub Actions ви можете використовувати паралельне тестування за допомогою опції --shard, щоб розподілити тестування на окремі завдання, які виконуються паралельно:
strategy:
matrix:
shard: [1, 2, 3, 4, 5]
name: Тести (Shard ${{ matrix.shard }}/5)
steps:
- name: Виконати тести
run: pest --parallel --shard ${{ matrix.shard }}/5
# Дата виходу
Pest 4 планується до випуску 21 серпня 2025 року на Laravel Live Denmark 2025. Яка з функцій вас найбільше захоплює? Поділіться своїми враженнями у вашій улюбленій соціальній мережі!