Me pregunto cuál es la mejor manera de abordar este problema:
const playerName = ["_player_One_", "_player_two_", "_player_three_", "_player_four_"]
cy.get("myElement").each(($match) => { cy.wrap($match).each(($el) => { cy.get($el).should("include.attr", "src", `/foo/bar/art/all-art-${playerCharacter[]}.png`); }); });Lo reconozco en su forma actual, se me devolverá con la salida de matriz completa, pero solo estoy compartiendo como referencia el ángulo del que vengo.
Cualquier ayuda sería apreciada, incluso si es una nueva forma de estructurar que no había considerado.
¡Gracias por adelantado!
Convierta los nombres de los jugadores en una matriz de enlaces, afirme con 'oneOf'.
Funciona si los elementos del jugador cambian de orden.
const players = ["_player_One_", "_player_two_", "_player_three_", "_player_four_"] const links = players.map(player => `/foo/bar/art/all-art-${player}.png`) it('all elements have a player', () => { cy.get('div[src^="/foo/bar/art/all-art-"]') .each($el => { cy.wrap($el).invoke('attr', 'src').should('be.oneOf', links) }) }) it('all players have an element', () => { cy.get('div[src^="/foo/bar/art/all-art-"]') .then($els => { const attrLinks = [...$els].map($el => Cypress.$($el).attr('src')) links.forEach(link => { cy.wrap(link).should('be.oneOf', attrLinks) }) }) })Puedes hacer algo como esto:
const playerName = ["_player_One_", "_player_two_", "_player_three_", "_player_four_"] cy.get('myElement').each(($ele, index) => { expect($ele.attr('src')).to.include(playerName[index]) })