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:opennpm 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.


Bons testes! 🎉

22 comentários em “Como rodar testes em modo headless com Cypress

  1. 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?

    1. 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”.

  2. 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?

  3. 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!

    1. 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.

      1. 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!

  4. 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.

  5. 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!

  6. Walmyr, acabei esquecendo de adicionar na dúvida, minha pergunta é se ele executa automaticamente no modo headless. Obrigado.

Deixe um comentário