В настоящее время я пытаюсь запустить JCover в режиме веб-сервера, чтобы определить покрытие моих тестов Jasmine, которые выполняются в безголовом браузере PhantomJS. Я также использую grunt+nodejs для запуска тестов.
Код, который я использую в своем gruntfile для запуска сервера JOver и выполнения phantomJS:
// Start JSCover Server
var childProcess = require('child_process'),
var JSCOVER_PORT = "43287";
var JAVA_HOME = process.env.JAVA_HOME;
var jsCoverChildArgs = [
"-jar", "src/js/test/tools/JSCover-all.jar",
"-ws",
"--branch",
"--port="+JSCOVER_PORT,
"--document-root=./",
"--report-dir=target/",
"--no-instrument=src/js/lib/",
"--no-instrument=src/js/test/",
"--no-instrument=src/js/test/lib/"
];
var jsCoverProc = childProcess.spawn(JAVA_HOME + "/bin/java", jsCoverChildArgs);
// Start PhantomJS
var phantomjs = require('phantomjs'),
var binPath = phantomjs.path,
var childArgs = [
'src/js/test/lib/phantomjs_jasminexml_runner.js',
'http://localhost:'+JSCOVER_PORT+'/src/js/test/SpecRunner.html',
'target/surefire-reports'
];
runner = childProcess.execFile(binPath, childArgs);
runner.on('exit', function (code) {
// Tests have finished, so clean up the process
var success = (code === 0) ? true : false;
jsCoverProc.kill(); // kill the JSCover server now that we are done with it
done(success);
});
Однако, когда я запускаю веб-сервер на узле Jenkins в cloudbees, а затем запускаю для него phantomjs, я получаю одну из следующих ошибок:
Некоторые тесты начинают выполняться, но затем процесс завершается сбоем:
A spec : should be able to have a mock lo-dash ... Warning: Task "test" failed. Use --force to continue. Aborted due to warnings. Build step 'Execute shell' marked build as failure Recording test results Finished: FAILURE
PhantomJS не может получить доступ к серверу JOver:
Running "test" task phantomjs> Could not load 'http://127.0.0.1:43287/src/js/test/SpecRunner.html'. Warning: Task "test" failed. Use --force to continue.
Для второй ошибки я попытался использовать разные порты и имена хостов, которые я установил (например, 127.0.0.1 или localhost для имен хостов и 4327, 43287 и т. д. для портов). Порты не устанавливаются динамически во время сборки — они жестко запрограммированы в моем скрипте grunt.
Любые мысли о том, почему могут возникать указанные выше ошибки или почему у меня возникают проблемы с запуском и доступом к серверу Jover на узле Cloudbees Jenkins (но не на моем локальном компьютере)?