Skip to main content

env | Cypress | Test & QA

  • env | Cypress | Test & QA

No Cypress, as environment variables (env) são usadas para configurar o comportamento dos testes, definir URLs, credenciais, tokens e flags de ambiente, sem precisar alterar o código dos testes.


🌱 O que é env no Cypress?

env é um mecanismo nativo do Cypress para armazenar valores de ambiente globais, acessíveis em qualquer spec, hook ou comando.

Acesso

Cypress.env('apiUrl')

⚙️ Formas de definir env

1️⃣ cypress.config.js

Forma mais comum para configurações padrão.

const { defineConfig } = require('cypress')

module.exports = defineConfig({
e2e: {
env: {
apiUrl: 'https://api.meusistema.com',
environment: 'qa'
}
}
})

Uso:

cy.request(`${Cypress.env('apiUrl')}/health`)

2️⃣ cypress.env.json

Ideal para dados sensíveis (senhas, tokens).

{
"user": "admin",
"password": "123456"
}

📌 Boa prática: adicionar esse arquivo no .gitignore.


3️⃣ Variáveis de ambiente do sistema

Muito usado em pipelines de CI/CD.

export CYPRESS_apiUrl=https://api.qa.com
export CYPRESS_user=admin

Uso:

Cypress.env('apiUrl')

4️⃣ Linha de comando

Permite sobrescrever valores dinamicamente.

npx cypress run --env environment=prod

Uso:

Cypress.env('environment') // prod

🔄 Ordem de prioridade

Quando a mesma variável existe em mais de um lugar, o Cypress usa a seguinte ordem:

  1. Linha de comando
  2. Variáveis do sistema (CYPRESS_*)
  3. cypress.env.json
  4. cypress.config.js

🧪 Usando env nos testes

Exemplo com múltiplos ambientes

const env = Cypress.env('environment')

const apiUrls = {
dev: 'https://api.dev.com',
qa: 'https://api.qa.com',
prod: 'https://api.com'
}

cy.request(`${apiUrls[env]}/login`)

Exemplo com autenticação

cy.request({
method: 'POST',
url: `${Cypress.env('apiUrl')}/login`,
body: {
user: Cypress.env('user'),
password: Cypress.env('password')
}
})

🔐 Boas práticas

✅ Use env para:

  • URLs
  • Tokens
  • Credenciais
  • Flags de ambiente (dev, qa, prod)

❌ Evite:

  • Hardcode de dados sensíveis
  • Logar env sensíveis com cy.log

⚠️ Atenção

  • Cypress.env() não é reativo
  • Alterações em runtime afetam apenas a execução atual
  • Valores de env não persistem entre execuções diferentes

📌 Resumo rápido

ItemDescrição
envVariáveis globais do Cypress
cypress.config.jsConfiguração padrão
cypress.env.jsonDados sensíveis
CYPRESS_*CI/CD
CLI --envSobrescrever valores