Документация Отчёт о запуске тест-плана

Отчёт о запуске тест-плана

Отчёт о запуске тест-плана — это просмотрщик результатов одного запуска,
показывающий сводку по каждому элементу: статус, длительность, сообщение
об ошибке, трейс, метки, вложения и (для тест-кейсов) пошаговый ручной
сценарий с историей попыток.

Открыть отчёт можно для любого завершённого или выполняющегося запуска:

  • UI: Тест-планы → <план> → Запуски → <запуск> → Открыть отчёт
  • Прямой URL: /ui/test-plans/<plan-id-or-numeric>/runs/<run-id>/report?namespace=<ns>

В тулбаре отчёта доступно пять вариантов экспорта. Все они формируются
без перехода со страницы и являются детерминированными — повторный экспорт
того же запуска возвращает побайтово идентичный файл, поэтому контрольная
сумма годится для аудита архива.

Варианты экспорта

Связный HTML (по умолчанию)

Кнопка: Просмотр / Скачать HTML.
Эндпоинт: GET /report.html.

Самодостаточный HTML-документ с встроенным CSS, но со ссылочными
вложениями
. Картинки подгружаются по URL
(/api/v1/.../tcm/attachments/<id>/raw), поэтому файл получается компактным
и мгновенно отображается в iframe просмотрщика. Также корректно открывается
в любом браузере с сессией к серверу Mockarty.

Когда использовать:

  • Делитесь отчётом внутри команды, у которой есть доступ к тому же серверу.
  • Встраиваете живой отчёт в дашборды или вики того же origin.
  • Нужен лёгкий файл (без увеличения размера от base64).

Ограничение: если открыть файл с диска на машине без доступа к серверу
Mockarty, все <img> окажутся битыми.

Standalone HTML (полностью автономный)

Кнопка: Скачать standalone HTML.
Эндпоинт: GET /report.html?standalone=true.

Тот же документ, но каждое вложение встроено как data: URI. Файл
полностью автономен — его можно открыть с флешки, прикрепить к письму или
загрузить в портал регулятора. Картинки рендерятся inline; не-изображения
(PDF, JSON, логи) превращаются в клик-для-скачивания ссылки с сохранением
исходного имени файла.

Защитные ограничения: каждое вложение ≤ 25 МиБ, общий размер встроенных
данных ≤ 100 МиБ. При превышении любого порога вложение заменяется
плейсхолдером #tcm-skipped-..., остальная часть отчёта рендерится
корректно.

Когда использовать:

  • Долгосрочный архив.
  • Аудит в air-gapped среде (регулятор, security-команда заказчика).
  • Передача отчёта за пределы сессии Mockarty.

Trade-off: файл больше (base64 раздувает на 1.34×), сборка занимает
несколько секунд для запусков с большим числом вложений.

Печать в PDF (через браузер)

Кнопка: Печать в PDF.

Кнопка вызывает window.print() на iframe-отчёте. Открывается стандартный
диалог печати браузера, к которому уже применён print-friendly стиль
(светлая палитра, развёрнутые <details>, рекомендации по разрывам
страниц). Выберите “Сохранить как PDF” в списке принтеров — получите
готовый к печати архив.

Когда использовать:

  • Регулятор или аудитор требует именно PDF.
  • Нужна нумерация страниц и печатная вёрстка.

Поддержка браузеров: Chrome, Firefox и Safari дают визуально согласованный
результат. Edge следует рендереру Chrome. В качестве принтера выберите
“Сохранить как PDF” (Chrome / Edge), “Microsoft Print to PDF” (Windows)
или “PDF” (Preview macOS) в зависимости от платформы.

Allure ZIP

Кнопка: Скачать Allure ZIP.
Эндпоинт: GET /report.zip.

Allure-совместимый results-каталог. Скормите его Allure CLI
(allure serve report-folder/), чтобы посмотреть прогон в UI Allure —
сьюты, шаги, вложения и сайдкары categories.json / executor.json /
environment.properties.

Экспорт пишет метки framework, suite, subSuite, testClass и tag.
Метки severity, epic, feature, story и package он не пишет,
поэтому разделы Behaviors, Packages и severity в отчёте Allure останутся
пустыми. Виджетам трендов нужен собственный каталог history/ Allure,
которого в одиночном экспорте нет, — накапливайте его, направляя Allure в
один и тот же выходной каталог между прогонами.

