1
resposta

[Dúvida] Dúvida sobre

Consegui fazer a execução com sucesso conforme a aula, porém, tentei forçar um erro que não aconteceu.

Segue abaixo o meu código:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeEu comentei a linha 27 e imaginei que agora ele conseguiria logar, porém ainda apresentou o erro. Removi a linha 27 e ele ainda continuou tendo o mesmo resultado de teste do stub. Nesse caso ele não deveria logar com sucesso já que eu não estou mais chamando o "@stubPost" ?

Só foi possível logar com sucesso quando eu removi as linhas 5 e 6.

1 resposta

Olá Renato! Tudo bem?

Pelo que você descreveu, parece que o problema está relacionado ao comportamento do cy.intercept e como ele está sendo configurado no beforeEach.

Quando você comenta ou remove a linha 27 (cy.wait('@stubPost')), o teste ainda pode estar interceptando a requisição por causa da interceptação configurada no beforeEach. Isso ocorre porque o cy.intercept está sendo configurado para interceptar todas as requisições POST para a URL especificada, e isso acontece antes de cada teste.

Para resolver isso, você pode tentar duas abordagens:

  1. Remover a interceptação no beforeEach para o teste específico: Você pode configurar a interceptação apenas para os testes que precisam dela. Por exemplo, mova a configuração do cy.intercept para dentro do teste específico:

    it('Deve falhar mesmo que os campos sejam preenchidos corretamente', () => {
        cy.intercept('POST', 'https://adopet-api-i8qu.onrender.com/adotante/login', {
            statusCode: 400,
        }).as('stubPost');
        cy.login('rogerio.mota@sharklasers.com', 'Teste123@');
        cy.wait('@stubPost');
        cy.get('.error').should('contain', 'Falha no login. Consulte suas credenciais.');
    });
    
  2. Utilizar cy.intercept condicionalmente: Se você deseja manter a interceptação no beforeEach, pode adicionar uma condição para verificar se o teste específico precisa da interceptação:

    beforeEach(() => {
        cy.visit('https://adopet-frontend-cypress.vercel.app');
        cy.get('[data-test="login-button"]').click();
    
        if (Cypress.currentTest.title.includes('Deve falhar mesmo que os campos sejam preenchidos corretamente')) {
            cy.intercept('POST', 'https://adopet-api-i8qu.onrender.com/adotante/login', {
                statusCode: 400,
            }).as('stubPost');
        }
    });
    

Com essas abordagens, você deve conseguir controlar melhor quando a interceptação deve ocorrer e evitar que ela interfira em outros testes.

Espero ter ajudado e bons estudos!

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