【发布时间】:2017-08-03 20:02:45
【问题描述】:
我有一个以各种不同模式运行的应用程序。这些模式完全改变了 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 有命令行参数,你可以使用。
标签: javascript node.js selenium-webdriver e2e-testing webdriver-io