我遇到一个问题,如果我使用测试脚本的绝对路径,则似乎只能运行单个 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",
任何帮助将不胜感激,因为这似乎是一件很基本的事情,这正在发疯。
非常感谢。
答案 0 :(得分:3)
首先,关于您的Jenkins工作的信息不足,无法做出有根据的猜测( NPM命令从何处触发?项目根目录是什么?)。因此,最好的选择是在NPM调用之前添加pwd
并充分了解项目的根源。然后,相应地更新您的命令。
现在...
对于手头的任务,最简单的方法(更不用说最干净的了),就是利用NightwatchJS test-groups和test-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文件夹寻找该文件。
希望有帮助。如有任何疑问,请回复。