Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

132
Vistas
Cypress intercepta solo mensaje con cuerpo específico

Soy un poco nuevo en la intercept de Cypress, pero necesito capturar la respuesta a un mensaje GET, pero espero el mensaje que tiene un cuerpo de respuesta con un valor específico en su cuerpo.

Por ejemplo, puedo estar recibiendo dos respuestas a dos solicitudes GET, como estas dos:

 Event: request cypress_runner.js:190995 Resource type: xhr cypress_runner.js:190995 Method: GET cypress_runner.js:190995 Url: https://127.0.0.1/api/users/61a68c4a1d2c5258baece19c?_=1638304841558 cypress_runner.js:190995 Matched `cy.intercept()`: {RouteMatcher: {…}, RouteHandler Type: 'Spy', RouteHandler: undefined, Request: {…}, Response: {…}, …} cypress_runner.js:190995 Response status code: 200 cypress_runner.js:190995 Response headers: {date: 'Tue, 30 Nov 2021 20:40:43 GMT', Content-Encoding: 'gzip', server: 'nginx', Vary: 'Accept-Encoding', access-control-allow-methods: 'PUT, GET, POST, DELETE, OPTIONS, PATCH', …} cypress_runner.js:190995 Response body: {"name": "Alice", "description": "Created by Cypress"} Event: request cypress_runner.js:190995 Resource type: xhr cypress_runner.js:190995 Method: GET cypress_runner.js:190995 Url: https://127.0.0.1/api/users/61a68c4a1d2c5258baece19c?_=1638304841558 cypress_runner.js:190995 Matched `cy.intercept()`: {RouteMatcher: {…}, RouteHandler Type: 'Spy', RouteHandler: undefined, Request: {…}, Response: {…}, …} cypress_runner.js:190995 Response status code: 200 cypress_runner.js:190995 Response headers: {date: 'Tue, 30 Nov 2021 20:40:43 GMT', Content-Encoding: 'gzip', server: 'nginx', Vary: 'Accept-Encoding', access-control-allow-methods: 'PUT, GET, POST, DELETE, OPTIONS, PATCH', …} cypress_runner.js:190995 Response body: {"name": "Bob", "description": "Created by Cypress"}

Mi intercepción por ahora se ve así:

 cy.intercept("GET", "/api/users/*").as("waitingForUpdateOnAlice") cy.wait("@waitingForUpdateOnAlice")

Pero si el servidor devuelve la respuesta para Bob, entonces no tengo la posibilidad de seguir esperando.

¿Hay alguna manera de manejar esto?

Mención: NO tengo control ni acceso a la identificación final en la URL, por lo que necesito hacer este filtrado solo en el cuerpo de la respuesta.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En primer lugar, declare una función para usarla recursivamente:

 function doIntercept(functionToWait){ cy.wait("@"+functionToWait).then((res)=>{ if(res.response.body.name === 'Bob') { doIntercept("@"+functionToWait); } else { assert(res.response.body.name).to.be.eq('Alice'); } }) }

luego en tu sección de prueba:

 it("your test", ()=>{ cy.intercept("GET", "/api/users/*").as("waitingForUpdateOnAlice"); doIntercept("waitingForUpdateOnAlice"); })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede crear un alias para una solicitud individual . Esto debería lograr lo que te gustaría.

 cy.intercept("GET", "/api/users/*", (req) => { if (req.body.name.equals('Alice')) { req.alias = 'waitingForUpdateOnAlice' } }); cy.wait('@waitingForUpdateOnAlice');

Es posible que deba jugar con la forma exacta de ese condicional req.body.name .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda