Темой данной проектной работы является автоматизация тестирования OpenCart.
Для успешной сдачи проекта необходимо:
- Реализовать минимум 10 автотестов.
- Развернуть Jenkins и настроить автоматический запуск.
- Настроить отчётность по результатам прогона.
При этом оцениваться проект будет по следующим критериям:
- Использование паттерна PageObject.
- Использование отчётности и возможностей Allure (title, steps, attach).
- Минимум 10 автотестов.
- Реализовать прикрепление скриншота при падении.
- Запуск тестов выполняется из Jenkins, отчётность собирается там же.
Для начала необходимо развернуть локально приложение OpenCart и базы данных к нему. Вся необходимая процедура описана в файле docker-compose.yml.
После разворачивания приложения OpenCart были реализованы автотесты с использованием паттерна PageObject. Этот паттерн позволяет разделить тестовую логику и сами тесты непосредственно. Благодаря ему получается писать легко поддерживаемый код в стиле ООП. Тесты можно посмотреть вот здесь, а логику к ним вот тут.
Одним из критериев оценки проекта является реализация прикрепление скриншота к allure-отчету при падении. Данная фича присутствует в проекте как идущий "из коробки" хук pytest_runtest_makereport. Каждый тест передает свой контекст управления в этот хук с помощью механизма "yield справа" и если он имеет статус failed, то происходит прикрепление скриншота страницы к allure-отчету.
Все реализованные автотесты были завернуты в докер для обеспечения всегда детерминированной среды выполнения. Тут можно посмотреть Dockerfile для автотетсов.
Локально был развернут selenoid - своего рода обертка над докером для удобной работы с выполнением, отслеживанием и отладкой автотестов.
Самая тяжелая часть проекта. Куча ошибок и минимальные шансы нагуглить их исправление. Главная проблема - установка докер внутрь дженкинса. Никак не удавалось установить сертификаты и gpg keys. Проблему удалось решить, добавив параметр загрузки DEBIAN_FRONTEND=noninteractive. Тут можно посмотреть Dockerfile для Jenkins'a.
Следующим шагом нужно было настроить сборку, которая будет автоматически запускать тесты.
Была реализована сборка, которая автоматически удаляет устаревшие сборки, имеет параметры для запуска, берет код из текущего репозитория и генерирует allure-отчет.