Configure Karma to use global PhantomJS install on Linux Jenkins

406 Views Asked by At

I'm trying to get my Karma Unit tests to run on a remote Jenkins server. This Jenkins server is running on Linux with an old version of PhantomJS already installed and PHANTOMJS_BIN defined in the env. I'm using the gulp-karma and karma-phantomjs-launcher-nonet packages to run the karma tests.

However, when jenkins fires Karma, it seems to be unable to spawn PhantomJS. I get the following error:

[13:33:00] Starting Karma server... [32mINFO [karma]: [39mKarma v0.12.37 server started at http://localhost:9876/ [32mINFO [launcher]: [39mStarting browser PhantomJS [31mERROR [karma]: [39m{ [Error: spawn EACCES] code: 'EACCES', errno: 'EACCES', syscall: 'spawn' } Error: spawn EACCES at exports._errnoException (util.js:874:11) at ChildProcess.spawn (internal/child_process.js:298:11) at exports.spawn (child_process.js:339:9) at Object._execCommand (/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launchers/process.js:63:21) at Object._start (/appl/jenkins/workspace/ps-lib/node_modules/karma-phantomjs-launcher-nonet/index.js:40:10) at Object. (/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launchers/process.js:14:10) at emitOne (events.js:82:20) at Object.emit (events.js:169:7) at Object.start (/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launchers/base.js:40:10) at /appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launcher.js:88:15 at Array.forEach (native) at [object Object].launch (/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/launcher.js:40:11) at [object Object].invoke (/appl/jenkins/workspace/ps-lib/node_modules/karma/node_modules/di/lib/injector.js:75:15) at Server. (/appl/jenkins/workspace/ps-lib/node_modules/karma/lib/server.js:62:18) at Server.g (events.js:260:16) at emitNone (events.js:72:20) at Server.emit (events.js:166:7) at emitListeningNT (net.js:1260:10) at doNTCallback1 (node.js:430:9) at process._tickCallback (node.js:352:17)

/appl/jenkins/workspace/ps-lib/tasks/test.js:15 throw err; ^ Error: karma exited with code 1 at done (/appl/jenkins/workspace/ps-lib/node_modules/gulp-karma/index.js:56:30) at ChildProcess. (/appl/jenkins/workspace/ps-lib/node_modules/gulp-karma/index.js:82:7) at emitTwo (events.js:87:13) at ChildProcess.emit (events.js:172:7) at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)

So it seems to me that my karma is unable to run PhantomJS due to authorisation reasons, am I right? Still the phantomjs installation is done with user jenkins//jenkins so jenkins should be able to run it, right?

0

There are 0 best solutions below