The cypress.config.js file manages settings for different environments and browsers.
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
baseUrl: 'https://staging.example.com',
specPattern: 'cypress/e2e/**/*.cy.js',
supportFile: 'cypress/support/e2e.js',
setupNodeEvents(on, config) {
// Add plugins or event listeners here
},
env: {
username: 'testuser',
password: 'securePass123'
},
defaultCommandTimeout: 8000,
pageLoadTimeout: 60000,
retries: {
runMode: 2,
openMode: 0
},
viewportWidth: 1280,
viewportHeight: 720,
video: true,
screenshotsFolder: 'cypress/screenshots',
videosFolder: 'cypress/videos'
}
})
Key points:
baseUrl sets the main URL for tests, easy to switch for dev, staging, prod.env stores sensitive or variable data like usernames, passwords.retries helps tests rerun on failure to reduce flaky results.setupNodeEvents is for plugins or custom event handling.- Timeouts control how long Cypress waits for commands or page loads.