user1868774
user1868774

Reputation: 111

Cypress: How to identify if element contains only numbers

please how to identify in cypress, if element contains only numbers? I have a div which contains some dynamic data and I would like to see to fail the test, if the data will contain anything but numbers. Thanks for any idea.

Upvotes: 2

Views: 10525

Answers (3)

Alapan Das
Alapan Das

Reputation: 18626

You can use match() and then compare it with a regex. The /^[0-9]*$/ regex value will only check for numbers.

cy.get('#greeting')
  .invoke('text')
  .should('match', /^[0-9]*$/)

Thanks, @Prabhu Mohan for this. If you are checking the numbers that contain decimals, you can use -

cy.get('#greeting')
  .invoke('text')
  .should('match', /^[0-9]\d*(\.\d+)?$/)

Upvotes: 4

user14783414
user14783414

Reputation:

Using Number.isNaN(+value) is easier than using a regex,

cy.get('input')
  .type('123')
  .invoke('val')
  .should(value => {
    expect(Number.isNaN(+value), 'input should be a number').to.eq(false)    // passes
  })

cy.get('input')
  .type('123.45')
  .invoke('val')
  .should(value => {
    expect(Number.isNaN(+value), 'input should be a number').to.eq(false)    // passes
  })

cy.get('input')
  .type('abc')
  .invoke('val')
  .should(value => {
    expect(Number.isNaN(+value), 'input should be a number').to.eq(false)    // fails
  })

or for strictly integer numbers

cy.get('input')
  .type('123')
  .invoke('val')
  .should(value => {
    expect(Number.isInteger(+value), 'input should be an integer').to.eq(true) // passes
  })

cy.get('input')
  .type('123.45')
  .invoke('val')
  .should(value => {
    expect(Number.isInteger(+value), 'input should be an integer').to.eq(true) // fails
  })

cy.get('input')
  .type('abc')
  .invoke('val')
  .should(value => {
    expect(Number.isInteger(+value), 'input should be an integer').to.eq(true) // fails
  })

Upvotes: 7

Prabhu Mohan
Prabhu Mohan

Reputation: 125

You can achieve this using regular expression. Refer for an idea https://docs.cypress.io/api/commands/contains#Regular-Expression

Upvotes: 1

Related Questions