Cypress e Boas Práticas de Automação

By: Kellen Xavier
Posted: June 05, 2025

Evitando o uso de Falsos Positivos, em uma automação e2e com Cypress.

Segue abaixo um exemplo de código, um arquivo commands com um simples login na aplicação:

An image from Notion

Essa aplicação estava ocorrendo um certo erro ao realizar o login, e foi adicionado o seguinte trecho de código na automação para poder realizar o login com sucesso:

An image from Notion

Mas o que esse trecho diz? serve para suprimir erros que ocorrem na aplicação durante a execução dos testes do Cypress.

Como assim? Ao usar cy.on('uncaught:exception') e retornar false, está instruindo o Cypress a ignorar qualquer erro que ocorra na sua aplicação. Isso permite que o teste continue mesmo que a página ainda não esteja totalmente carregada, dando tempo para que os elementos sejam renderizados antes que o Cypress tente interagir com eles.

Por que remover cy.on('uncaught:exception') é importante? Nesse caso, como está sendo manipulado o teste, forçando a “ignorar esse erro retornando que ele seja falso” é adicionado um falso positivo no nosso teste. Veja:

An image from Notion

Alternativas e soluções para lidar com o tempo de carregamento e evitar adicionar “falso positivo”

Em vez de suprimir erros, deve-se usar as ferramentas do Cypress para garantir que os elementos estejam presentes e prontos para interação antes de tentar acessá-los. Algumas opções incluem:

cy.wait(): Aguarde um determinado tempo ou até que um elemento ou condição específica seja atendida antes de prosseguir com o teste.

OBS: cuide as más práticas ao usar o comando cy.wait(número) ,leia a documentação sobre Anti-Pattern

aqui

Em vez disso, use:

cy.intercept('GET', '/users', [{ name: 'Maggy' }, { name: 'Joan' }]).as('getUsers')
cy.get('[data-testid="fetch-users"]').click()
cy.wait('@getUsers') // <--- wait explicitly for this route to finish

cy.get(...).should('exist') ou cy.get(...).should('be.visible')

Certifique-se de que o elemento existe e está visível na página antes de tentar interagir com ele.