Перейти к содержимому

API-тестирование

tapstep не заменяет Postman — он делает API первоклассным участником внутри флоу. Шаги request: служат для подготовки, очистки и проверок бэкенда и свободно чередуются с UI-шагами в одном файле: что создали запросом — то проверили на экране, с общими ${переменными}.

Флоу с device: none не резолвит и не бутит устройство — запускается где угодно и мгновенно:

device: none
env: { 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 устройство не ищется и не бутится.

В обычном (девайсном) флоу request: свободно смешивается с UI-шагами:

appId: https://staging.example.dev
commands:
- 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"
Поле Смысл
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 — вызвать, извлечь, проверить, подождать — доступны прямо во флоу.