Se ha agregado un código genérico para diferenciar entre los diferentes tipos de Snackbar en la interfaz de usuario. Span se ha agregado con la propiedad de prueba de datos creada usando clave (obligatoria) y variante (obligatoria) con cadena de notificación, por ejemplo, ${clave}-${variante}-notificación, es decir, notificación de error xyz. Este lapso se envuelve alrededor del texto y se puede utilizar para la automatización. Entonces, será algo como <span data-test= dataTest? prueba de datos: ${clave}-${variante}-notificación>. Se han añadido categorías de Snackbar.
Error Snackbar dataTest ? dataTest : ${key}-${variant}-error Info Snackbar dataTest ? dataTest : ${key}-${variant}-notification Success Snackbar dataTest ? dataTest : ${key}-${variant}-success Warning Snackbar dataTest ? dataTest : ${key}-${variant}-warningTengo que crear una función en Cypres Automation donde si aparece una barra de error en la interfaz de usuario, entonces tengo que fallar en el caso de prueba, si aparece una barra de éxito, entonces tengo que continuar con el caso de prueba, de lo contrario, tengo que capturar información y advertencia snackbar y también si algún tipo de snackbar no estará presente desde la transición de una página a otra, entonces tengo que registrar el mensaje, no hay snackbar presente.
Cualquier tipo de ayuda es muy apreciada?
De los comentarios:
Así que aquí está el flujo:
Por favor ayúdenme con el código exacto para esto
Pruebe algo como esto, probando el intervalo con jQuery
cy.get('body').then($body => { const $span = $body.find(`span[data-test^="${key}-${variant}-"]`) if ($span.length === 0) { cy.log('Nothing found') return } if ($span.attr('data-test').split('-')[3] === 'error') { throw 'error' } if ($span.attr('data-test').split('-')[3] === 'success') { return } cy.log($span.attr('data-test')) })Si desea capturar el elemento transitorio que puede aparecer o no, use una función recursiva
function eatSnack(level = 0) { // Figure out how many times you want to check before giving up if (level === 10) { cy.log('Nothing found') return } cy.get('body').then($body => { const $span = $body.find(`span[data-test^="${key}-${variant}-"]`) if ($span.attr('data-test').split('-')[3] === 'error') { throw 'error' } if ($span.attr('data-test').split('-')[3] === 'success') { return } if ($span.attr('data-test').split('-')[3] === 'warning') { cy.log($span.attr('data-test')) return } if ($span.attr('data-test').split('-')[3] === 'info') { cy.log($span.attr('data-test')) return } cy.wait(10) // adjust this to suit SnackBar eatSnack(++level) // try again } }) eatSnack() // start lookingNo me importaría ver más contexto, pero por lo que has dado
const key = 'abc' const variant = '123' cy.get(`span[data-test^="${key}-${variant}-"]`) // queries starting portion of attr .then($span => { const level = $span.attr('data-test').split('-')[3] // what type is it? if (level === 'error') throw "Woops an error" // fail the test if (level === 'success') return // do nothing // otherwise log something cy.log($span.attr('data-test'))Dado que las barras de bocadillos son generalmente transitorias, deberá colocar cuidadosamente el código después de la acción de activación.