node.js - start - Karma no puede capturar PhantomJS
karma jasmine (2)
Hemos configurado un servidor de Jenkins CI que ejecuta Karma y se dirige a PhantomJS. Estamos realizando nuestras pruebas a través de Grunt. Jenkins, Grunt y Phantom están funcionando 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 corriendo 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.
Aquí están 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 esté atravesando correctamente y de 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 sale correctamente cuando usa una API pública con la devolución de llamada final
- Preprocesadores que no se ejecutan en Jenkins (Linux)
- "basePath" es relativo a "C: /" en lugar de archivo de configuración
- Karma config.js
- Reportero de cobertura / Estambul genera archivo LCOV con ruta relativa para el parámetro SF en lugar de la ruta absoluta
En mi caso agregando
transports: [''xhr-polling'', ''jsonp-polling'']
a karma.conf.js
fue suficiente. El verdadero problema era una versión muy antigua del karma (0.12). Ahora con 1.4. No necesito una CPU que consuma encuestas.