Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Как часто вы формируете Allure-отчёты во время проведения автотестов? Наверняка, чтобы отслеживать изменения от отчёта к отчёту, вы также используете Allure-server. А что делать, если нет возможности содержать отдельный сервер для отчетов или он не отвечает всем вашим запросам? Я SDET-специалист SimbirSoft Дмитрий, и в этой статье расскажу о плагине, который мы придумали в качестве альтернативы Allure-server. Он обладает необходимыми возможностями для обработки отчётов и позволит сэкономить бизнесу на стоимости использования сервера.
Возможности Allure
Allure Framework – популярный инструмент формирования отчетности по результатам работы автотестов, упрощающий их анализ. Это гибкий и легкий инструмент, который позволяет всем участникам производственного процесса не только получить сведения о ходе выполнения тестов, но и предоставляет максимум полезной информации из повседневного выполнения автоматизированных тестов.
Но web-отчет, который генерирует Allure, содержит подробную информацию только о последнем прогоне тестов.
В этом случае приходится сохранять все отчеты отдельно. С этим отлично справляется Allure-server — он даже связывает новый отчёт со старыми, добавляя ссылки на графики запусков и в историю тестов.
Мы уже писали статью про Allure-server — это отдельный сервер, который позволяет хранить и генерировать Allure-отчёты.
Бывают ситуации, когда держать отдельный сервер для отчётов нет возможности, но есть необходимость хранить полную историю отчётов и иметь возможность связывать их, как это делают Allure-server и jenkins plugin. Такая возможность есть, но она плохо задокументирована.
Анализ существующих решений
Анализируя файлы связанных отчётов Allure-server, мы заметили, что ссылка на предыдущий отчёт сохраняется в файлах .json (в отчётах присутствует множество графиков, в каждом из них есть этот параметр) в свойстве reportUrl, например:
Изучая исходные файлы плагина Allure jenkins, мы выяснили, что можно добавлять ссылку на предыдущий отчёт в executor.json к файлам прогона перед генерацией нового отчёта. Тогда в новом отчёте будет возможность перейти к предыдущему.
Решение
На одном из наших проектов была задача хранить подробную историю отчётов и раздавать её через nginx.
Для выполнения этой задачи мы изучили и перепробовали несколько уже существующих плагинов, но ни один нам не подошёл. В результаты мы приняли решение написать свой плагин для Maven, который связывает отчёты, генерируемые плагином Allure Maven.
Расширенную документацию и исходный код проекта можно найти в нашем GitHub.
Как настроить
Скачайте папку allure-utils-plugin из репозитория.
Добавьте его в зависимости вашего проекта:
<build>
<plugins>
<plugin>
<groupId>com.simbirsoft</groupId>
<artifactId>allure-utils-plugin</artifactId>
<version>1.0</version>
</plugin>
</plugins>
</build>
3. Измените путь отчета allure-maven-plugin:
<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>2.10.0</version>
<configuration>
<reportDirectory>${project.reporting.outputDirectory}/results/last</reportDirectory>
</configuration>
</plugin>
</plugins>
</reporting>
4. Установите его перед использованием:
mvn -f .\allure-utils-plugin clean install
5. Запустите свои тесты:
mvn test
6. Подготовьте историю:
mvn allure-utils:prepare-history
7. Создайте отчет:
mvn site
8. Удалите старые отчеты:
mvn allure-utils:remove-old
Как публиковать отчёты
По результатам тестирования создаётся папка allure-results, в которой хранятся .json файлы, необходимые для создания отчётов.
Запускаем таску (prepare-history) нашего плагина, которая:
a) перемещает папку с последним отчётом в новую папку со случайным названием(/results/last) -> (/results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d);
b) изменяет в/results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d/history)
файлы, указанные ниже, добавляя к ним информацию, что текущий отчёт теперь доступен по адресу(../aaa13438-8f79-4367-a8d1- e08b9cc7c11d) - history-trend.json - history.json - categories-trend.json - duration-trend.json - retry-trend.json;
с) копирует(/results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d/history)
в allure-results.Запускаем генерацию нового отчёта Allure Maven плагином в папку
/results/last
.Запускаем другую таску
(remove-old)
нашего плагина, которая удаляет старые отчёты, оставляя только последние 20 (это число можно настраивать).
Таким образом, последний отчёт всегда будет доступен в nginx по адресу: <адрес сервера>/last
. Этот плагин очень удобен даже при локальных запусках тестов:
Запускаем тесты.
Запускаем плагином подготовку истории.
Генерируем отчёт.
Раздаём содержимое папки results, где хранятся отчёты, при помощи любого веб-сервера, для этого удобно использовать Allure cli:
allure open .
или Python:
python -m http.server
Повторять эти шаги можно сколько угодно раз, главное не забывать очищать папку allure-results перед запуском прогона тестов.
Итоги
Мы создали удобный инструмент, который позволяет публиковать отчёты Allure, сохраняя историю предыдущих запусков и связывая отчёты между собой. Этот плагин удобно использовать как для локальных запусков тестов, так и для публикации отчётов в CI при помощи nginx.
Спасибо за внимание! Полезные материалы о frontend-разработке мы также публикуем в наших соцсетях – ВКонтакте и Telegram.