Interceptación de solicitudes de red con Cypress
Clase 8 de 29 • Curso de Cypress Avanzado
Contenido del curso
Clase 8 de 29 • Curso de Cypress Avanzado
Contenido del curso
Iván Ceballos Vega
Brayan Jeshua
Jared Esaú Ortega Ramírez
Iván Ceballos Vega
Mario Alexander Vargas Celis
Brayan Jeshua
Las URLs que usa el profesor en esta clase son: https://pokeapi.co/api/v2/pokemon/ditto https://pokeapi.co/api/v2/pokemon-species/1
Si la request dura mucho...
// Wait until a propertyPath answers a value... cy.wait("@myApiResponse1").its("response.statusCode").should("eq", 200); // Wait and use a timeout cy.wait("@myApiResponse1", { timeout: 2000 });
Timed out retrying after 5000ms: cy.wait() timed out waiting 5000ms for the 1st request to the route: get_availability. No request ever occurred
Me sale este error
Prueba desactivando la caché del navegador. Este error sucede cuando el navegador cachea la llamada, entonces la prueba falla porque técnicamente nunca se está realizando la llamada (dado que el navegador saca la respuesta de la caché):
mi codigo
describe("Interceptando network requests", ()=>{ it("Repaso de request", ()=>{ cy.request("https://pokeapi.co/api/v2/pokemon/ditto").then(response =>{ expect(response.body).to.have.property("name", "ditto"); expect(response.status).to.eq(200); cy.log(response.body); }); }); it('Prueba de intercept simple', ()=>{ cy.intercept("GET","https://pokeapi.co/api/v2/pokemon-species/1").as("bulbasaur"); cy.visit("/"); cy.contains("Bulbasaur").parent().parent().within( element=>{ cy.wrap(element).contains("Más detalles").click(); }); /*cy.wait("@bulbasaur").then((interception) =>{ cy.log(interception); expect(interception.response.body).to.have.property("name", "bulbasaur"); expect(interception.response.statusCode).to.eq(200); });*/ //cy.wait('@bulbasaur',{timeout: 2000}); cy.wait('@bulbasaur').its('response.statusCode').should('eq',200); }); }); ```describe("Interceptando network requests", ()=>{ it("Repaso de request", ()=>{ cy.request("https://pokeapi.co/api/v2/pokemon/ditto").then(response =>{ expect(response.body).to.have.property("name", "ditto"); expect(response.status).to.eq(200); cy.log(response.body); }); }); it('Prueba de intercept simple', ()=>{ cy.intercept("GET","https://pokeapi.co/api/v2/pokemon-species/1").as("bulbasaur"); cy.visit("/"); cy.contains("Bulbasaur").parent().parent().within( element=>{ cy.wrap(element).contains("Más detalles").click(); }); /\*cy.wait("@bulbasaur").then((interception) =>{ cy.log(interception); expect(interception.response.body).to.have.property("name", "bulbasaur"); expect(interception.response.statusCode).to.eq(200); });\*/ //cy.wait('@bulbasaur',{timeout: 2000}); cy.wait('@bulbasaur').its('response.statusCode').should('eq',200); });});
Como no existen los archivos de la clase, hice este pequeno ejemplo que explica la clase de forma simple...
// Save my Interceptor into a alias cy.intercept("GET", "https://my-api.com/1").as("myApiResponse1"); cy.visit("/my-page-list"); // Navigate into a detail Page cy.get("#detailBtn-1").click(); // Use my alias cy.wait("@myApiResponse1").then((interception) => { cy.log(interception); // Assert my Interceptor expect(interception.body).to.have.property("property-name", "value"); });