- Ferramenta de auxílio à criação, configuração, execução e depuração de testes automatizados para aplicações modernas.
- É executado diretamente no browser, portanto é um processo servidor node, no qual temos acesso inclusive a ferramentas e ações do browser.
- Surgiu em meio à insatisfação de engenheiros de softwares e QAs devido às limitações do Selenium e a necessidade cada vez maior do time de QA com desenvolvedores. Agora os devs também se importam com toda a pirâmide de testes!
- Arquitetura do Selenium
- Limitações gerais do Selenium:
- Configuralçao para testes de acordo com o ambiente pode ser complexas.
- Pré-condições de testes pode ser difícil configuração.
- Não há geração automática de report.
- Problemas com uso de espera de elementos gerando testes não-confiáveis.
- Foco em testes E2E.
- Missão:
- Ecossistema open-source
- Aumento de produtividade
- Melhor experiência com testes
- Boa documentação
- Integração entre desenvolvedores + QA
- Público-alvo:
- Desenvolvedores (principalmente front-ends)
- Engenheiros de automação / QA
- Níveis de testes
- End-to-ende
- Performar ações via UI
- Componentes
- Testes em componentes front-end de bibliotecas conhecidads (React, Angular, Vue, Svelte)
- Integração/API
- Uso de chamadas HTTP
- Unidade
- End-to-ende
- Funcionalidades
- Time travel
- Depuração
- Espera automática
- Spies, Stubs and Clocks
- Controle de tráfego de rede
- Resultados consistentes
- Screenshots/Videos
- Cross-browsing
- Orquestração inteligente
- Detecção de testes não-confiáveis
- macOS 10.9 +
- Linux Ubuntu 12.04 | Fedora 21 | Debian 8 +
- Windows 7 +
- Node.js (14 / 16 / 18) -> usar versão LTS
- 4GB de memória RAM, no mínimo
- Criar projeto ->
npm init
- Acessar pasta do projeto
- Instalar o cypress com o seguinte commando ->
npm install cypress --save-dev
- Executando a aplicação ->
npx cypress open
- Adicionar o .gitignore do projeto -> dica: utilize o site https://www.toptal.com/developers/gitignore para gerar um template inicial
- Criar projeto git ->
git init
-
Guia de decisões e configurações para iniciar projetos de testes automatizados
- Tipos de testes a serem desenvolvidos
- E2E
- Components
- Configurações rápidas de inicialização
- Escolher um browser para executar testes de forma visual
- Selecionar o teste para execução
- Tipos de testes a serem desenvolvidos
-
Menu para trocar de browser
-
Menu de acesso à documentação
-
Opção para referência da versão do cypress sendo usada
-
Página de Specs
- Opção de criação de testes
-
Página de Configuração
- Configuração de projeto
- Configuração de dispositivo
- Configuração para integração com o Cypress Cloud
-
Página 'Runs' e 'Debug'
- Necessária integração com o Cypress Cloud para visualizar as execuções de testes gravadas em nuvem e visualizar execuções de testes e depurar problemas ocorridos em pipeline.
-
Abrindo o App
cypress open [options]
-
Executanto o teste sem UI
cypress run
- Alguns argumentos:
- --browser ou -b
- --config-file ou -C
- --env ou -e
- --help
- --spec
- --tag
- Alguns argumentos:
- cypress config
- cypress open
- cypress run
- cypress verify
- cypress cache
I - Devemos evitar uso de seletores facilmente mutáveis. II - Cypress recomenda o uso de data-cy, data-test ou test-id para identifcar os elementos. III - O cypress já possui um timeout padrão para os comandos IV - Sempre use os seletores mais simples possíveis, mesmo que vários elementos sejam encontrado a partir deles. V - É uma prática usar o intercept em testes com UI, pois podemos fazer asserções sobre o estado de requisições em uma situação de uso da interface e tornar os testes mais confiáveis.
- I, III e V
- I, II, III e V
- III, IV e V
- I e III
- Todas estão corretas
- As asserções são feitas sempres de forma encadeada.
- Para validações implícitas podemos usar o 'except'.
- Podemos usar .should() e then() no auxílio de validações mais complexas.
- É possível encadearmos para vários comandos .should().
- As asserções podem ser do tipo Chai, Chain-jQuery e Chai-Sinon, fornecendo uma gama de opções para os testes.
- Não podemos afirmar que o Cypress é melhor ou pior que o Selenium. Tudo depende do contexto de uso e da estratégia de automação.
- o Cypress possui muito mais vantagens que o Selenium, explicando porque o mercado está preferindo seu uso.
- O Cypress não exige conhecimento de programação, enquanto o Selenium exige grande conhecimento em Java.
- O Cypress foi feito para desenvolvedores enquanto o Selenium é feito para QAs.
- O Selenium é mais antigo que o Cypress, portanto ele é mais robusto e possui mais features.
- Para fazer asserções específicas a respeito de um elemento repassado pelo .get().
- Para compartilhar contexto em uma suíte de testes.
- Para auxíliar na validação de requisitos em testes de API.
- Para retomar requisições que foram interceptadas durante o teste.
- Para retomar elementos de forma a substituir o uso de variáveis.
06 - Quais tipos de testes o Cypress não viabiliza de forma padrão, ou seja, sem adições de plugins?
- Teste de performance
- Teste de unidade
- Teste de integração
- Teste E2E
- Teste de componentes
I - A abertura do Cypress App permite que a configuração inicial do projeto seja feita. II - É possível rodar cypress com vários browsers simultaneamente pela UI. III - Ao iniciarmos o App, o cypress pergunta se queremos configurar testes de unidade, compoenente ou E2E. IV - A interface gráfica permite que acessemos o DevTools do browser. V - É viável utilizar a UI do Cypress em todas as situações, pois ele é mais fácil de usar.
- I, II e V
- I e IV
- I, II e IV
- II e IV
- Todas estão incorretas
I - Cypress possui integrado jQuery, uma API que retorna os elementos procurados na página. II - A única forma de localizar os elementos da página com Cypress é através do CSS Selectors. III - Devido à sua natureza assíncrona, os comandos do cypress não retornam objetos, mas repassam os elementos para outro comando encadeado. IV - Os comandos possuem validações padrão, não sendo necessário uso de um 'assert' em todo comando. V- É possível fazer validações de forma implícita e explícita.
- [x F F V V V
- V F V V V
- F F V F V
- F V V F V
- V V V V V
- Executar testes
- Configurar testes
- Escrever testes em outras linguagens diferentes de JavaScript
- Escrever testes em JavaScript
- Depurar testes.