// BROWSER_BUNDLE_TEST is set for an un-browserified check that both bundles load correctly.
// BROWSER_BUNDLE_TEST is not set for the e2e unit tests, which check that bundle internals are ok.
function getTestFiles() {
    switch (process.env.BROWSER_BUNDLE_TEST) {
        case 'publishedDist':
            return ['packages/web3/dist/web3.min.js', 'test/e2e.minified.js'];
        case 'gitRepoDist':
            return ['dist/web3.min.js', 'test/e2e.minified.js'];
        default:
            return ['test/**/e2e*.js'];
    }
}

// Only loads browserified preprocessor for the logic unit tests so we can `require` stuff.
function getPreprocessors() {
    if (!process.env.BROWSER_BUNDLE_TEST) {
        return { 'test/**/e2e*.js': ['browserify'] };
    }
}

module.exports = function (config) {
    const configuration = {
        frameworks: ['mocha', 'browserify'],
        files: getTestFiles(),
        preprocessors: getPreprocessors(),
        plugins: [
            'karma-chrome-launcher',
            'karma-firefox-launcher',
            'karma-mocha',
            'karma-browserify',
            'karma-spec-reporter',
        ],
        reporters: ['spec'],
        port: 9876, // karma web server port
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: false,
        browsers: ['ChromeHeadless', 'FirefoxHeadless'],
    };

    config.set(configuration);
};