Tengo una prueba en la que se produce una determinada solicitud de búsqueda unas 70 veces y, al final de la prueba, necesito comprobar que todos los códigos de estado fueran 200 o 204 . Hasta ahora, estoy interceptando la solicitud y puedo verificar el código de estado de response.statusCode para esa solicitud, pero tengo problemas para hacerlo con el resto. Esto es lo que tengo hasta ahora.
it('Testing', function () { cy.intercept('proxy/test*').as('test') cy.visit('/user/test'); const aliases = []; for (let i = 1; i <= 70; i++){ aliases.push('@test') } ............. ............. cy.wait(aliases).its('response.statusCode').should('eq', 200 || 204)el error que me sale es
Se agotó el tiempo de reintento después de 4000 ms: error de cy.its() porque la propiedad: la respuesta no existe en su asunto.
cy.its() esperó a que existiera la respuesta de propiedad especificada, pero nunca lo hizo.
¿Alguien puede ayudarme con esto?
Usted dijo alrededor de 70 veces , por lo que si prueba exactamente 70 veces y en realidad es 69, obtiene un error, incluso si todos los códigos de estado son correctos.
Por lo tanto, necesitará un criterio que le indique a la prueba que las búsquedas se han detenido; por lo general, algo en la pantalla solo aparece después de la búsqueda final.
De lo contrario, puede usar una espera fija, pero generalmente intentaría evitar eso.
const statusCodes = [] cy.intercept('proxy/test*', (req) => { req.continue((res) => { statusCodes.push(res.statusCode) }) }).as('test') // assert an element on page that only appears after all fetches finished cy.wrap(statusCodes).should(codes => { expect(codes.every(code => code === 200 || code === 204)).to.eq(true) })Si conoce el número exacto de recuperaciones, es más fácil
const statusCodes = [] cy.intercept('proxy/test*', (req) => { req.continue((res) => { statusCodes.push(res.statusCode) }) }).as('test') Cypress._.times(70, () => cy.wait('@test')) // exact call count is known cy.wrap(statusCodes).should(codes => { expect(codes.every(code => code === 200 || code === 204)).to.eq(true) })