Нуну Мадуро став другим спікером на Laracon US 2025 у вівторок, де представив нові можливості для майбутньої версії Pest v4.0. Коли ми писали про виступ Нуну на Laracon US 2024, користувачі вже встановили Pest понад 18 мільйонів разів. А тепер, через рік, загальна кількість встановлень досягла близько 39 мільйонів!
Якщо вам здалося, що Pest v2 і v3 були вражаючими, то Pest v4 підніме стандарти ще вище! Ця версія акцентує увагу на об'єднанні найкращого з юніт-тестування та браузерного тестування.
В Pest 4 ви зможете легко писати сучасні браузерні тести, використовуючи Playwright. Тестування між бекендом і фронтендом вашого додатку ще ніколи не було таким зручним.
Давайте детальніше розглянемо основні моменти цих можливостей, які були представлені на Laracon US:
Браузерне тестування в 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 в 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. Яка з функцій вас найбільше захоплює? Поділіться своїми враженнями у вашій улюбленій соціальній мережі!