let webpackConfig = require('./webpack.config.js');
Object.assign(webpackConfig, {
    entry: undefined,
    output: undefined,
    optimization: undefined,
    plugins: undefined,
    devtool: 'inline-source-map'
});

// 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: 'front/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: {
            './front/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: ['ChromeNoSandboxHeadless'],

        // 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-junit-reporter',
            'karma-sourcemap-loader'
        ],

        customLaunchers: {
            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'
                ]
            },
            FirefoxHeadless: {
                base: 'Firefox',
                flags: ['-headless']
            },
            ChromiumHeadless: {
                base: 'Chromium',
                flags: [
                    '--no-sandbox',
                    '--headless',
                    '--disable-gpu',
                    '--remote-debugging-port=9222'
                ]
            }
        }
    };

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

    if (config.junit) {
        Object.assign(baseConfig, {
            singleRun: true,
            reporters: ['dots', 'junit'],
            junitReporter: {
                outputFile: 'junitresults.xml'
            }
        });
    }

    config.set(baseConfig);
};