Тестирование с Playwright
Теория: Мок HTTP-запросов
Во время тестирования, фронтенд тестируемого приложения, почти наверняка, взаимодействует с бекендом для отправки форм и запроса данных. В некоторых случая, когда тестируется приложение целиком, это не составляет проблемы, но иногда, приложение тестируется в изоляции, либо часть запросов не может быть выполнена и их нужно каким-то образом подменить.
В Playwright можно легко создавать mock API, что позволяет тестировать ваше приложение в контролируемой среде без реального взаимодействия с внешними сервисами. Это особенно полезно, когда вы хотите проверить поведение вашего приложения при различных ответах от сервера, например, при успешном ответе, ошибке или таймауте.
Mock APIs
Mock API в Playwright работает через перехват запросов. Вы можете настроить свой тестовый сценарий так, чтобы он перехватывал запросы к определённому URL и отвечал на них данными, которые вы определяете вручную. Это делается с помощью метода page.route().
Предположим, у вас есть приложение, которое делает запрос к API для получения списка пользователей при загрузке страницы. Вот пример того, как вы можете замокировать этот запрос в Playwright:
Создание мока происходит до выполнения действия, которое выполняет запрос иначе мок не сработает. Сам запрос перехватывается и на сервер ничего не уходит, но приложение об этом ничего не знает, для него запрос проходит успешно и возвращает какие-то данные. Дальше все работает как обычно.
Мок (mock) в Playwright работает, в рамках одного теста, до тех пор, пока вы не снимете его вручную или не завершите тест. Иными словами, каждый раз, когда приложение отправляет запрос, соответствующий маршруту, который вы перехватили с помощью page.route, Playwright будет использовать ваш мок.
Если нужно снять мок в середине теста, это можно сделать с помощью метода page.unroute():
В Playwright вы можете имитировать любой HTTP-ответ, включая ошибки, такие как 403 Forbidden. Это полезно для тестирования, как ваше приложение будет вести себя при получении отказа в доступе от сервера.
Изменение ответа
Если вам нужно изменить ответ от реального сервера, а не просто замокировать его, в Playwright можно сначала позволить запросу пройти на сервер, а затем модифицировать полученный ответ перед тем, как он будет передан в приложение.
Таким образом, этот подход позволяет вам работать с реальными данными, которые возвращает сервер, и при этом менять их по необходимости для тестирования различных сценариев.


