-
Notifications
You must be signed in to change notification settings - Fork 0
/
karma_start_all_configs.js
44 lines (35 loc) · 3.22 KB
/
karma_start_all_configs.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//var shared_config = require('./karma_shared.conf'); //Общая конфигурация
//var bench_config = require('./karma_bench.conf');
var karma = require("karma");
var path = require('path');
//var karmaParseConfig = require('karma/lib/config').parseConfig; //Вот утилитка кармы для парсинга конфигурации!!!
//var mocha_config = karmaParseConfig( path.resolve('./karma_mocha.conf') , {} ); //Видимо, вместо пустого объекта можно было указать конфиг, накладывающийся на конфиг (уже где-то видел такой пример)
// Так пробовал:
// var overrided_config = karmaParseConfig( path.resolve(sharedConfigFilePath), path.resolve(configFilePath) );
// var server = new karma.Server(overrided_config, resolve); server.start();
// Вроде работает объединение, хотя не факт... Сервак потом чего ругается
// Такой метод объединения указан здесь: http://www.snip2code.com/Snippet/32023/Gulp-Karma-Integration и здесь: http://stackoverflow.com/questions/23569367/how-do-i-correctly-access-karma-config-object-in-gulp-configuration-to-watch-fil
//@todo [Очень очень отдалённое] [Сомнительное] Возможно, следует попробовать запускать несколько серверов карма одновременно, а не последовательно как делаю это сейчас. Хотя попробовал (на PhantomJS) Не получается если оставлять один и тот же порт и если делать разные порты... До конца доводился только самый быстрый тест.. Может это ускорит производительность теста (а нужно ли?), но повысит нагрузку на сервер (ведь запустит несколько инстанций браузера)?
//Карму с разными конфигами можно запускать только через karma start, а не через karma run,
// т.к. последний вариант используется при смене кода тестов или источника, а не при смене конфигурации
/**
* Возвращает промис на окончание выполнение тестов по заданной конфигурации
* @param {string} configFilePath - Путь к файлу конфигурации KarmaJS
* @returns {Promise}
*/
function runKarmaWithConfig(configFilePath){
return new Promise(function(resolve, reject){
try {
configFilePath = path.resolve(configFilePath);
var server = new karma.Server( {configFile: configFilePath}, resolve);
server.start();
}
catch (err) {
reject(err);
}
})
}
//Последовательно запускаем нужные нам конфигурации
runKarmaWithConfig('./karma_mocha.conf.js')
.then(runKarmaWithConfig('./karma_bench.conf.js'))
//runKarmaWithConfig('./karma_bench.conf.js');