Доступ к сетевым ответам в Cypress.io - PullRequest
0 голосов
/ 06 мая 2019

Я работаю над тестированием сервиса OpenID Connect, используя код и неявный поток. Мне бы очень хотелось получить доступ к сообщениям, которые я получаю от службы, особенно к сообщению 303 См. Другое, в котором есть токен идентификатора.

Если кто-то может посоветовать, как получить ответные сообщения, я был бы очень признателен. Так как сервисы предоставляют страницу входа в HTML, то происходит cy.get ( "# loginButton"). нажмите () поэтому я не отправляю cy.request (), и это потому, что я хочу проверить вход в систему с помощью внешнего интерфейса.

1 Ответ

0 голосов
/ 07 мая 2019

Вы должны использовать cy.route , как это работает:

  • до cy.visit вам нужно добавить cy.server(), это позволяет Cypress перехватывать каждый запрос
  • вы добавляете псевдоним к запросу на вход в систему
cy.route({
  method: "POST",
  url: '/auth/token' // this is just an example, replace it with a part of the real URL called to log in the user
}).as("route_login"); // that's the alias, we'll use in soon
  • сразу после команды cy.get("#loginButton").click(), вы можете wait для запроса на вход в систему
cy.wait("@route_login").then(xhr => {
  // you can read the full response from `xhr.response.body`
  cy.log(JSON.stringity(xhr.response.body));
});

ваш последний тест должен быть примерно таким:

it("Test description", () => {
  cy.server();
  cy.visit("YOUR_PAGE_URL");

  cy.route({
    method: "POST",
    url: '/auth/token'
  }).as("route_login");

  cy.get("#loginButton").click();

  cy.wait("@route_login").then(xhr => {
    // you can read the full response from `xhr.response.body`
    cy.log(JSON.stringity(xhr.response.body));
  });

});

Дайте мне знать, если вам нужна дополнительная помощь ?

...