es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para volver a ejecutar todo el archivo de características si uno de sus escenarios falló, puede seguir los siguientes pasos:

    1. Actualice el archivo de configuración de Cypress (cypress.json) con el siguiente código:
    {
      "retries": {
        "runMode": 2,
        "openMode": 2
      },
      "viewportWidth": 1366,
      "viewportHeight": 768
    }
    

    Esto establecerá el número máximo de intentos en 2 tanto para los modos de ejecución como de apertura.

    1. Agregue un comando al archivo de complementos de Cypress (cypress/plugins/index.js) para manejar las fallas en las pruebas:
    module.exports = (on, config) => {
      on('task', {
        failed: require('cypress-failed-log/src/failed')(),
      })
    
      on('after:run', (results) => {
        if (results.totalFailed > 0) {
          return config.env.commandRetry()
        }
      })
    }
    

    Esto usará el complemento “cypress-failed-log” para registrar las pruebas fallidas y volver a ejecutar todo el archivo de características si algún escenario falló.

    1. Agregue un comando al archivo de soporte de Cypress (cypress/support/commands.js) para manejar los intentos de prueba:
    Cypress.Commands.add('retry', { prevSubject: 'optional' }, (subject, options = {}) => {
      const { from = 0, to = 1, delay = 0 } = options
    
      const cmd = Cypress._.isFunction(subject) ? subject : () => cy.wrap(subject)
    
      return cy.wrap(null).then(() => {
        let lastErr
    
        const tryCommand = (index) => {
          if (index > 0) {
            cy.wait(delay)
          }
    
          return cmd().catch((err) => {
            lastErr = err
    
            if (index < to) {
              return tryCommand(index + 1)
            }
          })
        }
    
        return tryCommand(from).finally(() => {
          if (lastErr) {
            throw lastErr
          }
        })
      })
    })
    

    Esto definirá un comando personalizado de Cypress para volver a intentar las pruebas fallidas con un retraso entre los intentos.

    1. Use el comando personalizado en sus archivos de características:
    Scenario: Login
      Given I am on the login page
      When I enter valid credentials
      Then I should be logged in
    
      ## Agregue este paso para volver a intentar el escenario si falla
      Then I retry the scenario
    

    Esto volverá a intentar todo el escenario si algún paso falla y registrará los fallos con “cypress-failed-log”.

    Nota: esta solución utiliza el complemento “cypress-failed-log”, que requiere instalación y configuración. Consulte la documentación del complemento para obtener más información.

Comments are closed.