8

我们已经建立了一个运行Karma目标PhantomJS的Jenkins CI服务器。我们正在通过Grunt运行我们的测试。 Jenkins,Grunt和Phantom都运行正常,Karma似乎很好,但Karma无法捕捉到Phantom。我们的脚本在本地运行(OSX)就好了。同样的错误存在通过bash或通过詹金斯运行:Karma无法捕捉PhantomJS

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. 

我们的服务器是CentOS的6.4。

下面是我们运行的版本: 咕噜-CLI v0.1.9 咕噜v0.4.1 节点0.10.12和0.8.25。 phantomjs 1.9.1 业力0.8.6

任何帮助将不胜感激!

+0

我有一个完全不同的设置,但是当我得到'PhantomJS未能捕获'错误时,事实证明本地主机没有映射到127.0.0.1。这可能会引发此错误。 – mcv

回答

6

使用轮询代替插座和绝对路径而不是karma.conf.js配置文件中的相对路径,以确保目录结构被正确遍历和客户机/服务器连接没有外部依赖:

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'] 
    } 
); 
    }; 

参考

0

在我的情况下加

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

karma.conf.js就足够了。真正的问题是一个非常旧的业力版本(0.12)。现在用1.4。我不需要CPU消耗轮询。