Hola amigos, ya que soy nuevo en esto de Cypress y la automatización de la interfaz de usuario. Necesito su ayuda para resolver el escenario actual. Tengo una cuadrícula como esta.
he creado un custom command en support\commands.js continuación es mi código que toma OrderID como parámetro y lee la Freight info de ui pero tiene muchas pestañas nested div para el relleno, por lo tanto, uso la etiqueta parents() para alcanzar el índice específico fila
Cypress.Commands.add('readFreightInfo', (OrderID) => { return cy.get('.simple-table__cell:nth-child(1)') .contains(OrderID) .parents("div[role='row']") .find('div') .eq(2) .invoke('text') }) pero el texto que devuelve es '\n 65,88' lo que necesitaba necesitaba la parte numérica solo, es decir, 299,88 en Number type
como era un método genérico para la validación que estaba usando antes
cy.readFreightInfo(10250).should('eq', 65.83) pero ahora quiero afirmarlo ya que el valor de retorno del custom command debe estar between 60 and 70
lo que he intentado hasta ahora
he intentado usar tanto la solución alternativa mencionada en esta respuesta
Puede devolver el valor de un comando personalizado como este:
Cypress.Commands.add('readFreightInfo', (OrderID) => { cy.get('.simple-table__cell:nth-child(1)') .contains(OrderID) .parents("div[role='row']") .find('div') .eq(2) .invoke('text') .then((text) => { return cy.wrap(+text.replaceAll('\n ', '')) //returns 65.83 as number }) })Y luego en tu prueba, puedes hacer esto:
cy.readFreightInfo(10250).then((numValue) => { cy.wrap(numValue).should('eq', 65.83) //direct assert cy.wrap(numValue).should('be.gte', 60).and('be.lte', 70) //greater than equal to 60 and less than equal to 70 }).trim() elimina los terminadores de línea de ambos extremos del texto.
Además, acceso directo para obtener la fila: use .contains('[role="row"]', OrderId) .
Cypress.Commands.add('readFreightInfo', (OrderID) => { cy.contains('div[role="row"]', OrderID) .find('div') .eq(2) .invoke('text') .then(text => parseInt(text.trim()) ) }) cy.readFreightInfo(10250) .should('be.within', 60, 70)Referencia cadena.trim()
El método trim() elimina los espacios en blanco de ambos extremos de una cadena y devuelve una nueva cadena, sin modificar la cadena original. Los espacios en blanco en este contexto son todos los caracteres de espacio en blanco (espacio, tabulador, espacio sin interrupción, etc.) y todos los caracteres de terminación de línea (LF, CR, etc.).