Cypress - testes web, open source e na moda
Cypress, Cypress… Esta framework tão falada nos dias de hoje, principalmente quando se fala em automação.
Mas afinal, que framework é esta? Para que serve? Qual a sua mais valia?
O que é?
O Cypress é uma framework para automação de testes, open-source e com foco em testes web e oferece uma experiência de teste completa e interativa, eficiente e intuitiva, tornando mais fácil a vida dos programadores e QAs.
Foi criada para facilitar a escrita e a execução de testes end-to-end (E2E), testes de integração e testes de unidade para aplicações web, simplificando e permitindo aprimorar o processo de criação, execução e manutenção de testes de UI, permitindo que os programadores e equipas de qualidade verifiquem a funcionalidade e a usabilidade das aplicações da web, de forma eficiente.
E quais são as suas principais características?
Arquitetura “tudo-em-um”
De instalação Simples, pois não requer a instalação de drivers adicionais. O Cypress é instalado como uma dependência de desenvolvimento via npm ou yarn.
Com uma configuração Rápida inicial simples, permitindo que os programadores e QAs comecem a escrever testes rapidamente.
Execução no mesmo loop de evento do browser
A velocidade e precisão com que o Cypress executa os testes diretamente no browser (no mesmo loop de eventos que a aplicação) faz com que os testes sejam mais rápidos e precisos.
Com o acesso completo ao DOM, permite interações e inspecções detalhadas.
Depuração/Debug eficiente
Dadas as ferramentas de desenvolvimento que tem, integra-se de forma eficaz com as ferramentas de programação do browser (o famoso F12), facilitando assim a depuração de testes.
Ao fornecer logs detalhados dos comandos e atividades durante a execução dos testes, permite uma maior rastreabilidade e eficiência.
Feedback instantâneo
Com uma execução em tempo real, é possível acompanhar as atualizações instantâneas na interface de teste à medida que os testes são executados, permitindo uma experiência interativa.
O acesso a relatórios visuais, com partilha de screenshots e gravações de vídeo dos testes executados, facilita a identificação de falhas.
Testes E2E, de integração e de unidade
Dada a sua versatilidade, permite a execução de testes E2E, testes de integração e testes de unidade, tudo no mesmo ambiente.
Automação e controlo da rede
Permite interceptar e manipular requisições na rede, através da simulação das respostas de APIs, para testar diversos cenários.
Permite também simular diferentes condições da rede, a fim de validar a testar a robustez da aplicação.
Suporte a testes de interface
Como oferece comandos para interagir com elementos da interface (como cliques, escrita, arrastar,…) ajuda a ter uma melhor e mais fiável execução dos testes, por uma perspectiva de utilizador.
Como tem uma sintaxe intuitiva, para fazer asserts sobre o estado da aplicação.
Ambiente de testes isolado
Cada teste é executado em um ambiente ‘limpo’ e isolado, de forma a garantir que os testes não interferem uns com os outros.
Suporta a execução de testes em paralelo, o que permite reduzir de forma eficiente o tempo de execução dos mesmos e também numa fase posterior uma integração mais subtil com os processos de CI/CD.
Suporte a múltiplos browsers
Como é uma framework para testes web, é compatível com Chrome, Firefox, Edge, entre outros..
Framework agnóstica
Ou seja, funciona bem com uma variedade de frameworks JavaScript modernos, como React, Angular, Vue, tornando-se assim uma ferramenta versátil para que utilizam diferentes stacks tecnológicos, como as equipas de desenvolvimento..
Comparação com Outras Ferramentas
Cypress vs. Selenium
Configuração e Uso:
Cypress: Mais fácil de configurar e usar, com uma configuração simples através da instalação via npm e execução direta no browser.
Selenium: Requer configuração de drivers específicos para cada browser, o que pode ser mais complexo.
Execução de Testes:
Cypress: Executa testes em paralelo, permitindo ter testes mais rápidos e uma experiência de desenvolvimento mais fluida.
Selenium: Executa testes fora do browser, o que pode resultar em tempos de execução mais lentos e maior complexidade de debug.
Funcionalidades:
Cypress: Oferece uma interface de debug mais competa e fácil de usar, com ferramentas de programação integradas.
Selenium: Menos foco em debug interativo, exigindo mais configuração manual para funcionalidades avançadas.
Cypress vs. Playwright
Suporte a browsers:
Cypress: Principalmente focado no Chrome e no Edge, com suporte recente para Firefox.
Playwright: Suporte robusto para Chrome, Firefox e Safari, oferecendo uma maior flexibilidade para testes em múltiplos browsers.
Execução e Depuração:
Cypress: oferece uma interface de utilizador bastante intuitiva e completa para a execução e debug de testes.
Playwright: Embora tenha uma interface em linha de comandos e uma ferramentas de depuração, é mais focado no suporte abrangente a múltiplos browsers e testes paralelos.
Facilidade de Uso:
Cypress: APIs intuitivas e documentação abrangente tornam-no muito acessível para programadores e QAs.
Playwright: Também é considerado fácil de usar, mas pode exigir uma configuração inicial mais complexa, dependendo da sua aplicação.
Onde usar?
Testes de Funcionalidade:
Verificação de que todos os recursos e funcionalidades de uma aplicação web estão a funcionar conforme o esperado.
Testes de Navegação:
Garantir que os links, botões e redirecionamentos do site funcionam corretamente e que os utilizadores navegam pelo site de forma eficaz.
Testes de Preenchimento de Formulários:
Verificar se os formulários web podem ser preenchidos corretamente, enviar dados e lidar com validações.
Testes de Responsividade:
Avaliar como a aplicação se comporta em diferentes tamanhos de ecrã e dispositivos, garantindo que a interface é user-friendly em dispositivos móveis, tablets e computadores.
Testes de Integração:
Testar a integração entre componentes ou serviços da aplicação, para garantir que cooperam e comunicam adequadamente.
Testes de Usabilidade:
Avaliar a usabilidade da interface do utilizador, verificando se as suas ações podem ser realizadas de maneira intuitiva e sem problemas.