codymikol / karma-webpack

Karma webpack Middleware
MIT License
830 stars 222 forks source link

JavaScript heap out of memory #382

Closed eugenet8k closed 1 year ago

eugenet8k commented 5 years ago

After migrating from v3.0.0 to v.3.0.5 I am getting JavaScript heap out of memory error:

(node:31703) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
⚠ 「wdm」: 
ℹ 「wdm」: Compiled with warnings.
ℹ 「wdm」: Compiling...

<--- Last few GCs --->

[31735:0x102801c00]    44303 ms: Scavenge 1384.9 (1419.6) -> 1384.2 (1420.1) MB, 8.3 / 0.0 ms  (average mu = 0.182, current mu = 0.147) allocation failure 
[31735:0x102801c00]    44321 ms: Scavenge 1385.1 (1420.1) -> 1384.6 (1420.6) MB, 9.3 / 0.0 ms  (average mu = 0.182, current mu = 0.147) allocation failure 
[31735:0x102801c00]    44337 ms: Scavenge 1385.4 (1420.6) -> 1384.9 (1421.6) MB, 7.7 / 0.0 ms  (average mu = 0.182, current mu = 0.147) allocation failure 

<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x245641b5c01d]
Security context: 0x20575cc1e681 <JSObject>
    1: _walk [0x20573679e3b9] [/my-project/node_modules/terser/dist/bundle.js:~44] [pc=0x245641dc4ded](this=0x2057876b66a1 <AST_Object map = 0x20573bf311c9>,e=0x20574454db01 <qn map = 0x2057e6c2fe31>)
    2: /* anonymous */ [0x2057b33afb49] [/my-project/node_modules/terser/dist/bundle.js:44] [bytecode=0x2057776...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003a08d node::Abort() [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 2: 0x10003a297 node::OnFatalError(char const*, char const*) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 3: 0x1001d2455 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 4: 0x10059d6d2 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 5: 0x1005a01a5 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 6: 0x10059c04f v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 7: 0x10059a224 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 8: 0x1005a6aac v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
 9: 0x1005a6b2f v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
10: 0x1005764b4 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
11: 0x1007fe234 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/username/.nvm/versions/node/v10.11.0/bin/node]
12: 0x245641b5c01d 
13: 0x245641dc4ded 

Expected Behavior

It works well with karma-webpack v3.0.0, it is expected that my tests run without JS runtime errors.

Actual Behavior

The process is hanging during webpack compilation phase.

Code

// webpack.config.js https://gist.github.com/eugenet8k/c1c5a1efc8c3078519ea87b10860df50

matthieu-foucault commented 5 years ago

karma-webpack 3 is not compatible with webpack 4. The peerdependencies were incorrect in v3.0.0, you should have a warning now.

We have release candidates of karma-webpack 4 which are available with npm i -D karma-webpack@next. A full release should be out in the next few weeks. Let me know if you encounter the issue with the release candidate.

eugenet8k commented 5 years ago

@matthieu-foucault thanks for the info! I will keep my eyes on this and try with upcoming v4. (Also, yeah, it worked with v3.0.0 and I can't recall seeing a warning.)

LilSebastian5000 commented 5 years ago

@matthieu-foucault I'm having this issue with 4.0.0-rc.5. Any solutions?

ryanclark commented 5 years ago

@LilSebastian5000 have you got a small example that reproduces the issue?

stevenvachon commented 5 years ago

I'm having this issue with 5.0.0-alpha.2

<--- Last few GCs --->

[56850:0x102801000]   283009 ms: Scavenge 1362.1 (1419.9) -> 1361.6 (1420.4) MB, 29.1 / 0.0 ms  (average mu = 0.163, current mu = 0.104) allocation failure 
[56850:0x102801000]   283033 ms: Scavenge 1362.4 (1420.4) -> 1362.3 (1421.9) MB, 16.3 / 0.0 ms  (average mu = 0.163, current mu = 0.104) allocation failure 
[56850:0x102801000]   283950 ms: Mark-sweep 1363.2 (1421.9) -> 1362.7 (1421.4) MB, 913.0 / 0.0 ms  (average mu = 0.117, current mu = 0.065) allocation failure scavenge might not succeed

<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x272a2e6dbe3d]
    1: StubFrame [pc: 0x272a2e6847bb]
    2: ConstructFrame [pc: 0x272a2e68d145]
Security context: 0x366e3729e6e1 <JSObject>
    3: DoJoin(aka DoJoin) [0x366e37285e89] [native array.js:~87] [pc=0x272a2f76d22d](this=0x366ee9e026f1 <undefined>,l=0x366e93142181 <JSArray[10]>,m=10,A=0x366ee9e028c9 <true>,w=0x366e555afc91 <String[1]: />,v=0x366ee9e029a1 <false>)
    4: Join(aka Join) [0x366e37285ed9] [nati...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003b125 node::Abort() [/usr/local/bin/node]
 2: 0x10003b32f node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: 0x1001a8e85 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0x1005742a2 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
 5: 0x100576d75 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
 6: 0x100572c1f v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
 7: 0x100570df4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
 8: 0x10057d68c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 9: 0x10057d70f v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
10: 0x10054d054 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]
11: 0x1007d4f24 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
12: 0x272a2e6dbe3d 
13: 0x272a2e6847bb 

My config, logged from within karma-webpack:

{ mode: 'development',
  output:
   { filename: '[name].js',
     path:
      '/var/folders/yf/snctl2s92dbdb9d3cp87kyhc0000gn/T/_karma_webpack_' },
  stats:
   { modules: false,
     colors: true,
     assets: false,
     builtAt: false,
     cached: false,
     cachedAssets: false,
     children: false,
     chunkModules: false,
     chunks: false,
     entrypoints: false,
     errorDetails: false,
     excludeAssets: [Function: excludeAssets],
     hash: false,
     reasons: false,
     source: false,
     timings: true,
     version: false,
     warnings: false },
  watch: true,
  optimization:
   { runtimeChunk: 'single',
     splitChunks:
      { chunks: 'all',
        minSize: 0,
        cacheGroups:
         { commons: { name: 'commons', chunks: 'all', minChunks: 1 } } },
     concatenateModules: false,
     minimizer: [] },
  plugins:
   [ KarmaSyncPlugin {
       karmaEmitter:
        Server {
          _events:
           [Object: null prototype] { load_error: [Function], exit: [ [Function], [Function] ] },
          _eventsCount: 2,
          _maxListeners: undefined,
          log: Logger { category: 'karma-server', context: {} },
          loadErrors: [],
          _injector:
           Injector {
             _providers:
              [Object: null prototype] {
                helper:
                 [ [Function: value],
                   { browserFullNameToShort: [Function],
                     isDefined: [Function],
                     mmPatternWeight: [Function],
                     mmComparePatternWeights: [Function],
                     isFunction: [Function: isFunction],
                     isString: [Function: isString],
                     isObject: [Function: isObject],
                     isArray: [Function: isArray],
                     isNumber: [Function: isNumber],
                     isUrlAbsolute: [Function],
                     camelToSnake: [Function],
                     ucFirst: [Function],
                     dashToCamel: [Function],
                     arrayRemove: [Function],
                     merge: [Function],
                     formatTimeInterval: [Function],
                     normalizeWinPath: [Function: identity],
                     mkdirIfNotExists: [Function],
                     defer: [Function],
                     saveOriginalArgs: [Function],
                     restoreOriginalArgs: [Function] },
                   'value' ],
                logger:
                 [ [Function: value],
                   { create: [Function: create],
                     setup: [Function: setup],
                     setupFromConfig: [Function: setupFromConfig],
                     _rebindLog4js4testing: [Function] },
                   'value' ],
                done: [ [Function: value], [Function], 'value' ],
                emitter: [ [Function: value], [Circular], 'value' ],
                server: [ [Function: value], [Circular], 'value' ],
                watcher:
                 [ [Function: value],
                   { [Function: watch]
                     '$inject':
                      [ 'config.files',
                        'config.exclude',
                        'fileList',
                        'config.usePolling',
                        'emitter' ] },
                   'value' ],
                launcher:
                 [ [Function: instantiate],
                   { [Function: Launcher]
                     '$inject': [ 'server', 'emitter', 'injector' ],
                     generateId: [Function] },
                   'type' ],
                config:
                 [ [Function: value],
                   Config {
                     LOG_DISABLE: 'OFF',
                     LOG_ERROR: 'ERROR',
                     LOG_WARN: 'WARN',
                     LOG_INFO: 'INFO',
                     LOG_DEBUG: 'DEBUG',
                     frameworks:
                      [ 'webpack', 'source-map-support', 'jasmine-jquery', 'jasmine' ],
                     protocol: 'http:',
                     port: 9876,
                     listenAddress: '0.0.0.0',
                     hostname: 'localhost',
                     httpsServerConfig: {},
                     basePath: '/project/scripts/build',
                     files:
                      [ Pattern {
                          pattern:
                           '/project/scripts/build/legacyVendors.js',
                          served: true,
                          included: true,
                          watched: false,
                          nocache: false,
                          weight: [ 1, 0, 0, 0, 0, 0 ],
                          type: undefined },
                        Pattern {
                          pattern:
                           '/project/scripts/jasmine.test.helper.js',
                          served: true,
                          included: true,
                          watched: false,
                          nocache: false,
                          weight: [ 1, 0, 0, 0, 0, 0 ],
                          type: undefined },
                        Pattern {
                          pattern:
                           '/project/src/cc@(App|User)/**/*.@(spec|tests).js',
                          served: true,
                          included: true,
                          watched: false,
                          nocache: false,
                          weight: [ 1, 1, 1, 2, 0, 0 ],
                          type: undefined } ],
                     browserConsoleLogOptions: { level: 'debug', format: '%b %T: %m', terminal: true },
                     customContextFile: null,
                     customDebugFile: null,
                     customClientContextFile: null,
                     exclude:
                      [ '/project/scripts/build/karma.config' ],
                     logLevel: 'ERROR',
                     colors: true,
                     autoWatch: true,
                     autoWatchBatchDelay: 250,
                     restartOnFileChange: false,
                     usePolling: false,
                     reporters: [ 'dots', 'notify', 'coverage' ],
                     singleRun: false,
                     browsers: [ 'ChromeHeadlessNoSandbox' ],
                     captureTimeout: 60000,
                     proxies: {},
                     proxyValidateSSL: true,
                     preprocessors:
                      [Object: null prototype] {
                        '/project/scripts/jasmine.test.helper.js': [ 'webpack' ],
                        '/project/src/cc@(App|User)/**/*.@(spec|tests).js': [ 'webpack' ],
                        '/project/scripts/build/**/*': [ 'concat' ],
                        '/project/scripts/build/**/!(*.spec|*.tests).js': [ 'coverage' ] },
                     urlRoot: '/',
                     upstreamProxy: undefined,
                     reportSlowerThan: 0,
                     loggers:
                      [ { type: 'console',
                          layout: { type: 'pattern', pattern: '%[%d{DATE}:%p [%c]: %]%m' } } ],
                     transports: [ 'polling', 'websocket' ],
                     forceJSONP: false,
                     plugins:
                      [ 'karma-*',
                        [Object: null prototype] {
                          'launcher:ChromeHeadlessNoSandbox': [ 'factory', [Function] ] } ],
                     client:
                      { args: [],
                        useIframe: true,
                        runInParent: false,
                        captureConsole: true,
                        clearContext: true },
                     defaultClient:
                      { args: [],
                        useIframe: true,
                        runInParent: false,
                        captureConsole: true,
                        clearContext: true },
                     browserDisconnectTimeout: 2000,
                     browserDisconnectTolerance: 0,
                     browserNoActivityTimeout: 120000,
                     processKillTimeout: 2000,
                     concurrency: Infinity,
                     failOnEmptyTestSuite: true,
                     retryLimit: 2,
                     detached: false,
                     crossOriginAttribute: true,
                     browserSocketTimeout: 20000,
                     cmd: 'start',
                     configFile:
                      '/project/scripts/build/karma.config',
                     customLaunchers:
                      { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: [ '--no-sandbox' ] } },
                     concat:
                      { footer: '',
                        header: '',
                        outputs:
                         [ { file: 'legacyVendors.js',
                             inputs:
                              [ '/project/node_modules/jquery/dist/jquery.js',
                                '/project/app/webroot/lib/ext/ext-all.js',
                                '/project/app/webroot/lib/deft/deft.js',
                                '/project/app/webroot/lib/cmon/cmon-fixes.js',
                                '/project/app/webroot/lib/cmon/cmon-event-handler.js',
                                '/project/app/webroot/lib/cmon/cmon-common-messages.js',
                                '/project/app/webroot/lib/hashchange.js',
                                '/project/node_modules/prettycron/prettycron.js',
                                '/project/app/webroot/lib/cmon/cmon-1.2.9.js',
                                '/project/app/webroot/lib/google-analytics/google-analytics.js',
                                '/project/node_modules/lodash/lodash.js',
                                '/project/node_modules/moment/moment.js',
                                '/project/node_modules/moment-timezone/builds/moment-timezone-with-data.js',
                                '/project/app/webroot/lib/tour/jquery.cookie.js',
                                '/project/app/webroot/lib/ace-editor/ace.js',
                                '/project/app/webroot/lib/ace-editor/mode-apacheconf.js',
                                '/project/app/webroot/lib/ace-editor/mode-javascript.js',
                                '/project/node_modules/angular/angular.js',
                                '/project/app/webroot/lib/tour/google-code-prettify/prettify.js',
                                '/project/app/webroot/lib/tour/bootstrap-alert.js',
                                '/project/app/webroot/lib/tour/bootstrap-tour.js',
                                '/project/app/webroot/lib/bootstrap/js/typeahead.bundle.js',
                                '/project/app/webroot/lib/bootstrap/tags/bootstrap-tagsinput.min.js',
                                '/project/app/webroot/lib/custom/splitmenubuttons.js',
                                '/project/app/webroot/lib/vis/vis.js',
                                '/project/app/webroot/lib/highlighttextarea/jquery.highlighttextarea.js',
                                '/project/app/webroot/lib/types/Date.js',
                                '/project/app/webroot/lib/types/String.js',
                                '/project/app/webroot/lib/types/Array.js',
                                '/project/app/webroot/lib/crontab/CronObject.js',
                                '/project/node_modules/highcharts/highcharts.js',
                                '/project/app/webroot/lib/daterangepicker.js',
                                '/project/app/webroot/lib/highcharts/js/export-csv.js' ] } ] },
                     coverageReporter:
                      { check:
                         { global: { branches: 30, functions: 48, lines: 60, statements: 60 } },
                        reporters:
                         [ { type: 'json',
                             dir: '/project/reports/coverage',
                             subdir: '.' },
                           { type: 'text-summary' } ] },
                     notifyReporter: { reportEachFailure: true, reportSuccess: false },
                     webpack:
                      { devtool: 'inline-source-map',
                        entry: {},
                        mode: 'development',
                        module:
                         { rules:
                            [ { test: /\.(c|sa|sc)ss$/, use: [ 'ignore-loader' ] },
                              { test: /\.html$/,
                                use:
                                 [ { loader: 'ngtemplate-loader',
                                     options:
                                      { exportAsEs6Default: true,
                                        relativeTo: '/project/src',
                                        requireAngular: true } },
                                   { loader: 'html-loader',
                                     options: { attrs: [], minifyCSS: false, minimize: false } } ] },
                              { test: /\.json$/,
                                type: 'javascript/auto',
                                use: [ 'json5-loader' ] },
                              { exclude: /node_modules|app\/webroot|\.(spec|tests)\.js$/,
                                test: /\.js$/,
                                use:
                                 [ { loader: 'babel-loader',
                                     options:
                                      { cacheDirectory: true,
                                        extends:
                                         '/project/scripts/build/babel.config.js',
                                        plugins: [ 'istanbul' ] } } ] },
                              { exclude: /node_modules/,
                                test: /\.(spec|tests)\.js$/,
                                use:
                                 [ { loader: 'babel-loader',
                                     options:
                                      { cacheDirectory: true,
                                        extends:
                                         '/project/scripts/build/babel.config.js',
                                        plugins: [ 'istanbul' ] } } ] } ] },
                        optimization:
                         { concatenateModules: false,
                           minimizer: [],
                           splitChunks: { chunks: 'all' } },
                        output: {},
                        plugins: [],
                        resolve:
                         { alias:
                            { ccApp: '/project/src/ccApp',
                              ccDesignSystem: '/project/src/ccDesignSystem',
                              ccUser: '/project/src/ccUser',
                              extCss:
                               '/project/app/Assets/stylesheets',
                              node_modules: '/project/node_modules',
                              webroot: '/project/app/webroot' } },
                        stats:
                         { assets: false,
                           builtAt: false,
                           cached: false,
                           cachedAssets: false,
                           children: false,
                           chunkModules: false,
                           chunks: false,
                           entrypoints: false,
                           errorDetails: false,
                           excludeAssets: [Function: excludeAssets],
                           hash: false,
                           modules: false,
                           reasons: false,
                           source: false,
                           timings: true,
                           version: false,
                           warnings: false },
                        watch: true },
                     webpackMiddleware: { logLevel: 'error', stats: 'errors-only' } },
                   'value' ],
                preprocess:
                 [ [Function: invoke],
                   { [Function: createPreprocessor]
                     '$inject': [ 'config.preprocessors', 'config.basePath', 'injector' ] },
                   'factory' ],
                fileList:
                 [ [Function: invoke],
                   { [Function] '$inject': [ 'config', 'emitter', 'preprocess' ] },
                   'factory' ],
                webServer:
                 [ [Function: invoke],
                   { [Function: createWebServer] '$inject': [ 'injector', 'config' ] },
                   'factory' ],
                serveFile:
                 [ [Function: invoke],
                   { [Function: createServeFile] '$inject': [ 'config' ] },
                   'factory' ],
                serveStaticFile:
                 [ [Function: invoke],
                   { [Function: createServeStaticFile] '$inject': [ 'config' ] },
                   'factory' ],
                filesPromise:
                 [ [Function: invoke], [Function: createFilesPromise], 'factory' ],
                readFilePromise:
                 [ [Function: invoke],
                   { [Function: createReadFilePromise] '$inject': [] },
                   'factory' ],
                socketServer:
                 [ [Function: invoke],
                   [Function: createSocketIoServer],
                   'factory' ],
                executor: [ [Function: invoke], [Function], 'factory' ],
                customFileHandlers: [ [Function: value], [], 'value' ],
                customScriptTypes: [ [Function: value], [], 'value' ],
                reporter:
                 [ [Function: invoke],
                   { [Function: createReporters]
                     '$inject': [ 'config.reporters', 'config', 'emitter', 'injector' ] },
                   'factory' ],
                capturedBrowsers: [ [Function: invoke], [Function], 'factory' ],
                args: [ [Function: value], {}, 'value' ],
                timer:
                 [ [Function: value],
                   { setTimeout: [Function: setTimeout],
                     clearTimeout: [Function: clearTimeout] },
                   'value' ],
                'launcher:Chrome':
                 [ [Function: instantiate],
                   { [Function: ChromeBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                   'type' ],
                'launcher:ChromeHeadless':
                 [ [Function: instantiate],
                   { [Function: ChromeHeadlessBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                   'type' ],
                'launcher:ChromeCanary':
                 [ [Function: instantiate],
                   { [Function: ChromeCanaryBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                   'type' ],
                'launcher:ChromeCanaryHeadless':
                 [ [Function: instantiate],
                   { [Function: ChromeCanaryHeadlessBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                   'type' ],
                'launcher:Chromium':
                 [ [Function: instantiate],
                   { [Function: ChromiumBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                   'type' ],
                'launcher:ChromiumHeadless':
                 [ [Function: instantiate],
                   [Function: ChromiumHeadlessBrowser],
                   'type' ],
                'launcher:Dartium':
                 [ [Function: instantiate],
                   { [Function: DartiumBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                   'type' ],
                test: [ undefined, undefined, undefined ],
                'preprocessor:concat':
                 [ [Function: invoke],
                   { [Function: initPreprocessor] '$inject': [ 'config.basePath', 'config.concat', 'logger' ] },
                   'factory' ],
                'preprocessor:coverage':
                 [ [Function: invoke],
                   { [Function: createCoveragePreprocessor]
                     '$inject':
                      [ 'logger',
                        'helper',
                        'config.basePath',
                        'config.reporters',
                        'config.coverageReporter' ] },
                   'factory' ],
                'reporter:coverage':
                 [ [Function: instantiate],
                   { [Function: CoverageReporter] '$inject': [ 'config', 'helper', 'logger', 'emitter' ] },
                   'type' ],
                'framework:jasmine':
                 [ [Function: invoke],
                   { [Function: initJasmine] '$inject': [ 'config.files' ] },
                   'factory' ],
                'framework:jasmine-jquery':
                 [ [Function: invoke],
                   { [Function: initJasmine_jquery] '$inject': [ 'config.files' ] },
                   'factory' ],
                'reporter:notify':
                 [ [Function: instantiate],
                   { [Function: NotifyReporter]
                     '$inject':
                      [ 'baseReporterDecorator',
                        'helper',
                        'logger',
                        'config',
                        'formatError' ] },
                   'type' ],
                'framework:source-map-support':
                 [ [Function: invoke],
                   { [Function: init] '$inject': [ 'config.files' ] },
                   'factory' ],
                'preprocessor:webpack':
                 [ [Function: invoke],
                   { [Function: preprocessorFactory] '$inject': [ 'config', 'emitter' ] },
                   'factory' ],
                'framework:webpack':
                 [ [Function: invoke],
                   { [Function: registerExtraWebpackFiles] '$inject': [ 'config' ] },
                   'factory' ],
                registerExtraWebpackFiles: [ undefined, undefined, undefined ],
                configToWebpackEntries: [ undefined, undefined, undefined ],
                'launcher:ChromeHeadlessNoSandbox': [ [Function: invoke], [Function], 'factory' ] },
             _instances:
              [Object: null prototype] {
                injector: [Circular],
                config:
                 Config {
                   LOG_DISABLE: 'OFF',
                   LOG_ERROR: 'ERROR',
                   LOG_WARN: 'WARN',
                   LOG_INFO: 'INFO',
                   LOG_DEBUG: 'DEBUG',
                   frameworks:
                    [ 'webpack', 'source-map-support', 'jasmine-jquery', 'jasmine' ],
                   protocol: 'http:',
                   port: 9876,
                   listenAddress: '0.0.0.0',
                   hostname: 'localhost',
                   httpsServerConfig: {},
                   basePath: '/project/scripts/build',
                   files:
                    [ Pattern {
                        pattern:
                         '/project/scripts/build/legacyVendors.js',
                        served: true,
                        included: true,
                        watched: false,
                        nocache: false,
                        weight: [ 1, 0, 0, 0, 0, 0 ],
                        type: undefined },
                      Pattern {
                        pattern:
                         '/project/scripts/jasmine.test.helper.js',
                        served: true,
                        included: true,
                        watched: false,
                        nocache: false,
                        weight: [ 1, 0, 0, 0, 0, 0 ],
                        type: undefined },
                      Pattern {
                        pattern:
                         '/project/src/cc@(App|User)/**/*.@(spec|tests).js',
                        served: true,
                        included: true,
                        watched: false,
                        nocache: false,
                        weight: [ 1, 1, 1, 2, 0, 0 ],
                        type: undefined } ],
                   browserConsoleLogOptions: { level: 'debug', format: '%b %T: %m', terminal: true },
                   customContextFile: null,
                   customDebugFile: null,
                   customClientContextFile: null,
                   exclude:
                    [ '/project/scripts/build/karma.config' ],
                   logLevel: 'ERROR',
                   colors: true,
                   autoWatch: true,
                   autoWatchBatchDelay: 250,
                   restartOnFileChange: false,
                   usePolling: false,
                   reporters: [ 'dots', 'notify', 'coverage' ],
                   singleRun: false,
                   browsers: [ 'ChromeHeadlessNoSandbox' ],
                   captureTimeout: 60000,
                   proxies: {},
                   proxyValidateSSL: true,
                   preprocessors:
                    [Object: null prototype] {
                      '/project/scripts/jasmine.test.helper.js': [ 'webpack' ],
                      '/project/src/cc@(App|User)/**/*.@(spec|tests).js': [ 'webpack' ],
                      '/project/scripts/build/**/*': [ 'concat' ],
                      '/project/scripts/build/**/!(*.spec|*.tests).js': [ 'coverage' ] },
                   urlRoot: '/',
                   upstreamProxy: undefined,
                   reportSlowerThan: 0,
                   loggers:
                    [ { type: 'console',
                        layout: { type: 'pattern', pattern: '%[%d{DATE}:%p [%c]: %]%m' } } ],
                   transports: [ 'polling', 'websocket' ],
                   forceJSONP: false,
                   plugins:
                    [ 'karma-*',
                      [Object: null prototype] {
                        'launcher:ChromeHeadlessNoSandbox': [ 'factory', [Function] ] } ],
                   client:
                    { args: [],
                      useIframe: true,
                      runInParent: false,
                      captureConsole: true,
                      clearContext: true },
                   defaultClient:
                    { args: [],
                      useIframe: true,
                      runInParent: false,
                      captureConsole: true,
                      clearContext: true },
                   browserDisconnectTimeout: 2000,
                   browserDisconnectTolerance: 0,
                   browserNoActivityTimeout: 120000,
                   processKillTimeout: 2000,
                   concurrency: Infinity,
                   failOnEmptyTestSuite: true,
                   retryLimit: 2,
                   detached: false,
                   crossOriginAttribute: true,
                   browserSocketTimeout: 20000,
                   cmd: 'start',
                   configFile:
                    '/project/scripts/build/karma.config',
                   customLaunchers:
                    { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: [ '--no-sandbox' ] } },
                   concat:
                    { footer: '',
                      header: '',
                      outputs:
                       [ { file: 'legacyVendors.js',
                           inputs:
                            [ '/project/node_modules/jquery/dist/jquery.js',
                              '/project/app/webroot/lib/ext/ext-all.js',
                              '/project/app/webroot/lib/deft/deft.js',
                              '/project/app/webroot/lib/cmon/cmon-fixes.js',
                              '/project/app/webroot/lib/cmon/cmon-event-handler.js',
                              '/project/app/webroot/lib/cmon/cmon-common-messages.js',
                              '/project/app/webroot/lib/hashchange.js',
                              '/project/node_modules/prettycron/prettycron.js',
                              '/project/app/webroot/lib/cmon/cmon-1.2.9.js',
                              '/project/app/webroot/lib/google-analytics/google-analytics.js',
                              '/project/node_modules/lodash/lodash.js',
                              '/project/node_modules/moment/moment.js',
                              '/project/node_modules/moment-timezone/builds/moment-timezone-with-data.js',
                              '/project/app/webroot/lib/tour/jquery.cookie.js',
                              '/project/app/webroot/lib/ace-editor/ace.js',
                              '/project/app/webroot/lib/ace-editor/mode-apacheconf.js',
                              '/project/app/webroot/lib/ace-editor/mode-javascript.js',
                              '/project/node_modules/angular/angular.js',
                              '/project/app/webroot/lib/tour/google-code-prettify/prettify.js',
                              '/project/app/webroot/lib/tour/bootstrap-alert.js',
                              '/project/app/webroot/lib/tour/bootstrap-tour.js',
                              '/project/app/webroot/lib/bootstrap/js/typeahead.bundle.js',
                              '/project/app/webroot/lib/bootstrap/tags/bootstrap-tagsinput.min.js',
                              '/project/app/webroot/lib/custom/splitmenubuttons.js',
                              '/project/app/webroot/lib/vis/vis.js',
                              '/project/app/webroot/lib/highlighttextarea/jquery.highlighttextarea.js',
                              '/project/app/webroot/lib/types/Date.js',
                              '/project/app/webroot/lib/types/String.js',
                              '/project/app/webroot/lib/types/Array.js',
                              '/project/app/webroot/lib/crontab/CronObject.js',
                              '/project/node_modules/highcharts/highcharts.js',
                              '/project/app/webroot/lib/daterangepicker.js',
                              '/project/app/webroot/lib/highcharts/js/export-csv.js' ] } ] },
                   coverageReporter:
                    { check:
                       { global: { branches: 30, functions: 48, lines: 60, statements: 60 } },
                      reporters:
                       [ { type: 'json',
                           dir: '/project/reports/coverage',
                           subdir: '.' },
                         { type: 'text-summary' } ] },
                   notifyReporter: { reportEachFailure: true, reportSuccess: false },
                   webpack:
                    { devtool: 'inline-source-map',
                      entry: {},
                      mode: 'development',
                      module:
                       { rules:
                          [ { test: /\.(c|sa|sc)ss$/, use: [ 'ignore-loader' ] },
                            { test: /\.html$/,
                              use:
                               [ { loader: 'ngtemplate-loader',
                                   options:
                                    { exportAsEs6Default: true,
                                      relativeTo: '/project/src',
                                      requireAngular: true } },
                                 { loader: 'html-loader',
                                   options: { attrs: [], minifyCSS: false, minimize: false } } ] },
                            { test: /\.json$/,
                              type: 'javascript/auto',
                              use: [ 'json5-loader' ] },
                            { exclude: /node_modules|app\/webroot|\.(spec|tests)\.js$/,
                              test: /\.js$/,
                              use:
                               [ { loader: 'babel-loader',
                                   options:
                                    { cacheDirectory: true,
                                      extends:
                                       '/project/scripts/build/babel.config.js',
                                      plugins: [ 'istanbul' ] } } ] },
                            { exclude: /node_modules/,
                              test: /\.(spec|tests)\.js$/,
                              use:
                               [ { loader: 'babel-loader',
                                   options:
                                    { cacheDirectory: true,
                                      extends:
                                       '/project/scripts/build/babel.config.js',
                                      plugins: [ 'istanbul' ] } } ] } ] },
                      optimization:
                       { concatenateModules: false,
                         minimizer: [],
                         splitChunks: { chunks: 'all' } },
                      output: {},
                      plugins: [],
                      resolve:
                       { alias:
                          { ccApp: '/project/src/ccApp',
                            ccDesignSystem: '/project/src/ccDesignSystem',
                            ccUser: '/project/src/ccUser',
                            extCss:
                             '/project/app/Assets/stylesheets',
                            node_modules: '/project/node_modules',
                            webroot: '/project/app/webroot' } },
                      stats:
                       { assets: false,
                         builtAt: false,
                         cached: false,
                         cachedAssets: false,
                         children: false,
                         chunkModules: false,
                         chunks: false,
                         entrypoints: false,
                         errorDetails: false,
                         excludeAssets: [Function: excludeAssets],
                         hash: false,
                         modules: false,
                         reasons: false,
                         source: false,
                         timings: true,
                         version: false,
                         warnings: false },
                      watch: true },
                   webpackMiddleware: { logLevel: 'error', stats: 'errors-only' } },
                server: [Circular],
                emitter: [Circular],
                launcher:
                 Launcher {
                   _browsers: [],
                   launchSingle:
                    { [Function]
                      '$inject':
                       [ 'config.protocol',
                         'config.hostname',
                         'config.port',
                         'config.urlRoot',
                         'config.upstreamProxy',
                         'config.processKillTimeout' ] },
                   launch:
                    { [Function]
                      '$inject':
                       [ 'config.browsers',
                         'config.concurrency',
                         'config.processKillTimeout' ] },
                   kill: [Function],
                   restart: [Function],
                   killAll: [Function],
                   areAllCaptured: [Function],
                   markCaptured: [Function] },
                logger:
                 { create: [Function: create],
                   setup: [Function: setup],
                   setupFromConfig: [Function: setupFromConfig],
                   _rebindLog4js4testing: [Function] },
                helper:
                 { browserFullNameToShort: [Function],
                   isDefined: [Function],
                   mmPatternWeight: [Function],
                   mmComparePatternWeights: [Function],
                   isFunction: [Function: isFunction],
                   isString: [Function: isString],
                   isObject: [Function: isObject],
                   isArray: [Function: isArray],
                   isNumber: [Function: isNumber],
                   isUrlAbsolute: [Function],
                   camelToSnake: [Function],
                   ucFirst: [Function],
                   dashToCamel: [Function],
                   arrayRemove: [Function],
                   merge: [Function],
                   formatTimeInterval: [Function],
                   normalizeWinPath: [Function: identity],
                   mkdirIfNotExists: [Function],
                   defer: [Function],
                   saveOriginalArgs: [Function],
                   restoreOriginalArgs: [Function] },
                'preprocessor:coverage': [Function],
                'preprocessor:concat': [Function] },
             get: [Function: get],
             invoke: [Function: invoke],
             instantiate: [Function: instantiate],
             createChild: [Function: createChild] },
          _boundServer:
           Server {
             _events:
              [Object: null prototype] { error: [Function], listening: [Function] },
             _eventsCount: 2,
             _maxListeners: undefined,
             _connections: 0,
             _handle:
              TCP {
                reading: false,
                onread: null,
                onconnection: [Function: onconnection],
                [Symbol(owner)]: [Circular] },
             _usingWorkers: false,
             _workers: [],
             _unref: false,
             allowHalfOpen: false,
             pauseOnConnect: false,
             _connectionKey: '4:0.0.0.0:9876',
             [Symbol(asyncId)]: 15 } },
       controller:
        KarmaWebpackController {
          isActive: false,
          bundlesContent: {},
          hasBeenBuiltAtLeastOnce: false,
          __webpackOptions: [Circular],
          __karmaEmitter:
           Server {
             _events:
              [Object: null prototype] { load_error: [Function], exit: [ [Function], [Function] ] },
             _eventsCount: 2,
             _maxListeners: undefined,
             log: Logger { category: 'karma-server', context: {} },
             loadErrors: [],
             _injector:
              Injector {
                _providers:
                 [Object: null prototype] {
                   helper:
                    [ [Function: value],
                      { browserFullNameToShort: [Function],
                        isDefined: [Function],
                        mmPatternWeight: [Function],
                        mmComparePatternWeights: [Function],
                        isFunction: [Function: isFunction],
                        isString: [Function: isString],
                        isObject: [Function: isObject],
                        isArray: [Function: isArray],
                        isNumber: [Function: isNumber],
                        isUrlAbsolute: [Function],
                        camelToSnake: [Function],
                        ucFirst: [Function],
                        dashToCamel: [Function],
                        arrayRemove: [Function],
                        merge: [Function],
                        formatTimeInterval: [Function],
                        normalizeWinPath: [Function: identity],
                        mkdirIfNotExists: [Function],
                        defer: [Function],
                        saveOriginalArgs: [Function],
                        restoreOriginalArgs: [Function] },
                      'value' ],
                   logger:
                    [ [Function: value],
                      { create: [Function: create],
                        setup: [Function: setup],
                        setupFromConfig: [Function: setupFromConfig],
                        _rebindLog4js4testing: [Function] },
                      'value' ],
                   done: [ [Function: value], [Function], 'value' ],
                   emitter: [ [Function: value], [Circular], 'value' ],
                   server: [ [Function: value], [Circular], 'value' ],
                   watcher:
                    [ [Function: value],
                      { [Function: watch]
                        '$inject':
                         [ 'config.files',
                           'config.exclude',
                           'fileList',
                           'config.usePolling',
                           'emitter' ] },
                      'value' ],
                   launcher:
                    [ [Function: instantiate],
                      { [Function: Launcher]
                        '$inject': [ 'server', 'emitter', 'injector' ],
                        generateId: [Function] },
                      'type' ],
                   config:
                    [ [Function: value],
                      Config {
                        LOG_DISABLE: 'OFF',
                        LOG_ERROR: 'ERROR',
                        LOG_WARN: 'WARN',
                        LOG_INFO: 'INFO',
                        LOG_DEBUG: 'DEBUG',
                        frameworks:
                         [ 'webpack', 'source-map-support', 'jasmine-jquery', 'jasmine' ],
                        protocol: 'http:',
                        port: 9876,
                        listenAddress: '0.0.0.0',
                        hostname: 'localhost',
                        httpsServerConfig: {},
                        basePath: '/project/scripts/build',
                        files:
                         [ Pattern {
                             pattern:
                              '/project/scripts/build/legacyVendors.js',
                             served: true,
                             included: true,
                             watched: false,
                             nocache: false,
                             weight: [ 1, 0, 0, 0, 0, 0 ],
                             type: undefined },
                           Pattern {
                             pattern:
                              '/project/scripts/jasmine.test.helper.js',
                             served: true,
                             included: true,
                             watched: false,
                             nocache: false,
                             weight: [ 1, 0, 0, 0, 0, 0 ],
                             type: undefined },
                           Pattern {
                             pattern:
                              '/project/src/cc@(App|User)/**/*.@(spec|tests).js',
                             served: true,
                             included: true,
                             watched: false,
                             nocache: false,
                             weight: [ 1, 1, 1, 2, 0, 0 ],
                             type: undefined } ],
                        browserConsoleLogOptions: { level: 'debug', format: '%b %T: %m', terminal: true },
                        customContextFile: null,
                        customDebugFile: null,
                        customClientContextFile: null,
                        exclude:
                         [ '/project/scripts/build/karma.config' ],
                        logLevel: 'ERROR',
                        colors: true,
                        autoWatch: true,
                        autoWatchBatchDelay: 250,
                        restartOnFileChange: false,
                        usePolling: false,
                        reporters: [ 'dots', 'notify', 'coverage' ],
                        singleRun: false,
                        browsers: [ 'ChromeHeadlessNoSandbox' ],
                        captureTimeout: 60000,
                        proxies: {},
                        proxyValidateSSL: true,
                        preprocessors:
                         [Object: null prototype] {
                           '/project/scripts/jasmine.test.helper.js': [ 'webpack' ],
                           '/project/src/cc@(App|User)/**/*.@(spec|tests).js': [ 'webpack' ],
                           '/project/scripts/build/**/*': [ 'concat' ],
                           '/project/scripts/build/**/!(*.spec|*.tests).js': [ 'coverage' ] },
                        urlRoot: '/',
                        upstreamProxy: undefined,
                        reportSlowerThan: 0,
                        loggers:
                         [ { type: 'console',
                             layout: { type: 'pattern', pattern: '%[%d{DATE}:%p [%c]: %]%m' } } ],
                        transports: [ 'polling', 'websocket' ],
                        forceJSONP: false,
                        plugins:
                         [ 'karma-*',
                           [Object: null prototype] {
                             'launcher:ChromeHeadlessNoSandbox': [ 'factory', [Function] ] } ],
                        client:
                         { args: [],
                           useIframe: true,
                           runInParent: false,
                           captureConsole: true,
                           clearContext: true },
                        defaultClient:
                         { args: [],
                           useIframe: true,
                           runInParent: false,
                           captureConsole: true,
                           clearContext: true },
                        browserDisconnectTimeout: 2000,
                        browserDisconnectTolerance: 0,
                        browserNoActivityTimeout: 120000,
                        processKillTimeout: 2000,
                        concurrency: Infinity,
                        failOnEmptyTestSuite: true,
                        retryLimit: 2,
                        detached: false,
                        crossOriginAttribute: true,
                        browserSocketTimeout: 20000,
                        cmd: 'start',
                        configFile:
                         '/project/scripts/build/karma.config',
                        customLaunchers:
                         { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: [ '--no-sandbox' ] } },
                        concat:
                         { footer: '',
                           header: '',
                           outputs:
                            [ { file: 'legacyVendors.js',
                                inputs:
                                 [ '/project/node_modules/jquery/dist/jquery.js',
                                   '/project/app/webroot/lib/ext/ext-all.js',
                                   '/project/app/webroot/lib/deft/deft.js',
                                   '/project/app/webroot/lib/cmon/cmon-fixes.js',
                                   '/project/app/webroot/lib/cmon/cmon-event-handler.js',
                                   '/project/app/webroot/lib/cmon/cmon-common-messages.js',
                                   '/project/app/webroot/lib/hashchange.js',
                                   '/project/node_modules/prettycron/prettycron.js',
                                   '/project/app/webroot/lib/cmon/cmon-1.2.9.js',
                                   '/project/app/webroot/lib/google-analytics/google-analytics.js',
                                   '/project/node_modules/lodash/lodash.js',
                                   '/project/node_modules/moment/moment.js',
                                   '/project/node_modules/moment-timezone/builds/moment-timezone-with-data.js',
                                   '/project/app/webroot/lib/tour/jquery.cookie.js',
                                   '/project/app/webroot/lib/ace-editor/ace.js',
                                   '/project/app/webroot/lib/ace-editor/mode-apacheconf.js',
                                   '/project/app/webroot/lib/ace-editor/mode-javascript.js',
                                   '/project/node_modules/angular/angular.js',
                                   '/project/app/webroot/lib/tour/google-code-prettify/prettify.js',
                                   '/project/app/webroot/lib/tour/bootstrap-alert.js',
                                   '/project/app/webroot/lib/tour/bootstrap-tour.js',
                                   '/project/app/webroot/lib/bootstrap/js/typeahead.bundle.js',
                                   '/project/app/webroot/lib/bootstrap/tags/bootstrap-tagsinput.min.js',
                                   '/project/app/webroot/lib/custom/splitmenubuttons.js',
                                   '/project/app/webroot/lib/vis/vis.js',
                                   '/project/app/webroot/lib/highlighttextarea/jquery.highlighttextarea.js',
                                   '/project/app/webroot/lib/types/Date.js',
                                   '/project/app/webroot/lib/types/String.js',
                                   '/project/app/webroot/lib/types/Array.js',
                                   '/project/app/webroot/lib/crontab/CronObject.js',
                                   '/project/node_modules/highcharts/highcharts.js',
                                   '/project/app/webroot/lib/daterangepicker.js',
                                   '/project/app/webroot/lib/highcharts/js/export-csv.js' ] } ] },
                        coverageReporter:
                         { check:
                            { global: { branches: 30, functions: 48, lines: 60, statements: 60 } },
                           reporters:
                            [ { type: 'json',
                                dir: '/project/reports/coverage',
                                subdir: '.' },
                              { type: 'text-summary' } ] },
                        notifyReporter: { reportEachFailure: true, reportSuccess: false },
                        webpack:
                         { devtool: 'inline-source-map',
                           entry: {},
                           mode: 'development',
                           module:
                            { rules:
                               [ { test: /\.(c|sa|sc)ss$/, use: [ 'ignore-loader' ] },
                                 { test: /\.html$/,
                                   use:
                                    [ { loader: 'ngtemplate-loader',
                                        options:
                                         { exportAsEs6Default: true,
                                           relativeTo: '/project/src',
                                           requireAngular: true } },
                                      { loader: 'html-loader',
                                        options: { attrs: [], minifyCSS: false, minimize: false } } ] },
                                 { test: /\.json$/,
                                   type: 'javascript/auto',
                                   use: [ 'json5-loader' ] },
                                 { exclude: /node_modules|app\/webroot|\.(spec|tests)\.js$/,
                                   test: /\.js$/,
                                   use:
                                    [ { loader: 'babel-loader',
                                        options:
                                         { cacheDirectory: true,
                                           extends:
                                            '/project/scripts/build/babel.config.js',
                                           plugins: [ 'istanbul' ] } } ] },
                                 { exclude: /node_modules/,
                                   test: /\.(spec|tests)\.js$/,
                                   use:
                                    [ { loader: 'babel-loader',
                                        options:
                                         { cacheDirectory: true,
                                           extends:
                                            '/project/scripts/build/babel.config.js',
                                           plugins: [ 'istanbul' ] } } ] } ] },
                           optimization:
                            { concatenateModules: false,
                              minimizer: [],
                              splitChunks: { chunks: 'all' } },
                           output: {},
                           plugins: [],
                           resolve:
                            { alias:
                               { ccApp: '/project/src/ccApp',
                                 ccDesignSystem: '/project/src/ccDesignSystem',
                                 ccUser: '/project/src/ccUser',
                                 extCss:
                                  '/project/app/Assets/stylesheets',
                                 node_modules: '/project/node_modules',
                                 webroot: '/project/app/webroot' } },
                           stats:
                            { assets: false,
                              builtAt: false,
                              cached: false,
                              cachedAssets: false,
                              children: false,
                              chunkModules: false,
                              chunks: false,
                              entrypoints: false,
                              errorDetails: false,
                              excludeAssets: [Function: excludeAssets],
                              hash: false,
                              modules: false,
                              reasons: false,
                              source: false,
                              timings: true,
                              version: false,
                              warnings: false },
                           watch: true },
                        webpackMiddleware: { logLevel: 'error', stats: 'errors-only' } },
                      'value' ],
                   preprocess:
                    [ [Function: invoke],
                      { [Function: createPreprocessor]
                        '$inject': [ 'config.preprocessors', 'config.basePath', 'injector' ] },
                      'factory' ],
                   fileList:
                    [ [Function: invoke],
                      { [Function] '$inject': [ 'config', 'emitter', 'preprocess' ] },
                      'factory' ],
                   webServer:
                    [ [Function: invoke],
                      { [Function: createWebServer] '$inject': [ 'injector', 'config' ] },
                      'factory' ],
                   serveFile:
                    [ [Function: invoke],
                      { [Function: createServeFile] '$inject': [ 'config' ] },
                      'factory' ],
                   serveStaticFile:
                    [ [Function: invoke],
                      { [Function: createServeStaticFile] '$inject': [ 'config' ] },
                      'factory' ],
                   filesPromise:
                    [ [Function: invoke], [Function: createFilesPromise], 'factory' ],
                   readFilePromise:
                    [ [Function: invoke],
                      { [Function: createReadFilePromise] '$inject': [] },
                      'factory' ],
                   socketServer:
                    [ [Function: invoke],
                      [Function: createSocketIoServer],
                      'factory' ],
                   executor: [ [Function: invoke], [Function], 'factory' ],
                   customFileHandlers: [ [Function: value], [], 'value' ],
                   customScriptTypes: [ [Function: value], [], 'value' ],
                   reporter:
                    [ [Function: invoke],
                      { [Function: createReporters]
                        '$inject': [ 'config.reporters', 'config', 'emitter', 'injector' ] },
                      'factory' ],
                   capturedBrowsers: [ [Function: invoke], [Function], 'factory' ],
                   args: [ [Function: value], {}, 'value' ],
                   timer:
                    [ [Function: value],
                      { setTimeout: [Function: setTimeout],
                        clearTimeout: [Function: clearTimeout] },
                      'value' ],
                   'launcher:Chrome':
                    [ [Function: instantiate],
                      { [Function: ChromeBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                      'type' ],
                   'launcher:ChromeHeadless':
                    [ [Function: instantiate],
                      { [Function: ChromeHeadlessBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                      'type' ],
                   'launcher:ChromeCanary':
                    [ [Function: instantiate],
                      { [Function: ChromeCanaryBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                      'type' ],
                   'launcher:ChromeCanaryHeadless':
                    [ [Function: instantiate],
                      { [Function: ChromeCanaryHeadlessBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                      'type' ],
                   'launcher:Chromium':
                    [ [Function: instantiate],
                      { [Function: ChromiumBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                      'type' ],
                   'launcher:ChromiumHeadless':
                    [ [Function: instantiate],
                      [Function: ChromiumHeadlessBrowser],
                      'type' ],
                   'launcher:Dartium':
                    [ [Function: instantiate],
                      { [Function: DartiumBrowser] '$inject': [ 'baseBrowserDecorator', 'args' ] },
                      'type' ],
                   test: [ undefined, undefined, undefined ],
                   'preprocessor:concat':
                    [ [Function: invoke],
                      { [Function: initPreprocessor] '$inject': [ 'config.basePath', 'config.concat', 'logger' ] },
                      'factory' ],
                   'preprocessor:coverage':
                    [ [Function: invoke],
                      { [Function: createCoveragePreprocessor]
                        '$inject':
                         [ 'logger',
                           'helper',
                           'config.basePath',
                           'config.reporters',
                           'config.coverageReporter' ] },
                      'factory' ],
                   'reporter:coverage':
                    [ [Function: instantiate],
                      { [Function: CoverageReporter] '$inject': [ 'config', 'helper', 'logger', 'emitter' ] },
                      'type' ],
                   'framework:jasmine':
                    [ [Function: invoke],
                      { [Function: initJasmine] '$inject': [ 'config.files' ] },
                      'factory' ],
                   'framework:jasmine-jquery':
                    [ [Function: invoke],
                      { [Function: initJasmine_jquery] '$inject': [ 'config.files' ] },
                      'factory' ],
                   'reporter:notify':
                    [ [Function: instantiate],
                      { [Function: NotifyReporter]
                        '$inject':
                         [ 'baseReporterDecorator',
                           'helper',
                           'logger',
                           'config',
                           'formatError' ] },
                      'type' ],
                   'framework:source-map-support':
                    [ [Function: invoke],
                      { [Function: init] '$inject': [ 'config.files' ] },
                      'factory' ],
                   'preprocessor:webpack':
                    [ [Function: invoke],
                      { [Function: preprocessorFactory] '$inject': [ 'config', 'emitter' ] },
                      'factory' ],
                   'framework:webpack':
                    [ [Function: invoke],
                      { [Function: registerExtraWebpackFiles] '$inject': [ 'config' ] },
                      'factory' ],
                   registerExtraWebpackFiles: [ undefined, undefined, undefined ],
                   configToWebpackEntries: [ undefined, undefined, undefined ],
                   'launcher:ChromeHeadlessNoSandbox': [ [Function: invoke], [Function], 'factory' ] },
                _instances:
                 [Object: null prototype] {
                   injector: [Circular],
                   config:
                    Config {
                      LOG_DISABLE: 'OFF',
                      LOG_ERROR: 'ERROR',
                      LOG_WARN: 'WARN',
                      LOG_INFO: 'INFO',
                      LOG_DEBUG: 'DEBUG',
                      frameworks:
                       [ 'webpack', 'source-map-support', 'jasmine-jquery', 'jasmine' ],
                      protocol: 'http:',
                      port: 9876,
                      listenAddress: '0.0.0.0',
                      hostname: 'localhost',
                      httpsServerConfig: {},
                      basePath: '/project/scripts/build',
                      files:
                       [ Pattern {
                           pattern:
                            '/project/scripts/build/legacyVendors.js',
                           served: true,
                           included: true,
                           watched: false,
                           nocache: false,
                           weight: [ 1, 0, 0, 0, 0, 0 ],
                           type: undefined },
                         Pattern {
                           pattern:
                            '/project/scripts/jasmine.test.helper.js',
                           served: true,
                           included: true,
                           watched: false,
                           nocache: false,
                           weight: [ 1, 0, 0, 0, 0, 0 ],
                           type: undefined },
                         Pattern {
                           pattern:
                            '/project/src/cc@(App|User)/**/*.@(spec|tests).js',
                           served: true,
                           included: true,
                           watched: false,
                           nocache: false,
                           weight: [ 1, 1, 1, 2, 0, 0 ],
                           type: undefined } ],
                      browserConsoleLogOptions: { level: 'debug', format: '%b %T: %m', terminal: true },
                      customContextFile: null,
                      customDebugFile: null,
                      customClientContextFile: null,
                      exclude:
                       [ '/project/scripts/build/karma.config' ],
                      logLevel: 'ERROR',
                      colors: true,
                      autoWatch: true,
                      autoWatchBatchDelay: 250,
                      restartOnFileChange: false,
                      usePolling: false,
                      reporters: [ 'dots', 'notify', 'coverage' ],
                      singleRun: false,
                      browsers: [ 'ChromeHeadlessNoSandbox' ],
                      captureTimeout: 60000,
                      proxies: {},
                      proxyValidateSSL: true,
                      preprocessors:
                       [Object: null prototype] {
                         '/project/scripts/jasmine.test.helper.js': [ 'webpack' ],
                         '/project/src/cc@(App|User)/**/*.@(spec|tests).js': [ 'webpack' ],
                         '/project/scripts/build/**/*': [ 'concat' ],
                         '/project/scripts/build/**/!(*.spec|*.tests).js': [ 'coverage' ] },
                      urlRoot: '/',
                      upstreamProxy: undefined,
                      reportSlowerThan: 0,
                      loggers:
                       [ { type: 'console',
                           layout: { type: 'pattern', pattern: '%[%d{DATE}:%p [%c]: %]%m' } } ],
                      transports: [ 'polling', 'websocket' ],
                      forceJSONP: false,
                      plugins:
                       [ 'karma-*',
                         [Object: null prototype] {
                           'launcher:ChromeHeadlessNoSandbox': [ 'factory', [Function] ] } ],
                      client:
                       { args: [],
                         useIframe: true,
                         runInParent: false,
                         captureConsole: true,
                         clearContext: true },
                      defaultClient:
                       { args: [],
                         useIframe: true,
                         runInParent: false,
                         captureConsole: true,
                         clearContext: true },
                      browserDisconnectTimeout: 2000,
                      browserDisconnectTolerance: 0,
                      browserNoActivityTimeout: 120000,
                      processKillTimeout: 2000,
                      concurrency: Infinity,
                      failOnEmptyTestSuite: true,
                      retryLimit: 2,
                      detached: false,
                      crossOriginAttribute: true,
                      browserSocketTimeout: 20000,
                      cmd: 'start',
                      configFile:
                       '/project/scripts/build/karma.config',
                      customLaunchers:
                       { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: [ '--no-sandbox' ] } },
                      concat:
                       { footer: '',
                         header: '',
                         outputs:
                          [ { file: 'legacyVendors.js',
                              inputs:
                               [ /* 33 file paths */ ] } ] },
                      coverageReporter:
                       { check:
                          { global: { branches: 30, functions: 48, lines: 60, statements: 60 } },
                         reporters:
                          [ { type: 'json',
                              dir: '/project/reports/coverage',
                              subdir: '.' },
                            { type: 'text-summary' } ] },
                      notifyReporter: { reportEachFailure: true, reportSuccess: false },
                      webpack:
                       { devtool: 'inline-source-map',
                         entry: {},
                         mode: 'development',
                         module:
                          { rules:
                             [ { test: /\.(c|sa|sc)ss$/, use: [ 'ignore-loader' ] },
                               { test: /\.html$/,
                                 use:
                                  [ { loader: 'ngtemplate-loader',
                                      options:
                                       { exportAsEs6Default: true,
                                         relativeTo: '/project/src',
                                         requireAngular: true } },
                                    { loader: 'html-loader',
                                      options: { attrs: [], minifyCSS: false, minimize: false } } ] },
                               { test: /\.json$/,
                                 type: 'javascript/auto',
                                 use: [ 'json5-loader' ] },
                               { exclude: /node_modules|app\/webroot|\.(spec|tests)\.js$/,
                                 test: /\.js$/,
                                 use:
                                  [ { loader: 'babel-loader',
                                      options:
                                       { cacheDirectory: true,
                                         extends:
                                          '/project/scripts/build/babel.config.js',
                                         plugins: [ 'istanbul' ] } } ] },
                               { exclude: /node_modules/,
                                 test: /\.(spec|tests)\.js$/,
                                 use:
                                  [ { loader: 'babel-loader',
                                      options:
                                       { cacheDirectory: true,
                                         extends:
                                          '/project/scripts/build/babel.config.js',
                                         plugins: [ 'istanbul' ] } } ] } ] },
                         optimization:
                          { concatenateModules: false,
                            minimizer: [],
                            splitChunks: { chunks: 'all' } },
                         output: {},
                         plugins: [],
                         resolve:
                          { alias:
                             { ccApp: '/project/src/ccApp',
                               ccDesignSystem: '/project/src/ccDesignSystem',
                               ccUser: '/project/src/ccUser',
                               extCss:
                                '/project/app/Assets/stylesheets',
                               node_modules: '/project/node_modules',
                               webroot: '/project/app/webroot' } },
                         stats:
                          { assets: false,
                            builtAt: false,
                            cached: false,
                            cachedAssets: false,
                            children: false,
                            chunkModules: false,
                            chunks: false,
                            entrypoints: false,
                            errorDetails: false,
                            excludeAssets: [Function: excludeAssets],
                            hash: false,
                            modules: false,
                            reasons: false,
                            source: false,
                            timings: true,
                            version: false,
                            warnings: false },
                         watch: true },
                      webpackMiddleware: { logLevel: 'error', stats: 'errors-only' } },
                   server: [Circular],
                   emitter: [Circular],
                   launcher:
                    Launcher {
                      _browsers: [],
                      launchSingle:
                       { [Function]
                         '$inject':
                          [ 'config.protocol',
                            'config.hostname',
                            'config.port',
                            'config.urlRoot',
                            'config.upstreamProxy',
                            'config.processKillTimeout' ] },
                      launch:
                       { [Function]
                         '$inject':
                          [ 'config.browsers',
                            'config.concurrency',
                            'config.processKillTimeout' ] },
                      kill: [Function],
                      restart: [Function],
                      killAll: [Function],
                      areAllCaptured: [Function],
                      markCaptured: [Function] },
                   logger:
                    { create: [Function: create],
                      setup: [Function: setup],
                      setupFromConfig: [Function: setupFromConfig],
                      _rebindLog4js4testing: [Function] },
                   helper:
                    { browserFullNameToShort: [Function],
                      isDefined: [Function],
                      mmPatternWeight: [Function],
                      mmComparePatternWeights: [Function],
                      isFunction: [Function: isFunction],
                      isString: [Function: isString],
                      isObject: [Function: isObject],
                      isArray: [Function: isArray],
                      isNumber: [Function: isNumber],
                      isUrlAbsolute: [Function],
                      camelToSnake: [Function],
                      ucFirst: [Function],
                      dashToCamel: [Function],
                      arrayRemove: [Function],
                      merge: [Function],
                      formatTimeInterval: [Function],
                      normalizeWinPath: [Function: identity],
                      mkdirIfNotExists: [Function],
                      defer: [Function],
                      saveOriginalArgs: [Function],
                      restoreOriginalArgs: [Function] },
                   'preprocessor:coverage': [Function],
                   'preprocessor:concat': [Function] },
                get: [Function: get],
                invoke: [Function: invoke],
                instantiate: [Function: instantiate],
                createChild: [Function: createChild] },
             _boundServer:
              Server {
                _events:
                 [Object: null prototype] { error: [Function], listening: [Function] },
                _eventsCount: 2,
                _maxListeners: undefined,
                _connections: 0,
                _handle:
                 TCP {
                   reading: false,
                   onread: null,
                   onconnection: [Function: onconnection],
                   [Symbol(owner)]: [Circular] },
                _usingWorkers: false,
                _workers: [],
                _unref: false,
                allowHalfOpen: false,
                pauseOnConnect: false,
                _connectionKey: '4:0.0.0.0:9876',
                [Symbol(asyncId)]: 15 } } } } ],
  entry:
   { /* 940 file paths */ },
  devtool: 'inline-source-map',
  module:
   { rules:
      [ { test: /\.(c|sa|sc)ss$/, use: [ 'ignore-loader' ] },
        { test: /\.html$/,
          use:
           [ { loader: 'ngtemplate-loader',
               options:
                { exportAsEs6Default: true,
                  relativeTo: '/project/src',
                  requireAngular: true } },
             { loader: 'html-loader',
               options: { attrs: [], minifyCSS: false, minimize: false } } ] },
        { test: /\.json$/,
          type: 'javascript/auto',
          use: [ 'json5-loader' ] },
        { exclude: /node_modules|app\/webroot|\.(spec|tests)\.js$/,
          test: /\.js$/,
          use:
           [ { loader: 'babel-loader',
               options:
                { cacheDirectory: true,
                  extends:
                   '/project/scripts/build/babel.config.js',
                  plugins: [ 'istanbul' ] } } ] },
        { exclude: /node_modules/,
          test: /\.(spec|tests)\.js$/,
          use:
           [ { loader: 'babel-loader',
               options:
                { cacheDirectory: true,
                  extends:
                   '/project/scripts/build/babel.config.js',
                  plugins: [ 'istanbul' ] } } ] } ] },
  resolve:
   { alias:
      { ccApp: '/project/src/ccApp',
        ccDesignSystem: '/project/src/ccDesignSystem',
        ccUser: '/project/src/ccUser',
        extCss:
         '/project/app/Assets/stylesheets',
        node_modules: '/project/node_modules',
        webroot: '/project/app/webroot' } } }
stevenvachon commented 5 years ago

This prevents the issue from occurring:

NODE_OPTIONS=--max_old_space_size=4096
eranimo commented 5 years ago

@stevenvachon That is not a solution, it's a workaround, and only for your particular use case. For larger apps, even 4096MB is not enough. There is clearly a memory leak somewhere.

stevenvachon commented 5 years ago

@eranimo thanks for clearing that up. If you think my comment is that unhelpful to everyone, feel free to remove it.

eranimo commented 5 years ago

No problem! It did confirm that this is actually memory related, so thanks.

codymikol commented 3 years ago

@eugenet8k @stevenvachon

How many test and project files are you roughly working with? I want to see if I can reproduce this locally somehow. My first guess is that a large amount of test files or project files could cause this, but it could very well be something else

stevenvachon commented 3 years ago

I'm no longer involved in the project encountering this issue.

codymikol commented 1 year ago

Closing as inactive