web-dev-qa-db-fra.com

Cyprès attendre l'API après le clic bouton

J'ai fabriqué une application React, qui fonctionne parfaitement et j'écris maintenant quelques tests de bout en bout à l'aide de cyprès.

L'application React fonctionne tous sur la même URL, il n'est pas obtenu d'itinéraires, et les appels API de l'intérieur de l'application sont traités par des clics de boutons.

La base de l'application est l'utilisateur final sélectionne certaines options, puis appuie sur le filtre pour afficher des graphiques dépendants des options sélectionnées.

cy.get('button').contains('Filter').click()

Lorsque le bouton est enfoncé dans Cyprès, il exécute les 3 appels d'API qui reviennent comme prévu, mais regardant par-dessus les documents de cyprès, il n'y a pas de solution facile à moins que j'utilise inline cy.wait(15000) ce qui n'est pas idéal, comme parfois ils Retournez beaucoup plus rapidement et parfois, ils retournent plus lentement, en fonction des options sélectionnées.

éditer 1 J'ai essayé d'utiliser le serveur et la route:

cy.server({ method: 'GET' });
cy.route('/endpoint1*').as('one')
cy.route('/endpoint2*').as('two')
cy.route('/endpoint3*').as('three')
cy.get('button').contains('Filter').click()
cy.wait(['@one', '@two', '@three'], { responseTimeout: 15000 }) 

Ce qui me donne l'erreur:

CypressError: Timed out retrying: cy.wait() timed out waiting 5000ms for the 1st request to the route: 'one'. No request ever occurred.

après une enquête supplémentaire

Changer de responseTimeout à juste timeout corrigé l'erreur.

cy.server({ method: 'GET' });
cy.route('/endpoint1*').as('one')
cy.route('/endpoint2*').as('two')
cy.route('/endpoint3*').as('three')
cy.get('button').contains('Filter').click()
cy.wait(['@one', '@two', '@three'], { timeout: 15000 }).then(xhr => {
  // Do what you want with the xhr object
}) 
7
Geoff

Essaye ça:

    cy.contains('button', 'Save').click();
    cy.get('[data-ng-show="user.manage"]', { timeout: 10000 }).should('be.visible').then(() => {
      `cy.get('[data-ng-show="user.manage"]').click();
   })
0
MarcinW