Документация Унифицированные запуски тестов

Унифицированные запуски тестов

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

Лента запусков тестов

Эндпоинты

GET /api/v1/api-tester/test-runs?mode=<mode>&referenceId=<uuid>
GET /api/v1/api-tester/test-runs/:id
GET /api/v1/api-tester/test-runs/:id/report?format=<fmt>

Поддерживаемые режимы

Режим Источник
functional Прогоны API-коллекций
load Нагрузочные тесты
fuzz Фаззинг-кампании (referenceId → id fuzz-конфига)
chaos Хаос-эксперименты (referenceId → id эксперимента)
contract Проверки контрактов (referenceId → id контракта)
test_plan Прогоны Test Plan (referenceId → id плана)
ui_test Одиночные прогоны UI-тестов (referenceId → id UI-теста). UI-тест, запущенный внутри Test Plan, учитывается прогоном плана и отдельно не показывается

Унифицированный эндпоинт отчёта

GET /api/v1/api-tester/test-runs/:id/report?format=<fmt>

Единый эндпоинт, агрегирующий артефакты запуска в шесть форматов:

format Content type Назначение
allure_zip application/zip Allure CLI / Allure TestOps
allure_json application/json Diff-тулинг, свои дашборды
junit application/xml Jenkins, Surefire, GitLab CI
markdown text/markdown Вставка в Slack / wiki
unified_json application/json Нативный формат Mockarty (по умолчанию)
html text/html Автономный HTML без внешних JS/CSS

Комментарии к отчёту о запуске

Откройте отчёт и выберите вкладку Комментарии, чтобы обсудить результаты.
Комментарий относится к текущему пространству, типу запуска и ID запуска:
обсуждения разных типов остаются раздельными, даже если ID совпадают.
Удалённые комментарии исчезают из обсуждения и очищаются по истечении
настроенного срока хранения. Перечисленные выше форматы выгрузки не включают
комментарии.

Находки фаззинга, результаты хаос-инъекций и проверки контрактов
разворачиваются в отдельные строки AllureResult. Functional / load /
merged запуски дают одну строку-саммари.

Каждая выгрузка логируется в audit log с action
test_run_report_export — SOC-дашборды видят события
выгрузки данных.

Примеры SDK

Go

import (
    "context"
    "os"

    mockarty "github.com/mockarty/mockarty-go"
)

client := mockarty.NewClient("http://localhost:5770", "mk_...")
data, err := client.TestRuns().GetTestRunReport(
    context.Background(),
    "97c1f7a6-1a2f-4d9e-8a1b-000000000001",
    mockarty.TestRunReportFormatJUnit,
)
if err != nil {
    panic(err)
}
_ = os.WriteFile("report.xml", data, 0o644)

Python

from mockarty import MockartyClient
from mockarty.api.testruns import TEST_RUN_REPORT_FORMAT_ALLURE_ZIP

client = MockartyClient("http://localhost:5770", api_key="mk_...")
zip_bytes = client.test_runs.get_report(
    "97c1f7a6-1a2f-4d9e-8a1b-000000000001",
    format=TEST_RUN_REPORT_FORMAT_ALLURE_ZIP,
)
with open("results.zip", "wb") as f:
    f.write(zip_bytes)

Java

import ru.mockarty.MockartyClient;
import ru.mockarty.api.TestRunApi;

MockartyClient client = new MockartyClient("http://localhost:5770", "mk_...");
byte[] md = client.testRuns().getTestRunReport(
    "97c1f7a6-1a2f-4d9e-8a1b-000000000001",
    TestRunApi.TEST_RUN_REPORT_FORMAT_MARKDOWN
);
java.nio.file.Files.write(java.nio.file.Paths.get("report.md"), md);

CLI

# Все запуски
mockarty-cli test-runs list

# Фильтр по режиму
mockarty-cli test-runs list --mode fuzz

# Один запуск (JSON)
mockarty-cli test-runs get <uuid>

# Отчёт
mockarty-cli test-runs report <uuid> --format junit --output report.xml
mockarty-cli test-runs report <uuid> --format allure_zip --output results.zip
mockarty-cli test-runs report <uuid> --format markdown

MCP-инструмент

MCP-сервер предоставляет list_test_runs, get_test_run и
get_test_run_report — агенты получают доступ к фиду запусков и к
агрегированному отчёту в формате JSON без своего HTTP-клиента.
Поле format у get_test_run_report зарезервировано под будущее и сейчас
игнорируется — инструмент всегда возвращает JSON-отчёт.

Выгрузка в шести форматах доступна только через REST/CLI/SDK: вызывайте
GET /api/v1/api-tester/test-runs/:id/report?format=<fmt> напрямую, либо
методы SDK / команды mockarty-cli test-runs report, если нужен Allure,
JUnit, Markdown или HTML.

Безопасность и доступ

  • RBAC: вызывающий должен быть владельцем запуска, находиться в его
    namespace или иметь повышенную системную роль (admin/support).
  • Скоп по namespace: ответ фильтруется по namespace вызывающего
    (элевированные роли — исключение).
  • Audit: каждая выгрузка пишет запись с action
    test_run_report_export и {format, mode} в changes.

Детерминированный вывод

Все шесть форматов дают побайтово стабильный результат — одинаковые
входы → одинаковые байты:

  • отсортированные labels, parameters, attachments в AllureResult;
  • метки времени с миллисекундной точностью;
  • фиксированный порядок и mtime элементов zip.

Это позволяет CI хранить контрольные суммы отчётов для retry-кэша.