我有一个以各种不同模式运行的应用程序。这些模式完全改变了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命令中运行的套件,但是通过这样做,我无法指定我想要运行哪个规范,也是我经常使用的东西。
答案 0 :(得分:1)
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
文件