Home > Mobile >  Cypress - assert if are duplicates in array
Cypress - assert if are duplicates in array

Time:09-16

Can someone please assist in following:

I have to assert array with x elements (usually not more than 6 or 7) and if there is any duplicates, it has to throw error - or step to fail. So far I did the following:

Cypress.Commands.add('addTextElementIntoArray', (list) => {
 var textsArray = []
 cy.xpath(list).each(($el) => {
const text = $el.text().replace(' ', '')

textsArray.push(text)
cy.log(text)
 })
})

Tried this solution: Find duplicates, but it does not work in Cypress. How can I solve this? Thank you in advance

CodePudding user response:

Found solution, and here it is:

Cypress.Commands.add('addTextElementIntoArray', (list) => {
var textsArray = []
var non_unique = []
cy.xpath(list)
.each(($el) => {
  const text = $el.text().replace(' ', '')

  textsArray.push(text)
  cy.log(text)
  non_unique = textsArray.filter((item, i) =>
    textsArray.includes(item, i   1)
  )
})
.then(() => {
  expect(non_unique.length).equal(0)
})

})

CodePudding user response:

Using the answer from the linked question in Cypress,

Cypress.Commands.add('listHasNoDuplicates', (list) => {

  cy.xpath(list)
    .then($els => [...$els].map(el => el.innerText.trim()))
    .then(texts => {
      const unique = new Set(texts)
      expect(texts.length).to.eq(unique.size)
    })
  })
})
  • Related