En nuestra aplicación utilizamos tareas para que el usuario realice un cierto flujo de trabajo. Esta tarea puede tener dos clases diferentes, depende de la tarea que el usuario tenga frente a él.
La clase 'task__options' y 'ap-option' están dentro de la clase 'task__inner'.
Tengo que seguir el código, pero nunca pasa por IF solo por ELSE. ¿Tienes alguna sugerencia para solucionar esto?
Then('I click the task option {string}', (task: string) => { cy.get('.task__inner').within(($ele) => { if($ele.hasClass('task__options')){ cy.get('.task__options').click(); } else { cy.get('.ap-option').click(); } }); });Puede escribir las dos clases separadas por , por lo que si alguna de ellas está presente, realizará el click() .
cy.get('.task__options,.ap-option').click()Entonces su código se verá así:
cy.get('.task__inner').within(() => { cy.get('.task__options,.ap-option').click() })Gracias a @Alapan, tengo una solución para este problema, pero también incluí una llamada API que sonaría si una de las dos clases estuviera presente.
Then('I click the task option {string}', (task: string) => { let clickButton = task => { cy.get('.task__options,.ap-option').contains(task, {matchCase: false, timeout: 30000}) .scrollIntoView() .click(); }; cy.get('.task__inner').within(() => { cy.get('.task__form').then(($ele) =>{ if($ele.hasClass('task__options')){ cy.intercept("POST", "/bla-bla/api/Task/ResolveConditionalWait/**").as('ResolveConditional') clickButton(task); cy.wait('@ResolveConditional') } else { clickButton(task); } }) }); });