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

166
Views
Usando Cypress y/o mocha (o mocha-chai) para verificar que no contenga una palabra pero NO una subcadena

Estoy tratando de usar Cypress (que contiene mocha , además estoy usando mocha-chai ) para verificar una serie de palabras que NO están incluidas en una frase. Esto se debe a que, por ejemplo, tengo tres <div> y quiero comprobar

  • que las palabras en div1 están presentes en div1 pero no en div2 y div3;
  • que las palabras en div2 están presentes en div2 pero no en div1 y div3;
  • que las palabras en div3 están presentes en div3 pero no en div1 y div2.

Para hacer eso, estoy usando .contain y .not.contain pero desafortunadamente encuentran algunas subcadenas:

si tengo

 // div1 <div> ... The perfect professionist for you </div> // div2 <div> ... Good professionists are ready here </div>

hago

 expect(div1).to.contain('professionist') // true expext(div1).to.not.contain('professionists') // true

esto esta bien, pero

 expect(div2).to.contain('professionists') // true expect(div2).to.not.contain('professionist') // false!

fallará.

¿Hay alguna manera de usar cypress, mocha o algo similar para verificar la palabra completa pero no la subcadena?

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

0

Puedes usar una expresión regular para hacer eso. Para la afirmación, debe usar match() .

 var regexValue = "(?<!\S)word(?!\S)" var actualRegexValue = new RegExp(regexValue.replace("word", "professionist")) cy.get('div2').invoke('text').then((text) => { expect(text).to.match(actualRegexValue) })

Su expresión regular /(?<!\S)professionist(?!\S)/ solo buscará la cadena professionist en la oración y nada más, ni siquiera professionists .

about 4 years ago · Juan Pablo Isaza Report

0

Límite de palabra: \b

Más general es el límite de palabra regex

 cy.get('div').eq(1).invoke('text') .then(div2Text => expect(div2Text).to.not.match(/\bprofessionist\b/)) // passes

o pasar la palabra a la expresión regular (la nota requiere \\b para una traducción adecuada)

 const word = 'professionist' const regex = new RegExp(`\\b${word}\\b`) cy.get('div').eq(1).invoke('text') .then(div2Text => expect(div2Text).to.not.match(regex)) // passes cy.get('div').eq(1).invoke('text') .should('not.match', regex) // passes

tu cubo de pasta

 /// <reference types="cypress" /> before(() => {}) beforeEach(() => { cy.viewport(2048, 1080) }) describe('Test', () => { it('simple test', () => { let div = document.createElement('div') let content = document.createTextNode('Good professionists are ready here') div.appendChild(content) try { let word = 'professionist' let regex = new RegExp(`\\b${word}\\b`) expect(div.innerText).not.to.match(regex) // passes word = 'professionists' regex = new RegExp(`\\b${word}\\b`) expect(div.innerText).to.match(regex) // passes } catch (error) { Cypress.log(error) } }) })

ingrese la descripción de la imagen aquí

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!