The cypress.config.js file helps you set up how Cypress runs your tests. It controls things like the base website address and test behavior.
cypress.config.js settings
Introduction
Syntax
Cypress
const { defineConfig } = require('cypress') module.exports = defineConfig({ e2e: { baseUrl: 'https://example.com', supportFile: 'cypress/support/e2e.js', specPattern: 'cypress/e2e/**/*.cy.js', setupNodeEvents(on, config) { // event listeners here }, retries: 2, defaultCommandTimeout: 4000 }, video: true, screenshotsFolder: 'cypress/screenshots' })
Use defineConfig to get better editor support and validation.
The e2e section is for end-to-end test settings.
Examples
https://myapp.com.Cypress
module.exports = defineConfig({ e2e: { baseUrl: 'https://myapp.com' } })
Cypress
module.exports = defineConfig({ e2e: { retries: 1, defaultCommandTimeout: 5000 } })
Cypress
module.exports = defineConfig({ video: false, screenshotsFolder: 'my-screenshots' })
Sample Program
This config sets the base URL to Cypress example site, retries failed tests once, waits 3 seconds for commands, and enables video recording.
Cypress
const { defineConfig } = require('cypress') module.exports = defineConfig({ e2e: { baseUrl: 'https://example.cypress.io', retries: 1, defaultCommandTimeout: 3000, setupNodeEvents(on, config) { // no events for now } }, video: true })
Important Notes
Always restart Cypress after changing cypress.config.js to apply new settings.
Use relative paths for files and folders inside the config.
Keep your config simple and only add settings you need to avoid confusion.
Summary
cypress.config.js controls how Cypress runs tests.
Set baseUrl, timeouts, retries, and file locations here.
Use defineConfig for better support and clarity.
Practice
1. What is the main purpose of the
cypress.config.js file in a Cypress project?easy
Solution
Step 1: Understand the role of
This file is used to configure how Cypress runs tests, including settings like base URL and test file paths.cypress.config.jsStep 2: Differentiate from other files
Test cases are written in separate test files, not in the config file. Installation and running commands happen outside this file.Final Answer:
To set configuration options like base URL and test locations for Cypress tests -> Option AQuick Check:
Config file sets options = D [OK]
Hint: Config file sets test environment and paths [OK]
Common Mistakes:
- Confusing config file with test files
- Thinking config installs Cypress
- Believing config runs tests manually
2. Which of the following is the correct way to export the Cypress configuration using
defineConfig in cypress.config.js?easy
Solution
Step 1: Recall the modern Cypress config syntax
Since Cypress 10+, the config file usesdefineConfigand exports it as default with ES module syntax.Step 2: Check the correct structure
Thee2eobject wraps settings likebaseUrl. export default defineConfig({ e2e: { baseUrl: 'http://localhost:3000' } }) matches this pattern exactly.Final Answer:
export default defineConfig({ e2e: { baseUrl: 'http://localhost:3000' } }) -> Option DQuick Check:
Use defineConfig with export default = B [OK]
Hint: Use export default defineConfig({ e2e: { ... } }) [OK]
Common Mistakes:
- Forgetting to wrap settings inside e2e object
- Using CommonJS export instead of ES module
- Not using defineConfig function
3. Given this
cypress.config.js snippet, what will be the base URL used during test runs?
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
baseUrl: 'https://example.com',
specPattern: 'cypress/e2e/**/*.cy.js'
}
})medium
Solution
Step 1: Identify the baseUrl property in config
The config setsbaseUrlto 'https://example.com' inside thee2eobject.Step 2: Understand baseUrl usage
This URL is used as the root for all relative URLs in tests, so it will be 'https://example.com'.Final Answer:
https://example.com -> Option BQuick Check:
baseUrl set to https://example.com = C [OK]
Hint: Look for baseUrl inside e2e object [OK]
Common Mistakes:
- Confusing specPattern with baseUrl
- Assuming default localhost URL
- Missing that baseUrl is inside e2e
4. You wrote this
cypress.config.js but Cypress throws an error when running tests:
import { defineConfig } from 'cypress'
export default {
e2e: {
baseUrl: 'http://localhost:8080'
}
}
What is the likely cause of the error?medium
Solution
Step 1: Check the export syntax
The config is exported as a plain object, but Cypress expects the config wrapped indefineConfig().Step 2: Understand Cypress config requirements
WithoutdefineConfig, Cypress cannot properly parse the config, causing errors.Final Answer:
Missing call to defineConfig wrapping the config object -> Option CQuick Check:
Always wrap config in defineConfig() = A [OK]
Hint: Always wrap config object with defineConfig() [OK]
Common Mistakes:
- Placing baseUrl outside e2e
- Confusing export default with CommonJS
- Thinking baseUrl must be IP address
5. You want to set a custom environment variable
API_KEY in cypress.config.js so it can be accessed in your tests. Which is the correct way to add it inside the config?hard
Solution
Step 1: Locate where environment variables go
Environment variables for e2e tests go inside theenvobject nested within thee2econfig.Step 2: Verify correct property names
The key must beenv, notenvironment, and it must be insidee2e.Final Answer:
export default defineConfig({ e2e: { env: { API_KEY: '12345' } } }) -> Option AQuick Check:
Use e2e.env for env vars = A [OK]
Hint: Put env vars inside e2e.env object [OK]
Common Mistakes:
- Placing env outside e2e
- Using wrong key name like environment
- Adding env vars directly under e2e without env object
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
