Где выгружается отчет Allure по прогону тестов
Что проверяют
Понимаете ли вы, что у Allure два разных каталога и откуда в команде берётся ссылка на отчёт. Следом спрашивают, как настроить отчёт в CI и почему пропадает история запусков.
Как отвечать
Разделите результаты и отчёт:
allure-results: сырые данные, которые пишет адаптер тестового фреймворка во время прогона. В Allure 2 это JSON-файлы*-result.json,*-container.jsonи вложения: скриншоты, логи, тела запросов. Каталог задаётся настройкой адаптера, например--alluredir=allure-resultsвallure-pytest, в Maven по умолчаниюtarget/allure-results, в Gradlebuild/allure-results;allure-report: HTML-отчёт, который собирает CLI командойallure generate allure-results -o allure-report --clean. Именно его публикуют;allure serve: генерирует отчёт во временный каталог и сразу поднимает локальный веб-сервер. Удобно на своей машине, для хранения не подходит;allure open allure-report: поднимает сервер для уже собранного отчёта.
В CI отчёт выгружают туда, где его увидит команда. В Jenkins плагин Allure собирает отчёт и вешает ссылку на страницу сборки вместе с графиком трендов. В GitLab CI каталог сохраняют как artifacts и при желании публикуют на GitLab Pages, в GitHub Actions чаще выкладывают на ветку gh-pages. Для больших команд есть Allure TestOps, куда результаты загружаются прямо из пайплайна.
Про историю скажите отдельно: тренды строятся из каталога history прошлого отчёта. Перед новой генерацией его копируют из allure-report/history в allure-results/history, иначе каждый прогон начинается с нуля.
Где спотыкаются
Путают каталоги и говорят, что отчёт лежит в allure-results. Там только сырые данные, открыть их в браузере как отчёт нельзя.
Открывают index.html двойным щелчком. Браузер блокирует загрузку данных по file://, отчёт висит на загрузке, нужен веб-сервер или allure open. В свежих версиях Allure 2 у allure generate есть флаг --single-file, который собирает отчёт в один файл.
Теряют историю на CI: раннер каждый раз чистый, каталог history никто не переносит, и график трендов всегда из одной точки.