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.
Quer aprender automação de testes com Cypress na prática? Conheça meus cursos na Escola Talking About Testing, ou no Udemy.
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()