text: 'use strict';
  
  
  
  var ip = require('ip');
  
  var browserConfig = require('./browsers');
  
  var browserStack = process.env.BROWSER === 'true';
  
  
  
  module.exports = function (config) {
  
    var conf = {
  
      basePath: '../',
  
      frameworks: ['qunit'],
  
      plugins: ['karma-qunit'],
  
      // list of files / patterns to load in the browser
  
      files: [
  
        'js/tests/vendor/jquery.min.js',
  
        'js/tooltip.js',
  
        'js/!(tooltip).js',
  
        'js/tests/unit/*.js'
  
      ],
  
      reporters: ['dots'],
  
      port: 9876,
  
      colors: true,
  
      // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
  
      logLevel: config.LOG_ERROR || config.LOG_WARN,
  
      autoWatch: false,
  
      singleRun: true,
  
      concurrency: Infinity,
  
      client: {
  
        qunit: {
  
          showUI: true
  
        }
  
      }
  
    };
  
  
  
    if (browserStack) {
  
      conf.hostname = ip.address();
  
      conf.browserStack = {
  
        username: process.env.BROWSER_STACK_USERNAME,
  
        accessKey: process.env.BROWSER_STACK_ACCESS_KEY,
  
        build: 'bootstrap-v3-' + new Date().toISOString(),
  
        project: 'Bootstrap v3',
  
        retryLimit: 1
  
      };
  
      conf.plugins.push('karma-browserstack-launcher');
  
      conf.customLaunchers = browserConfig.list;
  
      conf.browsers = browserConfig.keys;
  
      conf.reporters.push('BrowserStack');
  
    } else {
  
      conf.frameworks.push('detectBrowsers');
  
      conf.plugins.push(
  
        'karma-chrome-launcher',
  
        'karma-firefox-launcher',
  
        'karma-detect-browsers'
  
      );
  
  
  
      conf.detectBrowsers = {
  
        usePhantomJS: false,
  
        postDetection: function (availableBrowser) {
  
          if (typeof process.env.TRAVIS_JOB_ID !== 'undefined' || availableBrowser.includes('Chrome')) {
  
            return ['ChromeHeadless'];
  
          }
  
  
  
          if (availableBrowser.includes('Firefox')) {
  
            return ['FirefoxHeadless'];
  
          }
  
  
  
          throw new Error('Please install Firefox or Chrome');
  
        }
  
      };
  
  
  
      conf.customLaunchers = {
  
        FirefoxHeadless: {
  
          base: 'Firefox',
  
          flags: ['-headless']
  
        }
  
      };
  
    }
  
  
  
    config.set(conf);
  
  };
  
  