Karma no puede capturar PhantomJS

Hemos configurado un servidor Jenkins CI que ejecuta Karma dirigido a PhantomJS. Estamos ejecutando nuestras pruebas a través de Grunt. Jenkins, Grunt y Phantom se ejecutan correctamente, y Karma parece comenzar bien, pero Karma no puede capturar a Phantom. Nuestros scripts se ejecutan localmente (OSX) muy bien. El mismo error existe al ejecutarse a través de bash o a través de Jenkins:

Running "karma:jenkins-unit" (karma) task [2013-07-03 11:03:12.168] [WARN] config - urlRoot normalized to "/__karma/" DEBUG [reporter]: Using reporter "dots". DEBUG [reporter]: Using reporter "junit". DEBUG [reporter]: Using reporter "coverage". INFO [karma]: Karma server started at http://localhost:8084/__karma/ INFO [launcher]: Starting browser PhantomJS DEBUG [launcher]: Creating temp dir at /tmp/testacular-7720703 DEBUG [launcher]: phantomjs /tmp/testacular-7720703/capture.js INFO [karma]: To run via this server, use "karma run --runner-port 9104" ... WARN [launcher]: PhantomJS have not captured in 60000 ms, killing. DEBUG [launcher]: Process PhantomJS exitted with code 0 DEBUG [launcher]: Cleaning temp dir /tmp/testacular-7720703 INFO [launcher]: Trying to start PhantomJS again. DEBUG [launcher]: Creating temp dir at /tmp/testacular-7720703 DEBUG [launcher]: phantomjs /tmp/testacular-7720703/capture.js WARN [launcher]: PhantomJS have not captured in 60000 ms, killing. DEBUG [launcher]: Process PhantomJS exitted with code 0 DEBUG [launcher]: Cleaning temp dir /tmp/testacular-7720703 INFO [launcher]: Trying to start PhantomJS again. DEBUG [launcher]: Creating temp dir at /tmp/testacular-7720703 DEBUG [launcher]: phantomjs /tmp/testacular-7720703/capture.js WARN [launcher]: PhantomJS have not captured in 60000 ms, killing. DEBUG [launcher]: Process PhantomJS exitted with code 0 DEBUG [karma]: PhantomJS failed to capture, aborting the run. DEBUG [launcher]: Disconnecting all browsers DEBUG [launcher]: Killing PhantomJS DEBUG [launcher]: Cleaning temp dir /tmp/testacular-7720703 Warning: Task "karma:jenkins-unit" failed. Use --force to continue. 

Nuestro servidor es CentOS 6.4.

Estas son las versiones que tenemos en ejecución: grunt-cli v0.1.9 grunt v0.4.1 nodo 0.10.12 y 0.8.25. phantomjs 1.9.1 karma 0.8.6

Cualquier ayuda sería muy apreciada!

Use sondeo en lugar de sockets y rutas absolutas en lugar de rutas relativas en el archivo de configuración karma.conf.js para asegurarse de que la estructura del directorio se recorra correctamente y que la conexión cliente / servidor no tenga dependencias externas:

 module.exports = function(config) { var absolute_root = process.cwd() + '/'; config.set ( { // https://npmjs.org/browse/keyword/karma-adapter frameworks: ['jasmine'], // list of files files: [ absolute_root + 'test/Spec/**/*.js', absolute_root + 'js/*.js', absolute_root + '../libs/jquery.js' ], usePolling: true, transports: ['xhr-polling', 'jsonp-polling'], browsers: ['PhantomJS'] } ); }; 

Referencias

  • Karma no puede ejecutar casos de prueba en phantomJS

  • Karma no se cierra correctamente cuando se utiliza una API pública con la callback final.

  • AngularJS + Socket.IO + karma no funciona en karma 0.8.5

  • El corredor de karma se cuelga indefinidamente

  • Los preprocesadores no se ejecutan en Jenkins (Linux)
  • “basePath” es relativo a “C: \” en lugar de al archivo de configuración
  • Karma config.js
  • Estambul / indicador de cobertura genera un archivo LCOV con una ruta relativa para el parámetro SF en lugar de una ruta absoluta

En mi caso añadiendo

 transports: ['xhr-polling', 'jsonp-polling'] 

Para karma.conf.js era suficiente. El problema real era una versión muy antigua del karma (0.12). Ahora con 1.4. No necesito CPU consumiendo sondeo.