I am trying to validate the set of titles for a component. Below is my Cypress code snippet:
it('Validate the titles of all the tiles', () => {
cy.get('.bms-scoreboard__game-tile')
.each(($el) => {
if($el.hasClass('bms-scoreboard__game-tile--cancelled')) {
$el.get('.bms-scoreboard__game-tile-status--cancelled')
.invoke('text')
.then((text) => {
expect(text).equals('Cancelled')
})
} else if($el.hasClass('bms-scoreboard__game-tile--pre-game')) {
$el.get('.bms-scoreboard__game-time--en')
.invoke('text')
.then((text) => {
const gameTime = text.split(" ").pop()
expect(['AM', 'PM']).to.include(gameTime)
})
} else if($el.hasClass('bms-scoreboard__game-tile--final')) {
$el.get('.bms-scoreboard__game-time--en')
.invoke('text')
.then((text) => {
const finalTitle = text.trim()
expect(finalTitle).to.be.oneOf(['Final','Final (OT)'])
})
} else if($el.hasClass('bms-scoreboard__game-tile--ongoing')) {
$el.get('.bms-scoreboard__game-time--en')
.invoke('text')
.then((text) => {
const ongoingTitle = text.trim()
expect(ongoingTitle).equals('Ongoing')
})
}
})
})
But I get an error message: ‘Cannot read properties of undefined (reading ‘invoke’)’.
It works fine if I try it with only if block.