2

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

Paolo
  • 3,530
  • 7
  • 21
Zoran
  • 491
  • 7
  • 22

2 Answers2

0

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)
})

})

Zoran
  • 491
  • 7
  • 22
0

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)
    })
  })
})
Paolo
  • 3,530
  • 7
  • 21