What if you never had to edit your test code just to switch servers again?
Why Environment variables for configuration in Cypress? - Purpose & Use Cases
Imagine you have to test the same website on different servers: development, staging, and production. Every time you switch, you open your test code and change URLs and credentials manually.
This manual change is slow and easy to forget. You might run tests against the wrong server by mistake, causing confusion and wasted time. It's also hard to share tests with teammates because everyone needs to update settings themselves.
Environment variables let you store configuration like URLs and secrets outside your test code. You just tell Cypress which environment to use, and it picks the right settings automatically. This keeps tests clean, safe, and easy to run anywhere.
const baseUrl = 'https://dev.example.com'; // change manually for each environment
const baseUrl = Cypress.env('BASE_URL'); // set once per environmentEnvironment variables make your tests flexible and error-proof, so you can run the same tests anywhere without changing code.
A QA team runs tests every night on the staging server by setting environment variables in their CI tool, avoiding manual edits and catching bugs early.
Manual config changes are slow and risky.
Environment variables keep settings outside code.
This makes tests safer, cleaner, and easier to share.
Practice
Solution
Step 1: Understand environment variables role
Environment variables store configuration data separately from code.Step 2: Identify their use in Cypress
They allow changing test settings without modifying test scripts.Final Answer:
To configure tests without changing the test code -> Option AQuick Check:
Environment variables = configure tests without code change [OK]
- Confusing environment variables with test assertions
- Thinking environment variables locate page elements
- Assuming environment variables generate reports
API_URL inside a Cypress test?Solution
Step 1: Recall Cypress environment variable syntax
Cypress usesCypress.env('VAR_NAME')to access env variables.Step 2: Match the correct syntax
Only Cypress.env('API_URL') uses this correct method.Final Answer:
Cypress.env('API_URL') -> Option AQuick Check:
Access env vars with Cypress.env('VAR_NAME') [OK]
- Using Node.js process.env inside Cypress tests
- Trying to access env vars as plain variables
- Using incorrect function names like getEnv
cypress.config.js snippet:export default defineConfig({
env: {
USERNAME: 'testUser',
PASSWORD: 'pass123'
}
})What will
cy.log(Cypress.env('USERNAME')) print during test execution?Solution
Step 1: Check environment variable definition
USERNAME is set to 'testUser' in cypress.config.js under env.Step 2: Understand Cypress.env usage
Cypress.env('USERNAME') returns the value 'testUser'.Final Answer:
'testUser' -> Option CQuick Check:
Cypress.env('USERNAME') = 'testUser' [OK]
- Expecting the key name instead of the value
- Assuming undefined if not set in test file
- Thinking Cypress.env throws error if variable exists
const apiUrl = Cypress.env.API_URL; cy.visit(apiUrl);
But the test fails with
TypeError: Cannot read property 'API_URL' of undefined. What is the problem?Solution
Step 1: Identify how Cypress.env is accessed
Cypress.env is a function, not an object, so use parentheses and quotes.Step 2: Understand the error cause
Using dot notation like Cypress.env.API_URL causes undefined error.Final Answer:
You should useCypress.env('API_URL')instead ofCypress.env.API_URL-> Option DQuick Check:
Access env vars with Cypress.env('VAR_NAME') [OK]
- Using dot notation instead of function call
- Assuming env vars are properties, not accessed by function
- Ignoring error message details
cypress.config.js. Which command line option correctly sets the environment variable API_URL to https://api.test.com?Solution
Step 1: Understand command line env variable setting
Use--env VAR_NAME=valueto set env variables temporarily.Step 2: Identify correct command for running tests
cypress runruns tests in headless mode;--envsets env vars.Final Answer:
cypress run --env API_URL=https://api.test.com -> Option BQuick Check:
Use --env to set env vars on command line [OK]
- Using --config instead of --env for environment variables
- Trying to set env vars with cypress open command
- Confusing config options with env variables
Ready to prove it?
Pass the test and this pattern moves unknown
