Документация Runtime-вид прогона

Runtime-вид прогона

Runtime Flow View (runtime-вид прогона) — это живая картинка выполнения
тест-кейса. Он открывается, когда вы запускаете прогон со страницы кейса,
открываете запись из истории прогонов или проваливаетесь в элемент
test_case на прогоне Test Plan. Это один и тот же вид,
независимо от того, прогон закончился секунду назад или две недели назад —
разница только в том, обновляется ли он перед вами в реальном времени.

Об URL в примерах: все примеры используют localhost:5770 как адрес
Mockarty по умолчанию. Если экземпляр работает на удалённом сервере,
замените localhost:5770 на его реальный адрес.

Связанные страницы: Шаги тест-кейсов ·
Управление тест-кейсами ·
Модал пошагового прогона ·
Тест-планы

Что вы видите

Вид представляет собой вертикальное дерево карточек — по одной на шаг — с
шапкой кейса наверху и панелью окружения справа.

  Кейс: Login regression               RUNNING  · started 14:22:08

  ├── 1  REQUEST   Login                       PASS    300мс   ▸ развернуть
  ├── 2  REQUEST   Fetch profile               RUN     …       ▸ развернуть
  │       waiting on: Login
  └── 3  MANUAL    Verify welcome email        PENDING

Кликните по карточке — она раскроется и покажет всё, что сделал шаг:
резолвленный запрос, ответ, извлечённые значения и (для ручных шагов) —
вердикт и комментарий.

[Runtime-вид прогона — полный обзор — screenshot pending]

Как читать дерево потока

Чипы статусов

Цвет и текст на каждой карточке шага — это live-статус:

Чип Что означает
PENDING (серый) Шаг ещё не стартовал.
WAITING (жёлтый) Upstream-шаг, указанный в dependsOn, ещё не завершился. В теле карточки видно, кого ждёт.
RUNNING (синий) Запрос в полёте либо открыт модал пошагового прогона для ручного шага.
PASS (зелёный) Все ожидания выполнены, извлечения применены.
FAIL (красный) Ожидание упало, извлечение не сработало или запрос ошибся. В теле — детали.
SKIPPED (серый) Упала зависимость, раннер бросил ветку. В теле указан upstream-шаг, из-за которого.
AWAITING MANUAL (фиолетовый) Автоматический шаг встал на паузу для вердикта (например, в debug-прогоне) или ручной шаг ждёт ввода.

Микро-чипы внутри карточки

Маленькие чипы в шапке карточки показывают, что произошло при разрешении
привязок до отправки запроса:

  • Значок ключа и имя — окружение, привязанное к шагу. Разверните карточку,
    чтобы увидеть его имя и остальные детали привязки. Для старых событий
    без сохранённого имени отображается общая подпись «Окружение».
  • Число с буквой o рядом со значком настроек (например, 2o) —
    число активных переопределений шага.
  • Число с буквой s рядом со значком замка (например, 1s) —
    число разрешённых ссылок на секреты.
    Значения секретов в этом разделе не показываются.

Тело карточки

  • Request (запрос) — полностью резолвленные URL, метод, заголовки,
    тело. Все {{plan.X}}, {{env.X}}, переопределения и секреты подставлены,
    и вы видите ровно то, что ушло в провод. Секреты отображаются как ***
    с тултипом «from secret store: <алиас>».
  • Response (ответ) — статус, заголовки, тело, длительность. Если тело
    больше лимита отображения, показывается ссылка «view raw», скачивающая
    полную нагрузку.
  • Extracted (извлечённые значения) — все значения, которые правила
    Extract шага записали в контекст прогона. У каждой строки — тип правила,
    поле from и результирующее значение plan.<key>. Эти значения
    используют downstream-шаги.
  • Expectations (ожидания) — разбор pass/fail для каждого ассерта,
    определённого в привязанном запросе. Красная строка точно говорит, какое
    ожидание сломалось.
  • Attempts (попытки) — для шагов с ретраем (например, в retry-политике)
    — по одной сворачиваемой строке на попытку, у каждой свой запрос/ответ/вердикт.

Что на самом деле значит жёлтый чип «waiting»

Шаг в состоянии WAITING удерживается своим dependsOn. В теле карточки
ровно одна строка: waiting on: <имя upstream-шага>. Как только upstream
переключается в PASS, жёлтый чип становится синим, и шаг стартует. Если
upstream переключается в FAIL, ожидающий шаг становится серым SKIPPED
с причиной dependency failed: <upstream>.

