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