在Jenkins上运行Cucumber-js时解析错误

时间:2018-09-03 13:19:49

标签: node.js jenkins jenkins-pipeline cucumberjs testcafe

我正在尝试设置一个詹金斯管道步骤,以使用cucumber-js运行一些测试方案,但是我从构建中得到一个错误,如下所示:

Error: Parse error in 'e2e/definitions/login.js': (1:1): expected:
#EOF, #Language, #TagLine, #FeatureLine, #Comment, #Empty, got 'const { Given, When, Then } = require('cucumber');'

在管道步骤中运行的命令如下:

cucumber-js e2e/features/**/*.feature --require e2e/**/*.js

错误所引用的login.js文件的开头行是:

const { Given, When, Then } = require('cucumber');
const { Selector } = require('testcafe');

我想知道这是否与nodejs版本差异有关,因为我在计算机上运行8.11.2并没有看到这些错误,在Jenkins上我们正在运行10.5.0

有人知道问题出在哪里吗,请指出正确的方向吗?

谢谢

2 个答案:

答案 0 :(得分:3)

您可能会遇到此问题,因为在--require模式之后指定的全局模式不会解析为真实文件名,但是在您的Jenkins上确实可以。尝试将e2e/**/*.js用双引号引起来: cucumber-js e2e/features/**/*.feature --require "e2e/**/*.js"

答案 1 :(得分:0)

您遇到的错误是一个Gherkin解析错误,因此我认为Cucumber将您的步骤定义文件视为Gherkin文件(功能文件)。我会检查您在本地使用的哪个版本的cucumber-js与在CI中使用的版本。如果版本不同,则您的CI可能缺少错误修正,或者正在使用其他版本的CLI。

我还强烈建议您以与CI(节点的相同版本,npm依赖项的固定版本)相同的方式设置本地环境,这为我省去了很多麻烦。