Back to all reviewers

Environment variable handling

cypress-io/cypress
Based on 4 comments
JavaScript

Environment variables should be properly validated, parsed, and documented with clear override mechanisms. Always validate that environment variable names are non-empty strings before processing. When parsing environment variable values, trim whitespace and remove surrounding quotes to handle cross-platform differences, especially on Windows where quotes...

Configurations JavaScript

Reviewer Prompt

Environment variables should be properly validated, parsed, and documented with clear override mechanisms. Always validate that environment variable names are non-empty strings before processing. When parsing environment variable values, trim whitespace and remove surrounding quotes to handle cross-platform differences, especially on Windows where quotes may be preserved. Provide meaningful override mechanisms using descriptive environment variable names rather than hardcoding values.

Example of proper environment variable handling:

function getEnv(varName, trim = false) {
  la(is.unemptyString(varName), 'expected environment variable name, not', varName)
  
  const envVar = process.env[varName]
  const configVar = process.env[`npm_config_${varName}`]
  
  let result = envVar || configVar
  
  // Handle Windows quote preservation and whitespace
  return trim ? dequote(_.trim(result)) : result
}

// Provide override mechanisms with descriptive names
if (process.env.CYPRESS_DOCKER_DEV_INSPECT_OVERRIDE) {
  argv.unshift(`--inspect-brk=${process.env.CYPRESS_DOCKER_DEV_INSPECT_OVERRIDE}`)
} else {
  argv.unshift('--inspect-brk=5566')
}

// Platform-specific environment setup
function getOpenModeEnv() {
  if (os.platform() !== 'linux') return
  
  // Document why this environment variable is needed
  return { GTK_USE_PORTAL: '1' }
}

This approach ensures configuration is flexible, well-documented, and handles cross-platform differences gracefully while providing clear override paths for different deployment scenarios.

4
Comments Analyzed
JavaScript
Primary Language
Configurations
Category

Source Discussions