我有一个可以在各种不同模式下运行的应用程序。这些模式完全改变了UI,因此每种模式都需要一套完全不同的E2E测试。
我为每种模式创建了不同的wdio配置文件,并尝试为每种模式指定规格,以便仅运行指定的规格。不幸的是,这不起作用。
因此,现在有三个wdio.conf文件(所有文件都从wdio.conf.js的默认值继承)和以下文件夹结构:
+--test
+--specs
+--browser
+--modeA
+--testFile.js
+--modeB
+--testFile.js
+--wdio.conf.js
|
+--wdio.conf.modeA.js
|
+--wdio.conf.modeB.js
我为每种模式创建了npm命令,如下所示:
// (package.json)
...
"tools:e2e": "./node_modules/.bin/wdio wdio/wdio.conf.js",
"tools:e2e:modeA": "./node_modules/.bin/wdio wdio/wdio.conf.modeA.js",
"tools:e2e:modeB": "./node_modules/.bin/wdio wdio/wdio.conf.modeB.js",
...
好了,因此,在每个wdio.conf文件中,我指定了一些可能会在每种不同模式下更改的变量(它们都继承自wdio.conf),但是我想更改运行的文件,基本上指定我只想运行我运行
npm run tools:e2e:modeA
时在modeA文件夹中的文件,而我运行npm run tools:e2e:modeB
时仅运行modeB的文件。我试图通过如下定义每个conf文件中的规范来完成此操作:
// wdio.conf.js
specs: [
'./wdio/test/specs/browser/**/*.js'
],
-
// wdio.conf.modeA.js
specs: [
'./wdio/test/specs/browser/modeA/*.js'
],
exclude: [
'./wdio/test/specs/browser/modeB/*.js'
]
-
// wdio.conf.modeB.js
specs: [
'./wdio/test/specs/browser/modeB/*.js'
],
exclude: [
'./wdio/test/specs/browser/modeA/*.js'
]
但是,这给了我以下错误:
错误:specs或exclude属性应为字符串数组
这没有任何意义,因为如您所见,它们是字符串数组!
因此,基本上我想通过npm命令运行wdio测试,但只运行模式的文件夹,而不是全部。我怎样才能做到这一点?
PS:我试图将它们分成不同的套件,并在package.json的npm命令中指定我正在运行的套件,但是这样做后,我无法指定要运行的规格,这也是我利用很多。
最佳答案
wdio需要命令行参数。尝试这个"tools:e2e:modeA": "./node_modules/.bin/wdio wdio/wdio.conf.js --spec ./wdio/test/specs/browser/modeA/*.js","tools:e2e:modeB": "./node_modules/.bin/wdio wdio/wdio.conf.js --spec ./wdio/test/specs/browser/modeB/*.js"
这样,您只需要维护一个wdio.conf.js
文件
关于javascript - 如何使用wdio.conf.js文件指定要运行哪些e2e测试的测试文件夹?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45493591/