Supongamos que tengo un botón que llama a una función que realiza una solicitud HTTP, que responde con el valor de un token. Después de usar Cypress para hacer clic en este botón, ¿cómo puedo interceptar la respuesta de la solicitud HTTP al hacer clic en el botón para extraer este token?
Revisé la documentación oficial de Cypress sobre el método de intercepción, así como este artículo: https://egghead.io/blog/intercepting-network-requests-in-cypress pero, por lo que entiendo, Cypress está interceptando una solicitud HTTP. llamado directamente desde el archivo de prueba, y no la función que se llama después de hacer clic en el botón del lado del cliente.
Sería muy apreciado si uno de ustedes, gente con conocimientos, puede aclarar cómo usar el método de intercepción.
Lo tiene al revés: Cypress intercepta las solicitudes de la aplicación, pero no puede interceptar las solicitudes de la prueba.
Cuando su prueba hace clic en el botón, activa un evento de clic en la aplicación, que luego envía la solicitud y esto puede ser interceptado.
Aquí hay un ejemplo simple
it('intercepts request from app', () => { cy.intercept('**/guides/guides/network-requests').as('link-intercepted') cy.visit('https://docs.cypress.io/api/commands/intercept') cy.contains('a', 'Network Requests').click() // fire event // which triggers request from app cy.wait('@link-intercepted') cy.contains('h1', 'Network Requests') // heading of the new page })Pero una solicitud de la prueba falla
it('cannot catch requests from test', () => { cy.intercept('**/guides/guides/network-requests').as('link-intercepted') cy.visit('https://docs.cypress.io/api/commands/intercept') // fire request from the test cy.request('https://docs.cypress.io/guides/guides/network-requests') cy.wait('@link-intercepted') // waits 5 seconds and fails })