refactor: refs #8484 improve selectOption command with retry logic for visibility checks
This commit is contained in:
parent
6c36bdb834
commit
3bb09c8310
|
@ -100,33 +100,48 @@ Cypress.Commands.add('getValue', (selector) => {
|
||||||
|
|
||||||
// Fill Inputs
|
// Fill Inputs
|
||||||
Cypress.Commands.add('selectOption', (selector, option, timeout = 5000) => {
|
Cypress.Commands.add('selectOption', (selector, option, timeout = 5000) => {
|
||||||
cy.waitForElement(selector, timeout);
|
// cy.waitForElement(selector, timeout);
|
||||||
cy.get(selector).click();
|
// cy.get(selector).click();
|
||||||
cy.get(selector).invoke('data', 'url').as('dataUrl');
|
// cy.get(selector).invoke('data', 'url').as('dataUrl');
|
||||||
cy.get(selector)
|
// cy.get(selector)
|
||||||
.clear()
|
// .clear()
|
||||||
.type(option)
|
// .type(option)
|
||||||
.then(() => {
|
// .then(() => {
|
||||||
cy.get('.q-menu', { timeout })
|
// cy.get('.q-menu', { timeout })
|
||||||
.should('be.visible') // Asegurarse de que el menú está visible
|
// .should('be.visible') // Asegurarse de que el menú está visible
|
||||||
.and('exist') // Verificar que el menú existe
|
// .and('exist') // Verificar que el menú existe
|
||||||
.then(() => {
|
// .then(() => {
|
||||||
cy.get('@dataUrl').then((url) => {
|
// cy.get('@dataUrl').then((url) => {
|
||||||
if (url) {
|
// if (url) {
|
||||||
// Esperar a que el menú no esté visible (desaparezca)
|
// // Esperar a que el menú no esté visible (desaparezca)
|
||||||
cy.get('.q-menu').should('not.be.visible');
|
// cy.get('.q-menu').should('not.be.visible');
|
||||||
// Ahora esperar a que el menú vuelva a aparecer
|
// // Ahora esperar a que el menú vuelva a aparecer
|
||||||
cy.get('.q-menu').should('be.visible').and('exist');
|
// cy.get('.q-menu').should('be.visible').and('exist');
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
|
|
||||||
// Finalmente, seleccionar la opción deseada
|
// // Finalmente, seleccionar la opción deseada
|
||||||
cy.get('.q-menu:visible') // Asegurarse de que estamos dentro del menú visible
|
// cy.get('.q-menu:visible') // Asegurarse de que estamos dentro del menú visible
|
||||||
.find('.q-item') // Encontrar los elementos de las opciones
|
// .find('.q-item') // Encontrar los elementos de las opciones
|
||||||
.contains(option) // Verificar que existe una opción que contenga el texto deseado
|
// .contains(option) // Verificar que existe una opción que contenga el texto deseado
|
||||||
.click(); // Hacer clic en la opción
|
// .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) => {
|
Cypress.Commands.add('countSelectOptions', (selector, option) => {
|
||||||
|
@ -145,6 +160,7 @@ Cypress.Commands.add('fillInForm', (obj, form = '.q-form > .q-card') => {
|
||||||
if (!field) return;
|
if (!field) return;
|
||||||
|
|
||||||
const { type, val } = field;
|
const { type, val } = field;
|
||||||
|
cy.log("TIPO: ", field);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'select':
|
case 'select':
|
||||||
cy.selectOption(el, val);
|
cy.selectOption(el, val);
|
||||||
|
|
Loading…
Reference in New Issue