Есть микросервисное приложение с определенным зоопарком технологий (3 API-приложения, фронтенд для публичной части, фронтенд-админка).
Все API-приложения покрыты юнит и интеграционными тестами. Дали задачу по организации тестировании посредством UI-тестов в эмуляторе браузера на важные экраны приложений. Со стеками технологий тестирования остановился на комбинации WebdriverIO и Mocha. Покрыл тестами один экран.
Возник вопрос: как организовать комфортную работу с тестами для фронтенд разработчиков?
В режиме:
- Дали задачу написать тесты на такой-то экран. Написал тесты, запустил их локально, убедился что все зеленые, сделал pull-request.
- Дали задачу по добавлению функционала на экран. Написал функционал, запустил готовые тесты на это экран, убедился что все зеленые, сделал pull-request.
Вопросы по порядку:
- Окружение: при разработке фронта, фронт использует заготовленный API на удаленной машине. С ним удобно работать, так как там уже есть куча данных с которыми он может работать и манипулировать ими. При запуске тестов, хочется использовать отдельное окружение содержащее минимальный набор данных, которое бы после прохода тестов откатывалось в первоначальное состояние. Есть идея использовать для этого docker-контейнер, но хочется узнать как это организованно у других
- Запуск тестов: у разработчика должна быть возможность комфортного запуска тестов, буквально одной командой в консоли. Поэтому хочется узнать где нужно хранить такие тесты (в репозитории с фронтом или в отдельном) и как правильно/удобнее развертывать окружение перед запуском?
- Частота запуска и интеграция с CI: Как часто такого вида тесты (когда задействуется вся структура) должны запускаться? При каждом обновлении одного из репозиториев; при каждом обновлении репозитория с фронтом; перед релизом?