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.

El comando personalizado Cypress no entra en la declaración ‘catch’ cuando la función focus() falla.

Intento ingresar al bloque catch cuando el comando ‘focus()’ falla pero sin obtener un resultado.
Aquí está el código de mi comando personalizado:

Cypress.Commands.add('elemento', (selector: string) => {
    try {
            cy
                .get(selector)
                .focus()
                .should('not.be.disabled')
    } catch (error) {
        cy.log('elemento', filename.split(dirname + "/").pop(), error);
    };
});

Aquí está el código de mi clase de prueba:

describe('ejemplo de comando personalizado elementoNoFocus.', () => {
    it("ejemplo muestra cómo usar el comando personalizado 'elementoNoFocus'.", () => {
        cy.visit('https://demoqa.com/buttons');
        cy.xpath('(//*[contains(text(),"Click Me")])[3]').click();
        cy.get('#dynamicClickMessage');
    });
});

Como resultado, mi código no entra en el bloque catch.

enter image description here

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que la instrucción catch se ejecute cuando el comando focus() falla sin obtener un resultado, debes modificar tu código de comando personalizado de la siguiente manera:

    Cypress.Commands.add('element', (selector: string) => {
        cy.get(selector)
          .then($element => {
            if ($element.length > 0) {
              cy.wrap($element)
                .focus()
                .should('not.be.disabled');
            } else {
              throw new Error(`Elemento ${selector} no encontrado`);
            }
          })
          .catch(error => {
            cy.log('element', __filename.split(__dirname + "/").pop(), error);
          });
    });
    

    Este código actualizado primero verifica si el elemento existe antes de intentar llamar al comando focus(). Si no se encuentra el elemento, se arroja un error que será capturado por la instrucción catch. Si se encuentra el elemento, se intenta llamar al comando focus() y se verifica que el elemento no esté desactivado.

    Con este código de comando personalizado actualizado, tu prueba ahora debería caer en la instrucción catch si el comando focus() falla sin obtener un resultado.

Comments are closed.