text: /**
   * @author: @AngularClass
   */
  
  module.exports = function (config) {
    var testWebpackConfig = require('./webpack.test.js')({
      env: 'test'
    });
  
    var appBase = 'src/'; // transpiled app JS and map files
    var appSrcBase = appBase; // app source TS files
  
    // Testing helpers (optional) are conventionally in a folder called `testing`
    var testingBase = 'testing/'; // transpiled test JS and map files
    var testingSrcBase = 'testing/'; // test source TS files
  
    var configuration = {
  
      // base path that will be used to resolve all patterns (e.g. files, exclude)
      basePath: '',
  
      /*
       * Frameworks to use
       *
       * available frameworks: https://npmjs.org/browse/keyword/karma-adapter
       */
      frameworks: ['jasmine'],
  
      plugins: [
        require('karma-chrome-launcher'),
        require('karma-coverage'),
        require('karma-jasmine'),
        require('karma-jasmine-html-reporter'),
        require('karma-mocha-reporter'),
        require('karma-remap-coverage'),
        require('karma-sourcemap-loader'),
        require('karma-webpack')
      ],
  
      // list of files to exclude
      exclude: [],
  
      client: {
        builtPaths: [appBase, testingBase], // add more spec base paths as needed
        clearContext: false // leave Jasmine Spec Runner output visible in browser
      },
  
      /*
          client: {
            captureConsole: false
          },
      */
      /*
       * list of files / patterns to load in the browser
       *
       * we are building the test environment in ./spec-bundle.js
       */
      files: [{
          pattern: './config/spec-bundle.js',
          watched: false
        },
        {
          pattern: './src/assets/**/*',
          watched: false,
          included: false,
          served: true,
          nocache: false
        }
      ],
  
      /*
       * By default all assets are served at http://localhost:[PORT]/base/
       */
      proxies: {
        "/assets/": "/base/src/assets/"
      },
  
      /*
       * preprocess matching files before serving them to the browser
       * available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
       */
      preprocessors: {
        './config/spec-bundle.js': ['coverage', 'webpack', 'sourcemap']
      },
  
      // Webpack Config at ./webpack.test.js
      webpack: testWebpackConfig,
  
      coverageReporter: {
        type: 'in-memory'
      },
  
      remapCoverageReporter: {
        'text-summary': null,
        json: './coverage/coverage.json',
        html: './coverage/html'
      },
  
      // Webpack please don't spam the console when running in karma!
      webpackMiddleware: {
        // webpack-dev-middleware configuration
        // i.e.
        noInfo: true,
        // and use stats to turn off verbose output
        stats: {
          // options i.e. 
          chunks: false
        }
      },
  
      /*
       * test results reporter to use
       *
       * possible values: 'dots', 'progress'
       * available reporters: https://npmjs.org/browse/keyword/karma-reporter
       */
      reporters: ['mocha', 'coverage', 'remap-coverage', 'progress', 'kjhtml'],
  
      // 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_WARN,
  
      // enable / disable watching file and executing tests whenever any file changes
      autoWatch: false,
  
      /*
       * start these browsers
       * available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
       */
      browsers: [
        'Chrome'
      ],
  
      customLaunchers: {
        ChromeTravisCi: {
          base: 'Chrome',
          flags: ['--no-sandbox']
        }
      },
  
      /*
       * Continuous Integration mode
       * if true, Karma captures browsers, runs the tests and exits
       */
      singleRun: true
    };
  
    if (process.env.TRAVIS) {
      configuration.browsers = [
        'ChromeTravisCi'
      ];
    }
  
    config.set(configuration);
  };
  