运行个别Nightwatchjs测试的问题

时间:2019-12-19 15:24:56

标签: javascript nightwatch.js

我遇到一个问题,如果我使用测试脚本的绝对路径,则似乎只能运行单个 nightwatchjs 测试。

因此,例如,如果我从以下文件夹运行测试;

/Users/darrenharley/Documents/Git/uk-content-parkers/Tests/Functional/tests

带有以下内容;

npm run test:live /Users/darrenharley/Documents/Git/uk-content-parkers/Tests/Functional/tests/current_functionality/gamAds/PAR-5139.js

它正常工作。

但是,我需要在不使用本地文件结构的情况下运行此测试(最终将通过Jenkins构建运行,因此不能使用它)。

但是如果我使用以下命令进行测试;

npm run test:live ./current_functionality/gamAds/PAR-5139.js

它失败,并出现以下错误;

  

错误:ENOENT:没有这样的文件或目录,统计   './current_functionality/gamAds/PAR-5139.js'

我在这里明显做错了吗?

如果有帮助,在我的 nightwatch.conf.js 文件中,有这个文件

 src_folders: [
    'tests/',
  ],

在我的 package.json 文件中,我有这个文件

"test:live": "nightwatch --config config/nightwatch.conf.js --env live --suiteRetries 3",

任何帮助将不胜感激,因为这似乎是一件很基本的事情,这正在发疯。

非常感谢。

2 个答案:

答案 0 :(得分:3)

首先,关于您的Jenkins工作的信息不足,无法做出有根据的猜测( NPM命令从何处触发?项目根目录是什么?)。因此,最好的选择是在NPM调用之前添加pwd并充分了解项目的根源。然后,相应地更新您的命令。


现在...

对于手头的任务,最简单的方法(更不用说最干净的了),就是利用NightwatchJS test-groupstest-tags

❒使用test-tags

module.exports = {
  '@tags': ['PAR-5139', 'live', 'smoke'],
  'This is the PAR-5139 test': function (browser) {
     // > your code here <
  }
};

要启用逻辑,您的命令将变为:

npm run test:live -- --tag PAR-5139在添加额外的NightwatchJS开关之前,请注意--的必要前缀。需要分隔传递给npm命令本身的参数和传递给脚本的参数。

❒使用test-groups

让我们考虑以下tests结构:

tests/
  ├── current_functionality
  |   └── PAR-5139.js
  ├── critical_functionality
  |   └── PAR-5140.js
  |   └── PAR-5141.js
  └── dated_functionality
      ├── OLD-90210.js
      └── OLD-NO7-BRAND-SOUR-MASH.js

要启用逻辑,您的命令将变为:npm run test:live -- --group current_functionality

group开关将列表作为参数,因此您可以在同一命令中链接多个测试文件夹:npm run test:live -- --group current_functionality,critical_functionality

!注意:,请记住,您也可以使用--skipgroup开关(,也可以将其链接以排除一系列测试文件夹)。您还可以使用'disabled'的{​​{1}}属性,专门从测试运行中禁用测试用例:

true

答案 1 :(得分:0)

给出的路径是问题所在。 路径必须相对于根。如果是相对路径,则相对于根(package.json位于顶层)进行拾取。

如果目录结构为:

root
--tests
----PAR-5139.js
----
--src
--config
----nightwatch.config.json
--package.json

无论您是从测试文件夹还是根文件夹运行命令,该命令都将为npm run test:live ./tests/PAR-5139.js

在您的情况下,该命令从tests文件夹运行,并且相对于tests文件夹也给出了路径,但是该命令是针对root而不是tests文件夹寻找该文件。

希望有帮助。如有任何疑问,请回复。