Ко всем шагам

API-запрос

Поля шага
{"method":"POST","url":"https://api.site.com/login","headers":{"Content-Type":"application/json"},"body":{"login":"user","password":"pass"},"save":{"slot_1":"body.access_token"},"assert":[{"path":"status","op":"=","value":"200"}]} (text)
Выполняет HTTP-запрос прямо в сценарии - например, чтобы залогиниться по API, дёрнуть бэкенд или подготовить данные. Запрос идёт через браузер теста, поэтому cookies и сессия общие: логин по API виден странице, и наоборот. Токены/деньги AI не тратит.
Параметр - JSON с полями:
  • method - GET/POST/PUT/PATCH/DELETE;
  • url - адрес (только http/https, внутренние/приватные IP заблокированы);
  • headers - заголовки (объект);
  • body - тело запроса (объект → уйдёт как JSON; для форм добавьте заголовок Content-Type: application/x-www-form-urlencoded);
  • save - что достать из ответа в слот: {"slot_1":"body.access_token"}. Пути: status, text, body.поле, body.items[0].id, headers.Имя;
  • assert - проверки ответа: {"path":"status","op":"=","value":"200"}. Операторы: = != > < >= <= IN "NOT IN" LIKE. Если проверка не прошла - тест падает.
Как переиспользовать токен: сохраните его в слот (save), а в следующих шагах пишите rmb:slot_1 - воркер подставит значение. Например, в этом же шаге в headers: {"Authorization":"Bearer rmb:slot_1"}, или отдайте токен браузеру шагом «Установить заголовки» (Authorization: Bearer rmb:slot_1). Подробный разбор - в статье-кейсе про авторизацию и выгрузку списка по API.
Пример использования

Выполнить HTTP-запрос прямо в сценарии. Запрос идёт через браузер теста - cookies и сессия общие с обычными шагами. Параметр - JSON. AI-токены/деньги шаг не тратит.

Простой GET и проверка ответа:

{
  "method": "GET",
  "url": "https://api.site.com/health",
  "assert": [ { "path": "status", "op": "=", "value": "200" } ]
}

POST с телом (тело-объект уходит как JSON):

{
  "method": "POST",
  "url": "https://api.site.com/login",
  "headers": { "Content-Type": "application/json" },
  "body": { "login": "user@site.com", "password": "secret" },
  "save": { "slot_1": "body.access_token" },
  "assert": [ { "path": "status", "op": "=", "value": "200" } ]
}

Поля JSON:

  • method - GET / POST / PUT / PATCH / DELETE.
  • url - только http/https. Внутренние/приватные IP заблокированы.
  • headers - заголовки (объект).
  • body - тело. Объект → уйдёт как JSON. Для форм добавьте заголовок Content-Type: application/x-www-form-urlencoded.
  • save - что достать из ответа в слот. Путь: status, text, body.поле, body.items[0].id, headers.Имя.
  • assert - проверки. Операторы: = != > < >= <= IN "NOT IN" LIKE. Провал любой проверки → тест падает.

Переиспользование значения из ответа (токен, id): сохранили в слот через save → в любом следующем шаге пишете rmb:slot_1, воркер подставит значение. Например, отдать токен браузеру:

  1. API-запрос - POST /login, save: slot_1 = body.access_token
  2. Установить HTTP-заголовки - Authorization: Bearer rmb:slot_1
  3. Перейти на страницу - открыть закрытую под авторизацией страницу

Или переиспользовать токен в самом API - во втором запросе:

{
  "method": "GET",
  "url": "https://api.site.com/objects?limit=50",
  "headers": { "Authorization": "Bearer rmb:slot_1" },
  "save": { "slot_2": "body.items[0].id" },
  "assert": [ { "path": "status", "op": "=", "value": "200" } ]
}

Пошаговый разбор связки «авторизоваться → выгрузить список объектов по API» - в статье-кейсе «Тестируем API с помощью TestMW».