node.js - 使用 Jenkins 运行 Protractor 测试抛出 "Test ` title` 应该是 "string"但给出的是 "function"而不是 .'"

标签 node.js jenkins continuous-integration protractor mocha.js

所以这有点让人头疼。

如果我从 Jenkins 作业运行 Protractor e2e 测试,它会失败:

[10:23:53] I/local - Starting selenium standalone server...
[10:23:53] I/launcher - Running 1 instances of WebDriver
[10:23:54] I/local - Selenium standalone server started at http://10.0.0.5:43412/wd/hub
[10:23:56] E/launcher - Error: Error: Test `title` should be a "string" but "function" was given instead.
    at new Test (/var/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_5.0.0/lib/node_modules/mocha/lib/test.js:24:11)
    at context.it.context.specify (/var/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_5.0.0/lib/node_modules/mocha/lib/interfaces/bdd.js:84:18)
    at /var/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_5.0.0/lib/node_modules/protractor/node_modules/selenium-webdriver/testing/index.js:95:14
    at context.xit.context.xspecify.context.it.skip (/var/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_5.0.0/lib/node_modules/mocha/lib/interfaces/bdd.js:103:15)
    at Function.skip (/var/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_5.0.0/lib/node_modules/protractor/node_modules/selenium-webdriver/testing/index.js:98:14)
    at Suite.<anonymous> (/var/jenkins/workspace/vw3-predevelop-linux/src/Ui/dev/test/endToEnd/presetInteractions.scenario.js:87:8)
    at Object.create (/var/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_5.0.0/lib/node_modules/mocha/lib/interfaces/common.js:114:19)
    at context.describe.context.context (/var/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node_5.0.0/lib/node_modules/mocha/lib/interfaces/bdd.js:42:27)
    at Object.<anonymous> (/var/jenkins/workspace/develop-linux/src/Ui/dev/test/endToEnd/presetInteractions.scenario.js:8:1)
    at Module._compile (module.js:425:26)
[10:23:56] E/launcher - Process exited with error code 100

但是,如果我作为 Jenkins 用户使用相同版本的 Node (5.0.0) 和 npm (3.3.6) 以及相同的命令通过 ssh 连接到机器,测试运行得很好。 这是它加入 Mocha 的地方:https://github.com/mochajs/mocha/blob/master/lib/test.js#L24但我无法弄清楚为什么当 Jenkins 运行测试时它会是“不是字符串”,但当我 ssh 进入时它会很好。我还检查了我们的 presetInteractions.scenario.js 文件但是它与我们的任何其他 Protractor 文件没有什么不同,而且第 8 行肯定没有什么奇怪的......

var Utils = require('./utils');
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);

var expect = chai.expect;

describe('Preset interaction features', function() {
    before(function(done) {
        ...

最佳答案

所以,当然是版本不匹配了。我们检查了 NPM、Node 和 Protractor 的版本,但使用的 Mocha 版本确实不同(2.4.5 与 3.0.2)。回滚到 2.4.5 可消除此问题。

关于node.js - 使用 Jenkins 运行 Protractor 测试抛出 "Test ` title` 应该是 "string"但给出的是 "function"而不是 .'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38876476/

相关文章:

node.js - 如何在 Node Express.js 中使用 cookie-session

node.js - 如何同时为不同项目运行 npm install

build - Hudson/jenkins 不会因错误而失败

.net - 在 Dev 和 Jenkins 机器之间使用不同版本的 MSBUILD.exe

php - Drupal 部署/测试/不知道如何调用它工具

node.js - FacebookToken错误: This authorization code has been used passport-js

node.js - 为什么 Mongoose 验证器不验证字段类型?

jenkins - Jenkins(持续构建)能否查明导致构建失败的提交?

continuous-integration - 用于持续集成的 Markdown 语法检查?

github - 仅在阻止拉取请求时手动运行 GitHub 操作