Ко всем шагам

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».