Написание E2E-тестов для проверки работы проекта из фронтенда и API. Тестирование интерфейса ReactJS-приложения в браузере в Docker-контейнере.
- 00:00:52 Типы тестов
- 00:08:34 Расположение E2E тестов
- 00:10:08 Behavior Driven Development
- 00:12:14 Gherkin Syntax
- 00:19:38 Выбор E2E фреймворка
- 00:22:50 Установка CucumberJS
- 00:25:53 Написание тестового сценария
- 00:30:55 Проверка стиля для тестового кода
- 00:32:25 Браузерный эмулятор Puppeteer
- 00:34:43 Установка браузера в Docker
- 00:39:31 Объект тестового мира World
- 00:43:16 Запуск тестового браузера
- 00:46:01 Открытие целевых страниц
- 00:47:39 Подключение пакета expect chai
- 00:48:39 Проверка элементов по селекторам
- 00:50:10 Использование data-атрибутов для селекторов
- 00:53:33 Повторное использование step-ов
- 00:54:48 Параметризованные шаги
- 00:56:52 Генерация скриншотов при ошибках
- 01:00:40 Сохранение отчётов тестирования
- 01:05:08 HTML-отчёты с cucumber-html-reporter
- 01:10:32 Параллельный запуск
- 01:12:08 Таймауты и повторы
- 01:13:54 Дымовые Smoke тесты
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо, отличное видео!!
Спасибо. Все супер. Единственный момент для винды s WSL не работает команда docker-compose, ей нужно docker-compose.exe. Если кто-то знает как решить проблему, кроме как банальной замены, пожалуйста поделитесь.
попробуйте сделать ссылку ln -s "полный путь к docker-compose.exe" "полный путь к папке со ссылками типа /usr/bin"/docker-compose
Можно попробовать совместное использование $PATH для WSL. Еще как вариант, если у тебя Win Pro то поставить Docker Desktop, там интеграция уже с WSL.
Спасибо.
Отличный урок! Спасибо!
Спасибо, Дмитрий, материал бесценен, а будет ли про хранение картинок аукциона где-нибудь в S3 ? Наверняка ведь есть какой-нибудь готовый докер образ под такую важную тему.
Ставите minio, добавляете пакеты thephpleague/flysystem + thephpleague/flysystem-aws-s3-v3 и вперёд.
Спасибо!
Да, хранилища будут. Для их эмуляции FTP или S3 хранилищ для локальной разработки как раз подключают образы вроде
stilliard/pure-ftpd
илиminio
.Спасибо, отлично.
Вопрос по minio может кто сталкивался, есть два котейнера в одной сети апп и минио. Не получается добавить файл из апп, если
AWS_ENDPOINT=http://minio:9000
хотя по идее должно срабатывать. Нужно заходить в контейнер minio и смотреть урл апи который динамический API:http://192.168.16.2:9000
, если подставить его вenv AWS_ENDPOINT
то все срабатывает. Может кто знает как решить?? В браузереhttp://localhost:8900
консоль открывает, проблема именно если с прилаги пробуешь загрузить файлНиже докер-композе
У нас minio подключается в 60-ом эпизоде для загрузки бэкапа БД. И всё там работает.
Да, спасибо за ответ, уже разобрался. На самом деле все работает отлично из коробки, не внимательно изучил документацию к пакету который адаптер предоставляет. Нужно было добавить в конфиг пару строчек
Спасибо, хороший урок! Есть вопрос, для e2e тестов используется ли практика приводить БД в первоначальный вид перед каждым сценарием? Чтобы один сценарий не мог повлиять на результаты другого. Безусловно, в этом случае у нас проявляются недостатки. Падает производительность, и мы не можем использовать параллелизм, по причине того, что каждый сценарий будет обнулять базу, которая в 1 экземпляре. И здесь нужно извращаться и каждый сценарий как-то обрабатывать отдельным изолированным экземпляром приложения. Или просто отказываемся от параллелизма, что совсем убьет скорость запуска таких тестов. Либо e2e нужно продумывать так, чтобы минимизировать сайд-эффекты?
Да, оптимальнее делать любые тесты не мешающими друг другу. Для E2E тестов это важнее, так как система может состоять из нескольких сервисов и сбрасывать БД каждого сервиса снаружи будет не очень удобно.
Тут как с ansible, очень поверхностно вышло. В целом понятно что и зачем делается, но не детально. По этим двум темам хотелось бы отдельные уроки.
Спасибо. Я думал в Ларавел e2e это что-то космическое, но тут еще более полезное с Огурцом.
C cucumber ^8.0.0-rc.1 формирование имени файла скриншота через sourceLocation.uri и sourceLocation.line не работает. Выкрутился так (хотя детализация месторасположения ошибки только до сценария получается):
hooks.js
О. спасибо, тезка! Тоже столкнулся. И да, хотелось бы более полного раскрытия темы. Понятно что доки курить, но все же...
Или войти через: