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.


Quer aprender automação de testes com Cypress na prática? Conheça meus cursos na Escola Talking About Testing, ou no Udemy.

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

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s