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:
- Linha de comando
- Variáveis do sistema (
CYPRESS_*) cypress.env.jsoncypress.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
envsensíveis comcy.log
⚠️ Atenção
Cypress.env()não é reativo- Alterações em runtime afetam apenas a execução atual
- Valores de
envnão persistem entre execuções diferentes
📌 Resumo rápido
| Item | Descrição |
|---|---|
env | Variáveis globais do Cypress |
cypress.config.js | Configuração padrão |
cypress.env.json | Dados sensíveis |
CYPRESS_* | CI/CD |
CLI --env | Sobrescrever valores |