Стендап Сьогодні
📢
Канал в Telegram @stendap_sogodni
🦣
@stendap_sogodni@shevtsov.me в Федиверсі
13.08.2025
Єдиний різновид інтеграційних тестів, що працює
Чим більше років пишу тести, тим більше переконуюсь:
Єдиний різновид інтеграційних тестів (для вебу), що дійсно виконує свою задачу — це тест, що сумлінно відтворює дії користувача.
Це значить: взаємодіє тільки з тими елементами, які бачить користувач. Перевіряє тільки їхній текстовий зміст. В крайньому разі — також заглядає в стан бекенду, але тільки після перевірки відповідного стану на сторінці.
Якщо не виходить писати такий тест, варто змінювати інтерфейс, а не тести. Бо це пряма вказівка на те, що й користувачу буде незрозуміло. Особливо незрячому користувачу. Завжди можна додати до елементу текстовий атрибут ARIA, який зовсім не зіпсує ваш дизайн.
Окрема історія — це очікування операцій. Тести з командами на кшталт wait_for_network
приречені до проблем, бо завжди є ймовірність, що перевірка стану застане застосунок між запитами, а не в кінці. А то й взагалі стикаюся з тим, що перевірка встигає відпрацювати ще до початку операції.
Відповідь проста — очікувати помітного користувачу результату. Тобто появи чи зникнення тексту, або переходу на іншу сторінку. (Також привід не нехтувати маршрутами в SPA.)
Звісно, також потрібний тестовий інструмент, який підтримує такий підхід без зайвих дій. Наприклад, Playwright. В нього не тільки чудовий широкий API. Він ще завжди ставиться до сторінки так, як це б робив користувач: перед тим, як натиснути на кнопку, прокручує сторінку, перевіряє, що кнопка дійсно видима тощо.
Такі тести не тільки будуть стабільними, вони ще й покращуватимуть застосунок. А ото витрачати дні на пошук вірного селектору, щоб знайти на сторінці ідіосинкразії верстки — не хочу більше.