diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js index c783677b6..c15ee6bb6 100755 --- a/test/cypress/support/commands.js +++ b/test/cypress/support/commands.js @@ -100,33 +100,48 @@ Cypress.Commands.add('getValue', (selector) => { // Fill Inputs Cypress.Commands.add('selectOption', (selector, option, timeout = 5000) => { - cy.waitForElement(selector, timeout); - cy.get(selector).click(); - cy.get(selector).invoke('data', 'url').as('dataUrl'); - cy.get(selector) - .clear() - .type(option) - .then(() => { - cy.get('.q-menu', { timeout }) - .should('be.visible') // Asegurarse de que el menú está visible - .and('exist') // Verificar que el menú existe - .then(() => { - cy.get('@dataUrl').then((url) => { - if (url) { - // Esperar a que el menú no esté visible (desaparezca) - cy.get('.q-menu').should('not.be.visible'); - // Ahora esperar a que el menú vuelva a aparecer - cy.get('.q-menu').should('be.visible').and('exist'); - } - }); - }); - }); + // cy.waitForElement(selector, timeout); + // cy.get(selector).click(); + // cy.get(selector).invoke('data', 'url').as('dataUrl'); + // cy.get(selector) + // .clear() + // .type(option) + // .then(() => { + // cy.get('.q-menu', { timeout }) + // .should('be.visible') // Asegurarse de que el menú está visible + // .and('exist') // Verificar que el menú existe + // .then(() => { + // cy.get('@dataUrl').then((url) => { + // if (url) { + // // Esperar a que el menú no esté visible (desaparezca) + // cy.get('.q-menu').should('not.be.visible'); + // // Ahora esperar a que el menú vuelva a aparecer + // cy.get('.q-menu').should('be.visible').and('exist'); + // } + // }); + // }); + // }); - // Finalmente, seleccionar la opción deseada - cy.get('.q-menu:visible') // Asegurarse de que estamos dentro del menú visible - .find('.q-item') // Encontrar los elementos de las opciones - .contains(option) // Verificar que existe una opción que contenga el texto deseado - .click(); // Hacer clic en la opción + // // Finalmente, seleccionar la opción deseada + // cy.get('.q-menu:visible') // Asegurarse de que estamos dentro del menú visible + // .find('.q-item') // Encontrar los elementos de las opciones + // .contains(option) // Verificar que existe una opción que contenga el texto deseado + // .click(); // Hacer clic en la opción + + const retryAssertion = (selector, option, retries = 5) => { + if (retries === 0) throw new Error('Assertion failed after retries'); + cy.waitForElement(selector).click().clear().type(option); + cy.get('.q-menu') + .then($el => { + if ($el.css('visibility') !== 'visible') { + retryAssertion(selector, option, retries - 1); + } else { + cy.get($el).should('be.visible').find('.q-item').contains(option).click(); + cy.wait(200); + } + }); + }; + retryAssertion(selector, option); }); Cypress.Commands.add('countSelectOptions', (selector, option) => { @@ -145,6 +160,7 @@ Cypress.Commands.add('fillInForm', (obj, form = '.q-form > .q-card') => { if (!field) return; const { type, val } = field; + cy.log("TIPO: ", field); switch (type) { case 'select': cy.selectOption(el, val);