Когда использовать:

  • В CI-пайплайне уже агрегируется Allure по нескольким проектам.
  • Нужны графики истории по множеству запусков.

JUnit XML

Эндпоинт: GET /report.junit.xml.

Стандартный JUnit <testsuites>. Парсится любым CI-провайдером (GitLab CI,
Jenkins, GitHub Actions, TeamCity, Azure DevOps).

Когда использовать:

  • CI-дашборд ожидает JUnit (большинство ожидают).
  • Нужна сводка запуска прямо в check’е pull request’а.

Unified JSON

Эндпоинт: GET /report.unified.json.

Нативный JSON-конверт Mockarty. Строго типизирован; предпочтителен для
SDK / CLI потребителей, которым нужен программный доступ без разбора
Allure-схемы.

Когда использовать:

  • Кастомный downstream-тулинг (Slack-боты, внутренние дашборды и т. п.).
  • Скрипт “если запуск упал — будить on-call”.

Что показывает каждый тип элемента

У каждого элемента отчёта есть статус, длительность, метки и (при падении)
текст ошибки. Кроме этого, каждый тип раскрывает собственные детали:

Тип элемента Детали в отчёте
Тест-кейс Пошаговый ручной флоу с попытками, заметками и вложениями
Функциональный По одному шагу на каждый запрос коллекции со статусом запроса
Нагрузочный Ключевые метрики — всего запросов, задержки p50/p95/p99, запросов/сек и доля ошибок — как шаг и как параметры
Фаззинг Число прогонов, уникальные аномалии и топ упавших сидов
Хаос Имя эксперимента и результат
Контракт Имя контракта и результат валидации

Нагрузочные метрики также попадают в параметры, поэтому и таблица параметров
Allure, и свойства JUnit несут p95_ms, rps, error_rate и прочие — для
инструментов трендов.

Какой формат выбрать

Цель Формат
Живой просмотр внутри Mockarty Связный HTML
Отправить аудитору одним файлом Standalone HTML
Аудитору нужен бумажный PDF Печать в PDF
Агрегировать в историю Allure Allure ZIP
Показать в check’е PR / CI-дашборде JUnit XML
Запустить автоматизацию / Slack-бота Unified JSON

Детерминированность и контрольные суммы

Все форматы детерминированы. Два последовательных экспорта одного запуска
дают побайтово идентичный результат. Это значит, что SHA-256 экспортного
файла подходит как дешёвое доказательство целостности — сохраните хеш
рядом с файлом в архиве, а через год повторно экспортируйте отчёт и
сравните хеши: убедитесь, что данные не подменены.

Поделиться со стейкхолдером (read-only ссылка)

Когда нужно отправить результаты заказчику или стейкхолдеру без аккаунта
Mockarty
, создайте read-only ссылку. На тулбаре отчёта нажмите
Поделиться — ссылка скопируется в буфер. Любой, у кого есть ссылка,
открывает HTML-отчёт прогона; логин не требуется.

# Создать ссылку (нужна аутентифицированная сессия / токен):
curl -X POST "$MOCKARTY/api/v1/namespaces/default/test-plans/$PLAN/runs/$RUN/report/share" \
  -H "Authorization: Bearer $TOKEN"
# → {"token":"…","url":"/api/v1/public/tcm-report/…","expiresAt":"2026-07-11T…Z"}

Ссылка — это stateless подписанный токен: открытие сразу рендерит отчёт, без
обращения к базе. Важно:

  • Opt-in. Шаринг выключен, пока администратор не задаст переменную
    окружения MOCKARTY_REPORT_SHARE_SECRET (HMAC-ключ подписи). До этого кнопка
    Поделиться сообщает, что шаринг не настроен.
  • Срок. По умолчанию ссылки живут 30 дней; передайте ?ttlHours=N при
    создании, чтобы сократить. Истёкшая ссылка покажет понятное сообщение.
  • Отзыв. Ротация MOCKARTY_REPORT_SHARE_SECRET мгновенно инвалидирует все
    ранее созданные ссылки.
  • Кластер. Поскольку значение env является ключом подписи (чтобы ротация
    отзывала ссылки), задайте одинаковое значение на всех нодах — иначе ссылка,
    созданная на одной ноде, не откроется на другой.
  • Область. Ссылка даёт read-only доступ ровно к одному отчёту прогона — без
    аккаунта, без записи, без данных о других прогонах.