Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

203
Vistas
Obtener AssertionError en el comando personalizado de Cypress

Mi archivo de objeto de página es como a continuación

 /// <reference types='cypress' /> const LOGIN_PAGE_HEADER_TEXT = '.welcome-message > h1'; class LoginPage { get loginPageHeaderText() { return cy.get(LOGIN_PAGE_HEADER_TEXT, {timeout: 140000}); } } export default LoginPage;

Quiero usar un comando personalizado para verificar el texto del encabezado de la página y el texto es dinámico

Así que traté de escribir un comando personalizado como el siguiente

 Cypress.Commands.add('shouldContain', (element , text) => { cy.get(element).should('contain.text', text) })

pero cuando uso el comando personalizado en mi archivo de prueba, aparece un error. Estoy tratando de usar el comando personalizado como a continuación

 cy.shouldContain(loginPage.loginPageHeaderText, 'Welcome')

El error que estoy recibiendo:

Se agotó el tiempo de reintento después de 60000 ms: se esperaba que {Objeto (0, longitud)} contuviera el texto "¿Olvidó la contraseña?", pero el texto era "

si uso esto

 Cypress.Commands.add('shouldContain', (element , text) => { element.should('contain', 'text') })

Luego me muestra el error

shouldcontain, texto AssertionError El objeto probado debe ser una matriz, un mapa, un objeto, un conjunto, una cadena o un conjunto débil, pero no definido dado

Necesitas ayuda

about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

Tienes que escribir texto en lugar de 'texto'. Y en lugar de contain.text , use contiene.texto, esto hará una coincidencia parcial del texto interno del elemento.

 Cypress.Commands.add('shouldContain', (element , text) => { element.should('contain.text', text) })

O, si solo desea usar contain , puede hacer esto:

 Cypress.Commands.add('shouldContain', (element , text) => { element.invoke('text').should('contain', text) })
about 4 years ago · Santiago Gelvez Denunciar

0

Los comandos personalizados no pueden tomar otros comandos como parámetros.

La forma de hacer esto es construir un comando secundario

 Cypress.Commands.add('shouldContain', {prevSubject:true}, (element , text) => { cy.wrap(element).should('contain.text', text) // ✅ passes })

Lo llamas así

 loginPage.loginPageHeaderText.shouldContain('Welcome')

Pasar loginPage.loginPageHeaderText como parámetro no funciona porque se evalúa demasiado pronto.

El resultado aún no está undefined porque los comandos aún no han comenzado a ejecutarse.

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda