The client arguments (clientArgs) given to "karma run" have no effect when I'm using RequireJS -


i'm trying pass grep argument karma-mocha plugin pass mocha , run tests match grep. command line this:

./node_modules/.bin/karma run -- --grep='one' 

however, karma goes on tests, in same way if not use --grep. according karma run --help, after -- should client arguments. (it referred clientarg in , in discussions how run karma run.) tried small project without requirejs , worked. seems adding requirejs causes problem. here small setup reproduces issue:

karma.conf.js:

module.exports = function(config) {   config.set({     basepath: '',     frameworks: ['mocha', 'requirejs'],     files: [       'test-main.js',       { pattern: 'test/**/*.js', included: false }     ],     exclude: [],     preprocessors: {},     reporters: ['progress'],     port: 9876,     colors: true,     loglevel: config.log_info,     autowatch: false,     browsers: ['chrome'],     singlerun: false,     concurrency: infinity   }); }; 

test-main.js:

var alltestfiles = []; var test_regexp = /(spec|test)\.js$/i;  object.keys(window.__karma__.files).foreach(function (file) {   if (test_regexp.test(file)) {     var normalizedtestmodule = file.replace(/^\/base\/|\.js$/g, '');     alltestfiles.push(normalizedtestmodule);   } });  require.config({   baseurl: '/base',   deps: alltestfiles,   callback: window.__karma__.start }); 

what see here functionally equivalent stock test-main.js generated karma init. edited remove comments, normalize space, , add semi-colons.

the test/test.js file contains:

it("one", function () {}); it("two", function () {}); 

explanation

this problem how karma init generates test-main.js file used configure requirejs , kick off test. issue not specific mocha happen other runners accept parameters passed through clientargs.

the test-main.js generated karma init broken. you can see here when karma calls start itself, it calls own configuration:

this.loaded = function () {   // has error -> cancel   if (!haserror) {     this.start(this.config)   } [...] 

however, test-main.js created karma init calls start without argument, , why plugin not getting arguments should getting.

solution

modify test-main.js have callback in requirejs config:

callback: window.__karma__.start.bind(window.__karma__, window.__karma__.config) 

this cause start called in same way in code snippet shown earlier. if reason not bind or need more in callback, do:

callback: function () {   // other stuff...   window.__karma__.start.call(window.__karma__, window.__karma__.config); }, 

Comments

Popular posts from this blog

sql - invalid in the select list because it is not contained in either an aggregate function -

Angularjs unit testing - ng-disabled not working when adding text to textarea -

How to start daemon on android by adb -