[Перевод] Тестируйте API, как професионал. Часть 2: Как автоматизировать API с помощью 'cypress-plugin-api'

cypress-plugin-api, написанный амбассадором Cypress Филипом Хриком (Filip Hric), представляет собой плагин для эффективного тестирования API. Представьте себе Postman, но в Cypress; этот плагин выводит на печать всю информацию о вызове API в пользовательском интерфейсе приложения Cypress, обеспечивая несколько преимуществ:

  • В cypress-plugin-api команда cy.api() работает также как cy.request(). Основное отличие заключается в том, что помимо вызова вашего API, cy.api() также печатает информацию о вызове API в вашем Cypress Test Runner.

  • Всю эту информацию можно просмотреть в виде time-travel (реверсивная отладка) snapshots.

  • Также формируется простая таблица для просмотра файлов cookie, сворачивания объектов данных JSON и массива, а также цветового кодирования методов в представлении пользовательского интерфейса и на таймлайне (временной шкале)

Самое важное: cy.api() использует cy.request() в фоновом режиме. Это означает, что вы получаете ту же функциональность плюс визуальный пользовательский интерфейс!

Давайте вместе установим плагин cypress-plugin-api 

Шаг 1

Устновите плагин, используя npm или yarn.

npm i cypress-plugin-api
# or
yarn add cypress-plugin-api

После установки плагина API вы можете увидеть его в файле package.json:

Шаг 2

Далее добавьте плагин  cypress/support/e2e.js в файл:

import 'cypress-plugin-api'
// or
require('cypress-plugin-api')

Ваши e2e.js файлы будут выглядеть так:

Шаг 3

Создайте плагин cypress_plugin_api.cy.js с помощью методов (GET, POST, PUT, DELETE).

Для данного обзора я беру различные примеры методов API из этого ресурса: https://reqres.in/.

GET Запрос

it("GET API testing Using Cypress API Plugin", () => {
 cy.api("GET", "https://reqres.in/api/users?page=2").should((response) => {
   expect(response.status).to.eq(200);
 });
});

POST Запрос

it("POST API testing Using Cypress API Plugin", () => {
 cy.api("POST", "https://reqres.in/api/users", {
   name: "morpheus",
   job: "leader",
 }).should((response) => {
   expect(response.status).to.eq(201);
 });
});

PUT Запрос

it("PUT API testing Using Cypress API Plugin", () => {
 cy.api("PUT", "https://reqres.in/api/users/2", {
   name: "morpheus",
   job: "zion resident",
 }).should((response) => {
   expect(response.status).to.eq(200);
 });
});

DELETE Запрос

it("DELETE API testing Using Cypress API Plugin", () => {
 cy.api("DELETE", "https://reqres.in/api/users/2").should((response) => {
   expect(response.status).to.eq(204);
 });
});

Отчет о выполнении тестового кейса API

На скриншоте ниже мы видим данные Body, Response, Headers и Cookies, отображенные в пользовательском интерфейсе приложения Cypress. Ранее для просмотра этой информации нам приходилось нажимать на кнопку 'inspect', но теперь у нас есть пользовательский интерфейс, который позволяет нам легко получить к ней доступ.

GET Запрос

99da734afd9b242beed66eb484ef5d2f.png

POST Запрос

1edbb97989cdb51f6f0ebc5c061d4969.png

PUT Запрос

5243a243a34880bc546e2fdb1e0f14cb.png

DELETE Запрос

8c1c993ddc7b15b59bc529204c35b024.png

В завершение приглашаем всех желающих на открытый урок «Автоматизация API + удобные отчеты», который пройдет 24 марта в преддверии старта курса «JavaScript QA Engineer».

© Habrahabr.ru