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.
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: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 comandofocus()
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.