Артефакты и отчеты

Уровни доказательств

QA Hub собирает доказательства на трех уровнях:

  1. Case result — итог и фактическое описание.
  2. Job events/result — структурированный след автоматической проверки.
  3. Artifact — файл с исходными данными.

Для расследования ошибки обычно нужны все три: краткий вывод, машинные события и первичный лог.

Как именовать артефакты

Имя должно объяснять содержимое без открытия:

chrome-console-client-228800010.log
webrtc-internals-audio-publish.json
stage1-server-2026-07-23T101500Z.log
SMK-04-mic-reenable.mp4
http-diagnostics.json

Не используйте log.txt, screen.png или file.json, если в прогоне будет несколько таких файлов.

Что загружать при media-баге

  • client diagnostics JSON с client_id, device_id, track state и RTC stats;
  • browser console от входа в конференцию до воспроизведения;
  • server log за тот же временной диапазон;
  • краткое видео UI;
  • сеть, браузер, ОС и версия build в фактическом результате.

Финальный отчет

Отчет считается финальным только при наличии finalized_at. До финализации автоматический вердикт является черновиком.

Markdown

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

GET /api/v1/runs/<run_id>/report?format=markdown

JUnit XML

Подходит для импорта в CI:

GET /api/v1/runs/<run_id>/report?format=junit

failed становится <failure>, незавершенные и пропущенные кейсы — <skipped>.

JSON

Полный формат для аналитики и внешних инструментов:

GET /api/v1/runs/<run_id>/report?format=json

Он содержит run, cases, step results, jobs и метаданные artifacts.

Получение отчета из CI

QA_TOKEN="$(
  curl -fsS https://qa.videograce.ru/api/v1/auth/token \
    -H 'Content-Type: application/json' \
    -d '{"username":"ci-reader","password":"..."}' |
  python3 -c 'import json,sys; print(json.load(sys.stdin)["token"])'
)"

curl -fsS \
  "https://qa.videograce.ru/api/v1/runs/$RUN_ID/report?format=junit" \
  -H "Authorization: Bearer $QA_TOKEN" \
  -o qa-report.xml

Для CI создавайте отдельного пользователя с минимальной ролью viewer.

Retention

Автоматического удаления artifacts в текущей версии нет. Перед введением retention необходимо определить:

  • срок хранения финальных проваленных прогонов;
  • срок хранения успешных smoke;
  • требования к персональным данным;
  • исключения для инцидентов и приемочных испытаний;
  • политику удаления файлов и строк metadata как одной операции.

До появления штатной политики не удаляйте файлы напрямую из artifact storage: в отчетах останутся битые ссылки.