No tengo claro cómo ejecutar pruebas solo si se cumple una condición asíncrona: si un elemento está presente en la página.
Sería algo así, que obviamente no funciona. Puedo ver la alerta "habilitada", pero la prueba anidada "Ejecutar pruebas adecuadas" no se ejecutará. ¿Cuál es la manera correcta de hacer esto? Por supuesto, esto está simplificado, hay muchas más pruebas, no solo 1.
context("table", () => { it("Check availability", () => { cy.get("div.table").then($div => { if (!Cypress.$(".header[title]", $div).length) { alert("not enabled"); } else { alert("enabled"); it("Run proper tests", () => {...}); } }); }); });Haría una nueva instancia y usaría una variable
context("table", () => { let result it("Check availability", () => { cy.get("div.table").then($div => { if (!Cypress.$(".header[title]", $div).length) { alert("not enabled"); result='fail' } else { alert("enabled"); } }) it("Run proper tests", () => { if (result === 'fail') { console.log('not enabled') } else { Run proper test } }) })Puede probar la función de pruebas pendientes de Mocha a través this.skip() :
context("table", () => { it("Run proper tests", () => { cy.get("div.table").then(function($div) { if (!Cypress.$(".header[title]", $div).length) { this.skip() } else { // Run proper test } }); }); }); Así es como se muestra una prueba omitida en el Cypress Runner: 