var sauceLabsConfig = {
    testName: 'pywb Client Tests',
};

// see https://github.com/karma-runner/karma-sauce-launcher/issues/73
if (process.env.TRAVIS_JOB_NUMBER) {
    sauceLabsConfig.startConnect = false;
    sauceLabsConfig.tunnelIdentifier = process.env.TRAVIS_JOB_NUMBER;
}

var WOMBAT_JS_PATH = 'pywb/static/wombat.js';

var sauceLaunchers = {
    sl_chrome: {
        base: 'SauceLabs',
        browserName: 'chrome',
    },

    sl_firefox: {
        base: 'SauceLabs',
        browserName: 'firefox',
    },

    sl_safari: {
        base: 'SauceLabs',
        browserName: 'safari',
        platform: 'OS X 10.11',
        version: '9.0',
    },

    sl_edge: {
        base: 'SauceLabs',
        browserName: 'MicrosoftEdge',
    },
};

var localLaunchers = {
    localFirefox: {
        base: 'Firefox',
    },
};

var customLaunchers = {};

if (process.env['SAUCE_USERNAME'] && process.env['SAUCE_ACCESS_KEY']) {
    customLaunchers = sauceLaunchers;
} else {
    console.error('Sauce Labs account details not set, ' +
                  'Karma tests will be run only against local browsers.' +
                  'Set SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables to ' +
                  'run tests against Sauce Labs browsers');
    customLaunchers = localLaunchers;
}

module.exports = function(config) {
  config.set({
    basePath: '../',

    frameworks: ['mocha', 'chai'],

    files: [
      {
        pattern: WOMBAT_JS_PATH,
        watched: true,
        included: false,
        served: true,
      },
      {
        pattern: 'karma-tests/dummy.html',
        included: false,
        served: true,
      },
      'karma-tests/*.spec.js',
    ],

    preprocessors: {},

    reporters: ['progress'],

    port: 9876,

    colors: true,

    logLevel: config.LOG_INFO,

    autoWatch: true,

    sauceLabs: sauceLabsConfig,

    // Set extended timeouts to account for the slowness
    // in connecting to remote browsers (eg. when using
    // Sauce Labs)
    //
    // See https://oligofren.wordpress.com/2014/05/27/running-karma-tests-on-browserstack/
    captureTimeout: 3 * 60000,
    browserNoActivityTimeout: 30 * 1000,
    browserDisconnectTimeout: 10 * 1000,
    browserDisconnectTolerance: 1,

    customLaunchers: customLaunchers,

    browsers: Object.keys(customLaunchers),

    singleRun: false,

    concurrency: Infinity
  })
};