Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

174
Views
how to validate comment-size text from the text inserted in the comment box using Cypress

hi folks as I am new to this automation/cypress world i need your help to handle this problem statement

i have a comment box something similar to this i am able to put text inside this text with

cy.get('#comments').type('TEST')

but there is a element similar to this which shows character count as

*4/4000 Characters Used

instead of highlighted one

what i wanted ? i wanted to validate the text with the on run time

what i have done so far

i have created a custom command which return the text out of element by passing its locator

Cypress.Commands.add('getElementText', (locator) => {
  cy.get(locator).invoke('text').then((text)=>{
  return text.length
})
})

what i needed

cy.get('#commentSize').invoke('text').should('eq','*'+cy.getElementText('#comments').then((text)=>{return text})+'/4000 Characters Used')

so that the final validation should appear like this

cy.get('#commentSize').invoke('text').should('eq','*'+ '4' +'/4000 Characters Used')

but i am getting assert error expected 4 to equal * [object Object]NaN

enter image description here

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

You have to wrap and then return your text like this:

Cypress.Commands.add('getElementText', (locator) => {
  cy.get(locator)
    .invoke('text')
    .then((text) => {
      return cy.wrap(text.length)
    })
})

Then in your test you have to do this:

cy.getElementText('#comments').then((len) => {
  cy.get('#commentSize')
    .invoke('text')
    .should('eq', '*' + len + '/4000 Characters Used')
})

You can also directly assert using the should('have.text')like this:

cy.getElementText('#comments').then((len) => {
  cy.get('#commentSize').should(
    'have.text',
    '*' + len + '/4000 Characters Used'
  )
})
about 4 years ago · Juan Pablo Isaza Report

0

Here's another variation of your test, using the element passed down after .type().

cy.get('#comments').type('TEST')
  .then($comments => {
    cy.get('#comments-size')
      .should('have.text', `*${$comments.text().length}/4000 Characters Used`)
  })

Since you are using .type() I am surprised to see .text() work.

Normally you use .type() on an <input> which requires .val() to fetch the typed-in text.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!