function prepareConfig()

in dev-utils/karma.js [109:192]


function prepareConfig(config, packageName) {
  const globalConfig = getGlobalConfig(packageName)
  console.log('Global test Configuration: ', globalConfig)
  const { agentConfig, testConfig } = globalConfig

  const { isCI, sauceLabs: isSauce } = testConfig
  let buildId = `ApmJs-${agentConfig.name}`

  if (isCI) {
    console.log('prepareConfig: Run in Jenkins')
    buildId =
      buildId +
      ' - Jenkins #' +
      process.env.BUILD_NUMBER +
      ' (' +
      process.env.BRANCH_NAME +
      ') Elastic Stack ' +
      process.env.STACK_VERSION +
      ' Scope ' +
      process.env.SCOPE

    config.plugins.push('karma-chrome-launcher')

    if (!isSauce) {
      config.browsers = ['ChromeHeadlessNoSandbox']
      config.customLaunchers = {
        ChromeHeadlessNoSandbox: {
          base: 'ChromeHeadless',
          flags: [
            '--no-sandbox', // required to run without privileges in docker
            '--user-data-dir=/tmp/chrome-test-profile',
            '--disable-web-security'
          ]
        }
      }
    }
    config.plugins.push('karma-junit-reporter')
    config.reporters.push('junit')
    config.junitReporter = {
      outputDir: 'reports'
    }
  } else {
    console.log('prepareConfig: Run in Default enviroment')
    config.plugins.push('karma-chrome-launcher')
    config.browsers.push('Chrome')
  }

  /**
   *  Add coverage reports and plugins required for all environments
   */
  if (config.coverage) {
    config.plugins.push('karma-coverage', 'karma-coverage-istanbul-reporter')
    config.reporters.push('coverage')
    if (config.webpack) {
      const babelPlugins = config.webpack.module.rules[0].options.plugins
      babelPlugins.push('istanbul')
    }
    config.coverageReporter = {
      includeAllSources: true,
      reporters: [
        { type: 'cobertura', file: 'coverage-' + buildId + '-report.xml' },
        { type: 'lcov' },
        { type: 'text-summary' }
      ],
      dir: 'coverage/'
    }
  }

  if (isSauce) {
    console.log('prepareConfig: Run in SauceLab mode')
    config.sauceLabs.build = buildId
    console.log('saucelabs.build:', buildId)
    if (isCI) {
      config.sauceLabs.tags = [testConfig.branch, process.env.STACK_VERSION]
    } else if (testConfig.branch === 'main') {
      config.sauceLabs.tags = [testConfig.branch]
    }
    config.reporters.push('dots', 'saucelabs')
    config.browsers = Object.keys(config.customLaunchers)
    config.transports = ['polling']
  }

  return config
}