Hoje em “pitadas de Cypress“, aprenda como executar testes em modo headless
Após instalar o Cypress, é possível rodar o comando cypress open
para rodar testes em modo interativo, onde você pode assistir os testes executando, além de usar as funcionalidades de time-travel e automatic reload.
Porém, depois que os testes estão prontos, queremos poder executá-los de forma automática a cada mudança de código na aplicação em teste, tal como na criação e atualização de pull requests, após o merge para o ramo principal, ou mesmo após deployments em produção.
A parte boa é que além de poderosa, o Cypress é uma ferramenta simples.
Para executar os testes em modo headless, basta utilizar o comando cypress run
.
Além disso, digamos que você queira executar somente um arquivo específico, você pode passá-lo como argumento ao comando cypress run
(veja abaixo).
cypress run --spec cypress/integration/exemplo.spec.js
Obs.: É necessário prefixar os comandos acima com npx
aos executá-los localmente, caso estes não sejam npm scripts.
Obs.2: É recomendado criar npm scripts no arquivo package.json
com atalhos para a execução de tais comandos. Veja um exemplo abaixo.
{ "name": "projeto-exemplo", "version": "1.0.0", "description": "Projeto exemplo para publicação na série pitadas de Cypress", "main": "index.js", "scripts": { "test": "cypress run" }, "keywords": ['cypress.io', 'testing', 'cypress'], "author": "Walmyr Filho <wlsf82@gmail.com> (https://walmyr.dev)", "license": "MIT", "devDependencies": { "cypress": "^6.4.0" } }
Com o script test
acima, em vez de executar npx cypress run
no terminal, você pode executar somente npm test
, ou npm t
.
E você pode ter quantos scripts quiser. Por exemplo:
"scripts": { "cypress:open": "cypress open", "cypress:ci": "cypress run", "cypress:smoke-test": "cypress run --spec cypress/integration/smoke-test.spec.js" },
E para executar os scripts acima, basta rodar npm run cypress:open
, npm run cypress:ci
, ou npm run cypress:smoke-test
.
E aí, gostou?
Aguardo teu feedback.
Este conteúdo foi traduzido para inglês e pode ser encontrado no DEV Community.
Ficou curioso(a) e quer aprender mais sobre automação de testes com Cypress? Conheça meus cursos no Udemy.
- Cypress básico
- Cypress intermediário
- Cypress avançado
- Boas práticas em automação de testes com Cypress
- Testes end-to-end com Cypress
Bons testes! 🎉
Walmyr, eu consigo executar os arquivos de teste (.spec) na ordem que eu desejar?
ex: tenho dentro da pasta “Integration”
arquivo1.spec.js
arquivo2.spec.js
arquivo3.spec.js
e quando executo via cypress:ci quero que ele execute na sequencia de arquivo ex: 3 1 2?
Diego, qual o motivo de você precisar executar os testes em uma determinada ordem?
Testes automatizados devem ser independentes uns dos outros, e portanto, a ordem não deve importar.
Se seus testes são dependentes de uma certa ordem, o que você precisa é entender o que precisa para torná-los independentes e deixar de seguir tal má-prática. O quanto antes lidar com isso, mais cedo irá “colher os frutos”.
Ola, sera q poderiam me ajudar? Precisei fazer um teste dinamico onde preciso ver todos os status sejam 200 ou 500, no caso de 500 quero mandar pro slack. Mas o q quero saber msm por enquanto é como fazer isso aparecer no console enquando roda em cypress run?
Oi Priscila, quem sabe essa parte da documentação oficial do Cypress te ajude https://docs.cypress.io/guides/references/troubleshooting#Log-sources.
Fala Walmyr tudo beleza?
Gostaria de entender, é possível que eu teste todos os arquivos de uma pasta desejada?
utilizo o novo Cypress onde a pasta é chamada de e2e
quero pegar uma pasta especifica que criei ex
e2e/informes.
e testar apenas os arquivos dessa pasta, é possível?
\Grato!
Oi Raphael, tudo bem e por aí?
É possível sim, basta executar o seguinte comando: npx cypress run –spec ‘cypress/e2e/informes’
Aproveito pra recomendar a seguinte live no YouTube, onde demonstrei algo neste sentido, para a execução de testes em paralelo. Espero que goste.
Muito obrigado!!
Infelizmente ocorreu algum erro para a reprodução do seu video, mas procuro no canal depois.
por fim eu dei uma lida na doc e fiz quase da mesma forma que vc informou acima.
utilizei o `-s cypress/e2e/informes/*.cy.{js,jsx,ts,tsx} `
Muito obrigado novamente pela ajuda!
Fico feliz em tê-lo ajudado.
Fico feliz que conseguiu resolver.
Walmyr, boa tarde! Antes de fazer minha pergunta, parabéns pelo seus conteúdos e materiais sobre o Cypress, me ajuda muito no dia a dia. Gostaria de saber se conseguimos executar mais de 1 cenário por vez ? Ou se tem alguma indicação para melhorar os tempos de cenário. Agradeço dês de já, abraços.
Muito obrigado Yago!
Sobre sua pergunta, recomendo assitir a seguinte Live que fiz recentemente no canal Talking About Testing no YouTube https://www.youtube.com/live/c55rqjb53Sk?feature=share
Walmyr, bom dia tudo bem? De todos os meus testes um deu erro, como executo somente ele?
Oi Ricardo, tudo bem e com você?
Para rodar um único teste com Cypress, passa mudar o bloco it de it() para it.only()
Seria possível testar utilizando o Cypress com o java script do navegador desabilitado?
Não tenho ideia. A propósito, por qual motivo você faria isso?
Seria para realizar testes de SEO com o cypress
Hm, interessante. Recomendo tentar e descobrir.
Walmyr, estou implementando os testes em um projeto, existe uma forma de configurar o cypress para executar os testes automaticamente quando buildar o projeto? Desde já muito obrigado, e parabéns pelo excelente conteúdo!
Claro, aqui vai um projeto exemplo onde quando há mudanças no código (tanto dos testes como da aplicação em teste), um novo build da aplicação ocorre e então os testes são executados contra a mesma.
https://github.com/wlsf82/react-date-pickers-mui
Walmyr, acabei esquecendo de adicionar na dúvida, minha pergunta é se ele executa automaticamente no modo headless. Obrigado.
Sim, roda em modo headless.