Тестирование фронтенда
Теория: E2E Тестирование
E2E Тестирование
jest-puppeteer - библиотека для тестирования с открытым исходным кодом
Пример конфига для jest:
Пример конфига для jest-puppeteer:
Пример теста:
Метод evaluate() позволяет выполнить переданную фукнкцию, как если бы она была выполнена на странице. Первым параметром принимает функцию, которую нужно выполнить, а остальные параметры передаются в качестве аргументов в выполняемую функцию:
Пример теста для формы регистрации:
Пример создания скриншотов и изменение размера страницы:
Для проверки разных размеров страницы, удобно использовать test.each:
Пример эмуляции другого устройства:
Пример прерывания запроса:
Puppeteer
Тесты и браузер имеют разную среду. Чтобы запустить код в контексте браузера, нужно использовать evaluate():
Пример извлечения элементов:
Тоже самое, но с передачей селектора в переменной:
Еще один пример:
Playwright также имеет метод evaluate():
Как не надо делать:
Правильный способ:
Работа с асинхронностью
Есть несколько событий, которые мы ожидаем:
- загрузка страницы
- изменения на странице (изменения в DOM-дереве)
- запросы
- кастомные ожидания
Ожидание загрузки страницы
Selenium
Cypress
Playwright and Puppeteer
Ожидания изменений на странице
Selenium
Cypress
Playwright и Puppeteer
Ожидание запросов
Selenium
Cypress
Playwright and Puppeteer
Ожидание кастомных изменений
Мы хотим дождаться, пока глобальной переменной user не будет присвоено значение Ivan
Selenium
Cypress
Playwright и Puppeteer
Итог
Ниже плохой пример, в нем используется магическое число и код останавливается на какое-то время. Не факт, что обработка события успеет завершиться к этому времени
Ниже правильный пример. Указываем какие элементы ожидать:
Завершено
0 / 8