1
resposta

[Dúvida] AssertionError

Boa noite! Estou tomando o erro abaixo, como faço para corrigir?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

describe('Acessando múltiplas páginas', () => { it('Acessar página de cartões', () => { cy.visit('/') cy.getByData('botao-login').click() cy.getByData('email-input').type('emi.stutz86@gmail.com') cy.getByData('senha-input').type('123456') cy.getByData('botao-enviar').click()

    cy.getByData('app-home').find('a').eq(1).click()
   cy.getByData('titulo-cartoes').should('exist').and('have.text', 'Meus cartões')
})

})

1 resposta

Olá, Emiliana! Pelo erro que você está enfrentando, parece que o teste está tentando encontrar o elemento com o data-test igual a "titulo-cartoes", mas não está conseguindo localizá-lo no DOM. Isso pode estar acontecendo por alguns motivos:

  1. Verificação Prematura: O teste pode estar tentando verificar a existência do elemento antes que a página tenha terminado de carregar ou antes que a navegação para a página de cartões esteja completa. Isso é comum em testes end-to-end onde as transições de página podem levar algum tempo.

  2. Seleção Incorreta do Link: Se o link que está sendo clicado não leva à página de cartões como esperado, o teste não encontrará o elemento "titulo-cartoes". Isso pode acontecer se o índice usado no método eq() estiver incorreto ou se a página tiver elementos dinâmicos que alteram a ordem dos links.

Vamos tentar ajustar o teste para garantir que estamos na página correta e que o teste aguarda adequadamente pelo carregamento dos elementos. Aqui estão algumas sugestões:

  • Aguardar Explicitamente: Uma boa prática é aguardar explicitamente por um elemento que confirme que a página foi carregada ou que a ação anterior foi concluída antes de prosseguir para o próximo passo. Você pode usar cy.wait() para aguardar um número específico de milissegundos, ou melhor, usar .should() para aguardar até que um elemento específico esteja visível.

  • Verificar a URL: Após clicar no link, você pode adicionar uma verificação para confirmar que a URL está correta. Isso ajuda a garantir que a navegação ocorreu como esperado.

Aqui está como você poderia ajustar seu teste:

describe('Acessando múltiplas páginas', () => {
    it('Acessar página de cartões', () => {
        cy.visit('/')
        cy.getByData('botao-login').click()
        cy.getByData('email-input').type('emi.stutz86@gmail.com')
        cy.getByData('senha-input').type('123456')
        cy.getByData('botao-enviar').click()

        cy.getByData('app-home').find('a').eq(1).click()

        // Aguardar a navegação e verificar a URL
        cy.url().should('include', '/cartoes') // Substitua '/cartoes' pela URL correta da página de cartões

        // Agora verifique se o título 'Meus cartões' está presente
        cy.getByData('titulo-cartoes').should('exist').and('have.text', 'Meus cartões')
    })
})

Essa abordagem deve ajudar a garantir que o teste esteja verificando a condição correta no momento certo. Lembre-se de substituir '/cartoes' pela URL correta que você espera que seja a da página de cartões.

Espero ter ajudado e bons estudos!