angularjs - TeamCity : PhantomJS have not captured in 60000 ms, 查杀

标签 angularjs phantomjs karma-runner karma-jasmine

我在 CI 环境中运行测试时遇到问题。该配置在使用 Node v6.0.0/npm 3.8.6 的 MacOS 10.11.6 (El Capitan) 上运行良好,但在使用 Node v4.2.2/npm 2.14.7 运行 Windows 的 TeamCity 9.1.6 代理上,它严重失败,并显示PhantomJS 在 60000 毫秒内未捕获错误

以下是 TeamCity 上的堆栈跟踪示例:

[08:58:40][exec] 02 11 2016 08:58:41.095:DEBUG [config]: autoWatch set to false, because of singleRun
[08:58:40][exec] 02 11 2016 08:58:41.102:DEBUG [plugin]: Loading plugin karma-jasmine.
[08:58:40][exec] 02 11 2016 08:58:41.107:DEBUG [plugin]: Loading plugin karma-chrome-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.121:DEBUG [plugin]: Loading plugin karma-firefox-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.128:DEBUG [plugin]: Loading plugin karma-phantomjs-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.263:DEBUG [web-server]: Instantiating middleware
[08:58:41][exec] 02 11 2016 08:58:41.595:INFO [karma]: Karma v1.3.0 server started at http://localhost:9877/
[08:58:41][exec] 02 11 2016 08:58:41.596:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
[08:58:41][exec] 02 11 2016 08:58:41.616:INFO [launcher]: Starting browser PhantomJS
[08:58:41][exec] 02 11 2016 08:58:41.618:DEBUG [temp-dir]: Creating temp dir at E:\TCA\3\temp\buildTmp\karma-47802965
[08:58:41][exec] 02 11 2016 08:58:41.631:DEBUG [launcher]: E:\TCA\3\work\f900f2fe23d6c9b0\Preview\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs E:\TCA\3\temp\buildTmp\karma-47802965/capture.js
[08:59:41][exec] 02 11 2016 08:59:41.621:WARN [launcher]: PhantomJS have not captured in 60000 ms, killing.
[08:59:43][exec] 02 11 2016 08:59:43.624:WARN [launcher]: PhantomJS was not killed in 2000 ms, sending SIGKILL.
[08:59:45][exec] 02 11 2016 08:59:45.627:WARN [launcher]: PhantomJS was not killed by SIGKILL in 2000 ms, continuing.
[08:59:45][exec] 02 11 2016 08:59:45.628:DEBUG [launcher]: Process PhantomJS exited with code -1
[08:59:45][exec] 02 11 2016 08:59:45.629:DEBUG [temp-dir]: Cleaning temp dir E:\TCA\3\temp\buildTmp\karma-47802965
[08:59:45][exec] 02 11 2016 08:59:45.637:DEBUG [launcher]: PhantomJS failed (timeout). Not restarting.
[08:59:45][exec] 02 11 2016 08:59:45.638:DEBUG [karma]: Run complete, exiting.
[08:59:45][exec] 02 11 2016 08:59:45.639:DEBUG [launcher]: Disconnecting all browsers
[08:59:45][exec] Warning: Task "karma:unit" failed.  Use --force to continue.
[08:59:45][exec] 
[08:59:45][exec] Aborted due to warnings.
[08:59:45][exec] npm ERR! Test failed.  See above for more details.

这是 package.json 的片段:

"devDependencies": {
    "bower": "latest",
    "grunt": "^1.0.1",
    "grunt-cli": "^1.2.0",
    "grunt-contrib-jshint": "^1.0.0",
    "grunt-contrib-watch": "^1.0.0",
    "grunt-istanbul-coverage": "^0.1.4",
    "grunt-karma": "^2.0.0",
    "karma": "^1.3.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-firefox-launcher": "^1.0.0",
    "karma-jasmine": "^1.0.2",
    "karma-phantomjs-launcher": "^1.0.2",
    "jasmine-core": "^2.5.2",
    "matchdep": "^1.0.1"
},
"scripts": {
    "postinstall": "node ./node_modules/bower/bin/bower install",
    "test": "node ./node_modules/.bin/grunt default"
}

这是 karma.conf.js 的片段:

module.exports = function (config) {
'use strict';

config.set({
    frameworks: ['jasmine'],
    plugins: [
        'karma-jasmine',
        'karma-chrome-launcher',
        'karma-firefox-launcher',
        'karma-phantomjs-launcher'
    ],
    files: [
        <...>
    ],
    exclude: [],
    preprocessors: {
    },
    reporters: ['progress']
    port: 9877,
    runnerPort: 9101,
    colors: true,
    logLevel: config.LOG_DEBUG,
    autoWatch: true,
    browsers: ['PhantomJS'],
    captureTimeout: 60000,
    singleRun: true
});

最佳答案

问题已解决!在我们的 CI 环境中,我们没有通过运行 npm install 来获取节点模块 - 我们在本地压缩 node_modules 目录并将其添加到我们的源代码中。

在 Mac 上压缩它并在 Windows 上分解它并尝试使用这些模块,尤其是 phantomjs-prebuilt,是它没有捕获的原因。

我从 Windows 中将其压缩,并且运行良好。

关于angularjs - TeamCity : PhantomJS have not captured in 60000 ms, 查杀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382241/

相关文章:

javascript - $state.go - 更新 url

ajax - AngularJS - 使用 $http 时是否需要 $scope.$apply

使用 Phantom/Casper 测试 React 应用程序

javascript - 如何通过 Selenium WebDriver 在 PhantomJS 中禁用 JavaScript

javascript - 使用 angular-mocks/jasmine 测试服务 - TypeError : undefined is not an object

npm - 强制使用 1.9.8 PhantomJS 和 karma-phantomjs-launcher

angularjs - 如何在 ui-select2 中禁用删除图标

javascript - 是否使用 phonegap 在 iOS 上禁用水平滚动

unit-testing - 在 $http 的错误函数中抛出错误导致 $digest 已经在单元测试中进行

javascript - 限制 Karma 中的并行浏览器实例