API-тестирование
tapstep не заменяет Postman — он делает API первоклассным участником внутри
флоу. Шаги request: служат для подготовки, очистки и проверок бэкенда и
свободно чередуются с UI-шагами в одном файле: что создали запросом — то
проверили на экране, с общими ${переменными}.
Чисто-API флоу
Заголовок раздела «Чисто-API флоу»Флоу с device: none не резолвит и не бутит устройство — запускается где
угодно и мгновенно:
device: noneenv: { API: "https://api.example.dev" }commands: - request: method: POST url: ${API}/staff auth: { bearer: "${STAFF_TOKEN}" } json: { email: "qa@test.dev", role: staff } extract: { staffId: $.id } # JSONPath → ${staffId} assert: status: 201 # код или класс: "2xx" json: { $.role: staff } - request: url: ${API}/staff/${staffId} retryUntil: { status: "2xx" } # поллинг раз в секунду до успеха timeout: 15000Под device: none разрешены только request, скрипты, value-ассерты
(assertTrue, assertFile) и control flow — UI-команда там будет ошибкой
валидации. В десктопе такие флоу запускаются без выбора устройства; в CLI
устройство не ищется и не бутится.
Чейнинг API и UI
Заголовок раздела «Чейнинг API и UI»В обычном (девайсном) флоу request: свободно смешивается с UI-шагами:
appId: https://staging.example.devcommands: - request: # arrange: создать через API method: POST url: ${API}/staff auth: { bearer: "${STAFF_TOKEN}" } json: { email: "qa@test.dev" } extract: { staffId: $.id } - openLink: "${APP}/staff/${staffId}" # act + assert: проверить в UI - assertVisible: "qa@test.dev"Что умеет request:
Заголовок раздела «Что умеет request:»| Поле | Смысл |
|---|---|
method, url |
GET по умолчанию; - request: <url> — шортхенд для GET. |
headers, query |
Строковые map-ы, с ${}-подстановкой. |
json / body |
Структурный JSON или сырая строка (одно из двух). |
auth |
{ bearer: ${TOKEN} } или { basic: { user, pass } }. |
extract |
var: $.json.path — значения ответа в ${var} для следующих шагов. |
assert |
status (код или "2xx"), равенства json или { contains: "…" }, headers, schema (файл JSON Schema рядом с флоу или инлайн). |
retryUntil |
Той же формы, что assert, но поллит до успеха или timeout — ожидание состояния бэкенда. |
timeout |
мс на запрос (по умолчанию 30000); с retryUntil — общий дедлайн поллинга. |
После каждого запроса ${response.status} и ${response.body} доступны
следующим шагам. При упавшей проверке в отчёт попадают метод, URL, статус и
срез тела ответа — одинаково в JUnit, Allure и HTML.
Сознательно за рамками: нагрузка, моки/стабы, GUI-коллекции. Для E2E-работы привычные ходы Postman — вызвать, извлечь, проверить, подождать — доступны прямо во флоу.