Я тестирую свою страницу входа с кипарисом. Вызов моего API /api/auth/login
срабатывает автоматически, когда поле ввода пароля достигает 4 символов. Итак, в моем файле спецификации кипариса команды cy.get("password-input").type("1234")
достаточно, чтобы вызвать вызов API. Как я могу получить тело ответа на этот вызов API? Я хотел бы получить токен, который мой API отправляет обратно.
В классических вызовах API с помощью команды cy.request
я могу легко обработать тело ответа, но я не смог найти, как получить доступ к телу ответа, когда запрос API инициируется другим событием, как здесь, с событием type
.
В настоящее время у меня есть обходной путь, потому что мой веб-сайт хранит response.body.token в localStorage, поэтому я получаю доступ к токену с помощью window
и после wait
:
it("should get token", () => {
cy.visit("/login")
cy.get("[data-cy = "login-input"]).type("myLogin")
cy.get("[data-cy = "password-input"]).type("0001")
cy.wait(5000)
cy.window().then(window => {
cy.log(window.localStorage.getItem("myToken"))
})
})
Но это кажется отвратительным... Не могли бы вы дать мне правильный способ доступа к телу ответа вызова API, вызванного событием type
?
Вы можете использовать cy.intercept()
, псевдонимы и cy.wait()
:
it("should get token", () => {
cy
.intercept('/api/auth/login')
.as('token');
cy
.visit("/login");
cy
.get('[data-cy = "login-input"]')
.type("myLogin");
cy
.get('[data-cy = "password-input"]')
.type("0001");
cy
.wait('@token')
.then(intercept => {
// you can now access the request body, response body, status, ...
});
});
Полезное чтение:
Брилан! Спасибо ! На самом деле я тоже пробовал с перехватом, но понял из вашего поста, что не использовал его по назначению... Спасибо также за ссылки....