Cypress не перехватывает вызовы API GraphQL - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь перехватить графическую мутацию, чтобы получить доступ к ее ответу. Сайпресс не замечает запрос и cy.wait() время ожидания.

test

describe('/profile', () => {
  beforeEach(() => {
    cy.server()
    cy.route({
      method: 'POST',
      url: Cypress.config().baseUrl + '/graphql',
    }).as('graphql')
    cy.fastLogin()
    cy.visit('/profile')
  })

  it('is possible to change password', () => {
    cy.get('[data-cy=change-password-btn]').click()

    cy.get('[name=oldPassword]').type(Cypress.config().password)
    cy.get('[name=newPassword]').type('password1')
    cy.get('[name=confirmNewPassword]').type('password1')
    cy.get('[data-cy=change-pw-form-btn]').click()

    cy.wait('@graphql').then(xhr => {
      cy.log(JSON.stringify(xhr.response.body))
    })

    cy.get('[data-cy=notification-container]').should(
      'contain',
      'Your password has been changed'
    )
  })

Я обнаружил, что у многих людей была общая проблема с тем, что они звонили cy.server() или cy.route() после cy.visit(). Это не мой случай, но все равно cy.wait() терпит неудачу.

У меня есть NodeJS бэкэнд и ReactJS интерфейс, если это имеет какое-то значение.

Есть идеи?

1 Ответ

0 голосов
/ 24 марта 2020

cypress не видел мои graphql запросы, потому что все они прошли через fetch. Я использовал этот [gist] [1] для преобразования fetch в xhr. Теперь я могу видеть graphql POST звонки в cypress пользовательском интерфейсе, но cy.wait() все еще истекает

[1]: https://gist.github.com/yagudaev/2ad1ef4a21a2d1cfe0e7d96afc7170bc
...