Ждущий шаг не зависший и не сломан — это раннер честно показывает порядок
параллельного исполнения.

Снимок окружения

В правой панели runtime-вида живёт снимок окружения на весь прогон. Это
резолвленное окружение, зафиксированное в момент старта прогона и замороженное
на всё его время.

В нём перечислены:

  • имя привязанного окружения (или общая подпись для старых прогонов);
  • все переменные, которые окружение определяло на момент старта прогона,
    с их значениями;
  • все алиасы секретов, которые использовал прогон. Значения секретов
    в снимке не хранятся.

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

Снимок — источник истины для «какое окружение реально использовал прогон».
Через две недели, когда вы будете гадать, почему старый прогон ушёл в
api.staging-eu.example.com вместо текущего api.staging.example.com, в
панели снимка увидите ровно это.

Live-обновления — что означает каждое событие

Runtime-вид подписывается на live-поток событий с сервера. События приходят
естественно, обновлять страницу не нужно.

Что видите на экране Что только что произошло
Шапка кейса переключилась с серой PENDING на синюю RUNNING. Раннер принял кейс и стартовал первую волну шагов.
Карточка шага сменила жёлтый WAITING на синий RUNNING. Upstream-зависимость только что прошла; стартовал резолв этого шага.
В развёрнутой карточке сверху появились три чипа (env / overrides / secrets). Привязки шага — окружение, переопределения, секреты — резолвлены. Сейчас будет собран сетевой запрос.
Карточка перескочила в PASS или FAIL с длительностью. Запрос завершён, извлечения (если есть) применены.
Под Extracted появились зелёные строки plan.X = … . Шаг собрал значения для downstream-шагов.
Появился фиолетовый чип AWAITING MANUAL с панелью «Continue / Stop». Прогон на паузе — либо это debug-прогон, либо ручной шаг ждёт вердикта.
Шапка кейса стала зелёной PASSED или красной FAILED. Все шаги завершились. Прогон финален.

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

Управление пошаговой отладкой

Когда прогон стартовал в debug-режиме (см.
Шаги тест-кейсов §8),
runtime-вид показывает закреплённую панель внизу после каждого шага:

  • Continue — отпускает паузу и запускает следующий шаг (или следующий
    слой параллельных шагов).
  • Continue & edit — открывает редактор, в котором перед возобновлением
    можно подправить значения plan-контекста, переопределения следующего шага
    или его тело запроса. Изменение пишется в историю прогона, чтобы след того,
    что вы делали, остался.
  • Stop — отменяет прогон. Завершённые шаги сохраняют результат, прогон
    заканчивается со статусом cancelled.

Те же кнопки доступны и в обычном прогоне, если в меню нажать Pause —
прогон встанет на ближайшей границе шага, и панель появится.

Шеринг и экспорт завершённого прогона

У каждого прогона есть постоянный URL вида:

https://mockarty.example.com/ui/test-cases/runs/<run-id>

Отправьте ссылку любому, у кого есть права на чтение в пространстве имён, и он
увидит тот же вид, полностью восстановленный из данных сервера. Никакого
«снимка на момент шеринга» нет — ссылка всегда показывает финальное
состояние прогона (или live-состояние, если поделились до завершения).

В шапке есть kebab-меню с тремя действиями экспорта:

  • Copy link — копирует постоянный URL.
  • Export run (JSON) — скачивает JSON-дамп с каждым шагом: запросом,
    ответом, извлечёнными значениями, снимком окружения и таймингами.
    Используйте для офлайн-отчётов или для прокачки в downstream-инструменты.
  • Open Allure report — видно только если прогон кейса был запущен в
    составе Test Plan. Открывает общий Allure-отчёт плана
    с глубокой ссылкой на шаги этого кейса.

Права и изоляция пространств имён

  • Чтение runtime-вида (снимок + live-обновления) требует test_case:read в
    пространстве имён, которому принадлежит кейс.
  • Управление кнопками Continue / Stop требует test_case:write.
  • Кросс-пространство имён доступа нет — пользователь с правами в acme не увидит
    прогон из globex, даже имея постоянный URL.
  • Секреты, показываемые как ***, никогда не пишутся в историю прогона,
    JSON-экспорт или аудит-лог. В аудит-логе записаны только имена алиасов и
    источники хранилищ.

Дальше: Шаги тест-кейсов — это how-to по
сборке кейсов, которые вы будете смотреть здесь.
Модал пошагового прогона подробно описывает
ручной вердикт-flow.