08. Скрипты и автоматизация

Что вы узнаете

  • Где писать скрипты До запроса и После ответа
  • Как читать ответ, запускать проверки и сохранять значения в переменные
  • Как пользоваться меню сниппетов insomnia.* (переменные, запрос, ответ, тесты)

08-scripting-and-automation.png

Где писать скрипты

  • У каждого запроса есть вкладка Скрипты.
  • Внутри неё две секции:
    • До запроса — выполняется перед отправкой (подходит для подготовки данных и изменения запроса).
    • После ответа — выполняется после получения ответа (подходит для тестов и извлечения данных из ответа).

Редактор и меню сниппетов

08-scripting-and-automation-1.png

  • Скрипты пишутся на JavaScript.
  • Внизу редактора есть удобное меню со сниппетами insomnia.*. Оно помогает быстро вставлять готовые фрагменты кода без ручного набора.
  • Доступные разделы меню:
    • Фрагменты переменныхget/set/unset для environment, globals, variables, collectionVariables, а также переменные уровня папки. 08-scripting-and-automation-1-1.png
    • Манипуляции с запросом — метод, заголовки, query-параметры, тело, auth. 08-scripting-and-automation-1-2.png
    • Обработка ответа — статус-код/сообщение, время ответа, тело как JSON/текст, поиск заголовка, cookies. 08-scripting-and-automation-1-3.png
    • Утилиты тестирования — примеры insomnia.test(...) и insomnia.expect(...). 08-scripting-and-automation-1-3.png
    • РазноеsendRequest, console.log, задержка, skipRequest, setNextRequest, информация об активном запросе. 08-scripting-and-automation-1-3.png
  • Любой пункт меню вставляет сниппет в строку под курсором (ниже текущей строки) и возвращает фокус в редактор.

Пример: «После ответа» — проверить статус и сохранить токен

08-scripting-and-automation-2.png

const resp = insomnia.response.json();

const statusCode = insomnia.response.code;
insomnia.expect(statusCode).to.eql(200);

insomnia.environment.set('access_token', resp.token);
  • insomnia.response.json() — получить тело ответа как JSON (для application/json).
  • insomnia.response.code — статус-код.
  • insomnia.expect(...) — проверки (chai-подобный синтаксис).
  • insomnia.environment.set(...) — сохранить значение в активное окружение.

Пример: «До запроса» — изменить запрос перед отправкой

// Добавить заголовок
insomnia.request.addHeader({ key: 'X-Request-Timestamp', value: new Date().toISOString() });

// Добавить query-параметр
insomnia.request.url.addQueryParams('debug=true');

// При необходимости — поменять метод
insomnia.request.method = 'GET';

Переменные в скриптах

В скриптах доступны разные области переменных (и соответствующие методы get/set/unset):

// Окружение (активное окружение в текущем проекте/коллекции)
const url = insomnia.environment.get('url');

// Глобальные переменные
const token = insomnia.globals.get('token');

// Переменные коллекции
insomnia.collectionVariables.set('customer_id', '123');

// Универсальный доступ (объединённый слой переменных)
const any = insomnia.variables.get('variable_name');

Автоматизация в Runner

Для сценариев прогонов (Runner) доступны управляющие команды:

// Пропустить текущий запрос
insomnia.execution.skipRequest();

// Перейти к следующему запросу (по имени или ID)
insomnia.execution.setNextRequest('ADD_REQUEST_NAME_OR_ID_HERE');

Отладка

  • Для диагностики используйте console.log(...).
  • Ошибки и результаты выполнения удобно смотреть в панели выполнения/таймлайне запроса и в отчётах Runner (см. 12 Тестирование и Runner ).

Предыдущий: 07. Окружения и переменные
Следующий: 09. GraphQL