var webpackConfig = require('./webpack.config.js');
delete webpackConfig.entry;
delete webpackConfig.output;
webpackConfig.devtool = 'inline-source-map';
webpackConfig.plugins = [];

// Karma configuration
// Generated on Tue Aug 22 2017 13:37:43 GMT+0200 (CEST)

module.exports = function(config) {
    let baseConfig = {

    // base path that will be used to resolve all patterns (eg. files, exclude)
        basePath: '',

    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
        frameworks: ['jasmine'],

    // list of files / patterns to load in the browser
        files: [
            {pattern: 'client/test_index.js', watched: false}
        ],

    // list of files to exclude
        exclude: [],

        webpack: webpackConfig,

        webpackMiddleware: {
            stats: 'errors-only'
        },

        webpackServer: {
            noInfo: true
        },

    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
        preprocessors: {
            './client/test_index.js': ['webpack', 'sourcemap']
        },

    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
        reporters: ['progress'],

    // web server port
        port: 9876,

    // enable / disable colors in the output (reporters and logs)
        colors: true,

    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        logLevel: config.LOG_INFO,

    // enable / disable watching file and executing tests whenever any file changes
        autoWatch: true,

    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
        browsers: [],

    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
        singleRun: false,

    // Concurrency level
    // how many browser should be started simultaneous
        concurrency: Infinity,

        plugins: [
            'karma-jasmine',
            'karma-webpack',
            'karma-chrome-launcher',
            'karma-firefox-launcher',
            'karma-sourcemap-loader'
        ],

        customLaunchers: {
            FirefoxHeadless: {
                base: 'Firefox',
                flags: ['-headless']
            },
            ChromeNoSandboxHeadless: {
                base: 'Chrome',
                flags: [
                    '--no-sandbox',
                    // See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
                    '--headless',
                    '--disable-gpu',
                    // Without a remote debugging port, Google Chrome exits immediately.
                    ' --remote-debugging-port=9222'
                ]
            }
        }
    };

    if (process.env.FIREFOX_BIN)
        baseConfig.browsers = ['FirefoxHeadless'];
    else
        baseConfig.browsers = ['ChromeNoSandboxHeadless'];

    config.set(baseConfig);
};