Усе, що нам відомо про Pest 4

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 01 серпня, 2025
Відкрийте нові можливості тестування з Pest v4! Ця версія поєднує найкращі практики юніт-тестування та браузерного тестування, пропонуючи вражаючі функції, які зроблять вашу роботу ще ефективнішою. Читайте далі, щоб дізнатися, як ці інновації змінять ваш підхід до тестування

Нуну Мадуро став другим спікером на Laracon US 2025 у вівторок, де представив нові можливості для майбутньої версії Pest v4.0. Коли ми писали про виступ Нуну на Laracon US 2024, користувачі вже встановили Pest понад 18 мільйонів разів. А тепер, через рік, загальна кількість встановлень досягла близько 39 мільйонів!

Якщо вам здалося, що Pest v2 і v3 були вражаючими, то Pest v4 підніме стандарти ще вище! Ця версія акцентує увагу на об'єднанні найкращого з юніт-тестування та браузерного тестування.

Нуну представляє браузерне тестування для Pest v4
Нуну представляє браузерне тестування для Pest v4

В Pest 4 ви зможете легко писати сучасні браузерні тести, використовуючи Playwright. Тестування між бекендом і фронтендом вашого додатку ще ніколи не було таким зручним.

Давайте детальніше розглянемо основні моменти цих можливостей, які були представлені на 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:

Tinker REPL під час браузерного тестування
Tinker REPL під час браузерного тестування

# Візуальне тестування

Pest 4 включає методи візуального тестування, які можуть виявляти зміни в інтерфейсі вашої сторінки, порівнюючи знімки до і після. Це дає можливість перевіряти ваш UI перед і після змін, гарантуючи, що регресій не сталося:

Візуальна діаграма показує, де UI змінився
Візуальна діаграма показує, де UI змінився
Слайдер для порівняння змін UI до і після побічно
Слайдер для порівняння змін UI до і після побічно
Візуальне порівняння після зміни CSS
Візуальне порівняння після зміни CSS

# 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. Яка з функцій вас найбільше захоплює? Поділіться своїми враженнями у вашій улюбленій соціальній мережі!