1
resposta

[Dúvida] Dúvida sobre cy.get('.header__message').click()

Fiz a automação do exercício 5 de duas formas, quando eu peço para clicar no elemento "cy.get('.card__contact').first().click()" ela passa com SUCESSO, porém quando eu peço para clicar no elemento "cy.get('.header__message').click()" visualmente na execução ele para na HOME logada e não direciona para o formulário de contato, alguém pode me explicar o por quê, por favor?

Segue abaixo os prints:

Código:

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

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

1 resposta

Olá Renato, tudo bem?

Fiz alguns testes para entender melhor o porquê esse erro estava acontecendo, até que cheguei a conclusão que o seu teste não está esperando o login ser realizado corretamente para tentar acessar a página de mensagens.

Então, para garantir que você possa clicar no elemento .header__message após o login e o Cypress aguarde corretamente a conclusão do login, você deve adicionar uma verificação explícita para garantir que a página esteja carregada corretamente antes de clicar no ícone novamente.

describe('Visite a página de /home do AdoPet e clique no botão "Falar com o responsável"', () => {
    it('Validar o direcionamento para a página "Falar com o responsável"', () => { 
        cy.visit('https://adopet-frontend-cypress.vercel.app/');
        cy.contains('h3', 'Boas-vindas!');
        cy.get('.header__message').click();
        cy.contains('p', 'Já tem conta? Faça seu login:');
        cy.get('[id="email"]').type('rogerio.mota@sharklasers.com');
        cy.get('[id="pass"]').type('Teste123@');
        cy.get('[data-test="submit-button"]').click();

        // Aguarda até que a navegação pós-login tenha ocorrido
        cy.url().should('include', '/home'); // Verifique que a URL inclua '/home' ou outra URL esperada pós-login

        // Aguarda até que o ícone 'header__message' esteja visível e clicável novamente
        cy.get('.header__message', { timeout: 10000 }).should('be.visible').click();

        // Valida a mensagem na página
        cy.contains('p', 'Envie uma mensagem para a pessoa ou instituição que está cuidado do animal:');
    });
});

Ajustes aplicados:

  1. cy.url().should('include', '/home');: Esta linha adiciona uma verificação para garantir que a navegação pós-login tenha ocorrido corretamente e que a URL inclua '/home' ou outra parte esperada da URL pós-login. Ajuste o valor conforme necessário para corresponder à URL correta.

  2. cy.get('.header__message', { timeout: 10000 }).should('be.visible').click();: Aguarda até 10 segundos para que o ícone header__message esteja visível antes de clicar novamente.

Essas modificações garantem que o Cypress espere corretamente a conclusão do login e a navegação subsequente antes de tentar clicar no ícone .header__message novamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.