Cypress vs Selenium
Não é mais novidade que o processo de automação de testes de software, se bem planejado, desenvolvido e executado, permite a redução dos esforços empregados em testes manuais e auxilia na garantia da qualidade dos sistemas e aplicativos onde são implantados. Todavia, testes automatizados podem consumir um tempo considerável para serem desenvolvidos, o que acaba inviabilizando a construção destes em ambientes ágeis, Cypress e Selenium são ferramentas de automação de teste usadas para testes funcionais de aplicativos da Web, automatizando as ações do navegador. O Selenium tem sido uma ferramenta amplamente utilizada há anos, enquanto o Cypress é uma ferramenta introduzida recentemente na comunidade de teste.
Apesar do Cypress ter sido introduzido recentemente, ele ganhou força significativa. Com um crescimento tão significativo na adoção do Cypress, é natural que os testadores comparem os dois antes de escolher a ferramenta ideal para automação de testes.
O Cypress é uma alternativa melhor ao Selenium?

Uma maneira fácil de responder a essas perguntas é avaliar as vantagens e limitações de cada ferramenta.
Cypress:

O Cypress é uma ferramenta de teste de front-end puramente baseada em JavaScript, criada para a web moderna. Ele visa abordar os pontos problemáticos que os desenvolvedores ou engenheiros de controle de qualidade enfrentam ao testar um aplicativo. O Cypress é uma ferramenta mais amigável ao desenvolvedor que usa uma técnica de manipulação de DOM exclusiva e opera diretamente no navegador. O Cypress também fornece um executor de teste interativo exclusivo no qual executa todos os comandos.
A documentação oficial afirma que o Cypress difere fundamentalmente e arquitetonicamente em comparação com o Selenium.
Usando Cypress, QAs ou desenvolvedores podem criar:
- Testes unitários
- Testes de integração
- Testes automatizados end to end
Uma grande vantagem do uso do Cypress é que ele segue à risca o conceito de "All in one", ou seja, com o uso único e exclusivo dele, o desenvolvedor tem a sua disposição uma gama de ferramentas que possibilitam o desenvolvimento, a execução e a visualização de relatórios dos testes automatizados.

Diferentemente do Selenium, que opera fora do navegador executando comandos remotos para interagir com as páginas a serem testadas, o Cypress executa no mesmo loop de execução do navegador, permitindo então acesso a comandos nativos. Da mesma forma, por estar instalado na máquina onde está sendo utilizado, a ferramenta é capaz de acessar alguns recursos da própria máquina. Cypress também consegue interagir com o tráfego da rede, podendo ler e manipular os dados recebidos e enviados, ampliando o leque de possibilidades desta ferramenta. Pode-se entender que o Cypress controla todo o processo de automação, de cima para baixo, sendo capaz de entender e, de certa forma, manipular tudo o que acontece dentro e fora do navegador.
Cypress é também capaz de executar testes em uma quantidade considerável de navegadores e suas diferentes versões, tais como o Chrome, Chrome Beta, Chrome Canary, Chromium, Edge, Firefox, entre outros.
Vantagens do Cypress:
- O Cypress captura screenshorts instantâneos no momento da execução do teste. Isso permite que QAs ou desenvolvedores, analisem facilmente os log's e os comando inserido a cada step de teste.
- Não é necessário adicionar comandos de espera explícitos ou implícitos em scripts de teste, ao contrário do Selenium. Cypress espera automaticamente por comandos e afirmações.
- Desenvolvedores ou QAs podem usar Spies, Stubs e Clocks para verificar e controlar o comportamento das respostas, funções ou cronômetros do servidor.
- A operação de rolagem automática garante que um elemento esteja visível antes de executar qualquer ação (por exemplo, clicar em um botão)
- Anteriormente, o Cypress suportava apenas testes do Chrome. No entanto, com atualizações recentes, o Cypress agora oferece suporte para os navegadores Firefox e Edge.
- À medida que o automatizador escreve comandos, o Cypress os executa em tempo real, fornecendo feedback visual à medida que são executados.
Limitações do Cypress:
- Não é possível usar o Cypress para controlar dois navegadores ao mesmo tempo.
- Ele não fornece suporte para várias abas.
- Cypress suporta apenas JavaScript e TypeScript para criar casos de teste.
- Cypress não oferece suporte para navegadores como Safari e IE no momento.
Selenium:

O Selenium é uma ferramenta popular de automação de teste que automatiza os navegadores da web. Essa ferramenta de código aberto tem sido a principal escolha dos testadores há mais de uma década.
Ele permite que os QAs automatizem os casos de teste para o navegador desejado usando a biblioteca Selenium WebDriver junto com uma estrutura específica da linguagem. Baixe o driver específico do navegador antes de começar a automação do navegador.
Os desenvolvedores e QAs também têm a flexibilidade de escolher a linguagem de programação de sua preferência. Os desenvolvedores do Selenium desenvolveram ligações de linguagem para vários idiomas, como Ruby, Python, Java, etc.
O WebDriver usa o protocolo de fio JSON que é uma especificação abstrata de como o comportamento de automação, como clicar ou digitar ou o que você realmente deseja fazer com seu script de automação, é mapeado para selênio ou appium ou solicitações e respostas HTTP. O protocolo assumirá que a API do WebDriver foi "achatada", mas há uma expectativa de que as implementações do cliente tenham uma abordagem mais orientada a objetos, conforme demonstrado na API Java existente. O protocolo de fio é implementado em pares de solicitação/resposta de "comandos" e "respostas".
Principais vantagens do Selenium:
- Compatível com vários sistemas operacionais, como Windows, Linux, Unix, Mac.
- Fornece aos QAs a flexibilidade de selecionar a linguagem de programação de sua escolha, como Java, Ruby, Python, etc.
- Compatível com navegadores modernos como Safari, Chrome, Firefox, etc.
Limitações do Selenium:
- Nenhum comando embutido para geração automática de resultados de teste.
- Lidar com carregamento de página ou carregamento de elemento é difícil.
- Suporte limitado para testar imagens.
- Criar casos de teste é demorado.
- Tempo maior para a configuração do ambiente de teste em comparação com o Cypress.