Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SystemJS + Karma + TypeScript - Not running test

I am trying to run some unit tests for few days now without success. My application is written in typescript (the unit tests are written in typescript as well). Here is my karma configuration file:

module.exports = function (config) {
  config.set({

    basePath: "../../../../",

    frameworks: [
      "jasmine",
      "systemjs"
    ],

    browsers: ['PhantomJS'],

    singleRun: true,
    reporters: ['progress'],

    systemjs: {
      config: {
        paths: {
          systemjs: "src/main/webapp/static/js/engage/lib/bower/system.js/dist/system.src.js",
          typescript: "build/node_modules/typescript/lib/typescript.js"
        },
        transpiler: "typescript"
      },

      // testFileSuffix: ".spec.ts"
    },

    files: [
      'src/main/webapp/static/js/engage/dist/vendor/vendor.min.js',
      'src/main/webapp/static/js/engage/lib/bower/system.js/dist/system-polyfills.src.js',
      'src/main/webapp/static/js/engage/lib/bower/angular-mocks/angular-mocks.js',
      {pattern: "src/main/webapp/static/js/engage/app/**/*.spec.ts", served: true, included: false}
    ]
  });
};

When I run karma start I get the following error:

05 09 2016 21:39:45.543:INFO [karma]: Karma v1.2.0 server started at http://localhost:9876/
05 09 2016 21:39:45.546:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
05 09 2016 21:39:45.558:INFO [launcher]: Starting browser PhantomJS
05 09 2016 21:39:47.631:INFO [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: Connected on socket /#c-ZoxCczyYymPDAtAAAA with id 8911412
05 09 2016 21:39:47.650:WARN [web-server]: 404: /base/src/main/webapp/static/js/engage/lib/bower/system.js/dist/system-polyfills.js
PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR
  You need to include some adapter that implements __karma__.start method!

If I change the browser property to Chrome, I get the following error:

Chrome 52.0.2743 (Mac OS X 10.11.6) ERROR
  Error: ReferenceError: jasmineRequire is not defined
            at eval (build/node_modules/karma-jasmine/lib/boot.js:14:32)
            at eval (build/node_modules/karma-jasmine/lib/boot.js:41:2)
        Evaluating build/node_modules/karma-jasmine/lib/boot.js
        Error loading build/node_modules/karma-jasmine/lib/boot.js

Here is my package.json relevant dependencies:

"phantomjs": "^1.9.11",
"karma-systemjs": "^0.14.0",
"karma-jasmine": "^1.0.2",
"karma-chrome-launcher": "^0.1.5",
"jasmine-core": "^2.5.0"

Any help would be appreciated!

like image 862
vlio20 Avatar asked Sep 05 '16 18:09

vlio20


2 Answers

  1. I would try to include systemjs as first framework as it is written in documentation
  2. Compile your typescript before loading it with systemjs and don't use systemjs typescript compile. That will decrease complexity of your karma tests which makes them more solid
  3. Try changing included to true for your spec files, that helped me with some issues. But I'm not sure about that
  4. leave your basePath at ./ as this als just makes trouble
  5. Check the path to your system.js as it throws a 404 error

My configuration for system.js looks like this

systemjs: {
    configFile: 'dev/systemjs.config.js',
    config: {
        map: {
            'systemjs':          'node_modules/systemjs/dist/system.js',
            'system-polyfills':  'node_modules/systemjs/dist/system-polyfills.js',
            'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js'
        }
    }
}

Maybe also some of the configuration snippets from this questions might help: Angular 2 + Karma + karma-jspm + karma-coverage + typescript report phantomJS failure

like image 83
DaSch Avatar answered Nov 15 '22 01:11

DaSch


Try to add the plugins option to the karma config

plugins: [
  'karma-jasmine',
  'karma-chrome-launcher'
],

Use the last node.js 6.5 and update your dependencies to the latest version

like image 45
vitomd Avatar answered Nov 15 '22 02:11

vitomd