我如何使用wdio.conf.js文件来指定哪些e2etesting运行的testing文件夹?

我有一个运行在各种不同模式的应用程序。 这些模式完全改变了用户界面,因此每种模式都需要一套完全不同的E2Etesting。

我为每个模式创build了不同的wdioconfiguration文件,并试图为每个模式指定规格,以便它只运行指定的规格。 不幸的是,这是行不通的。

所以现在有三个wdio.conf文件(所有这些文件都是从wdio.conf.js中inheritance的)以及下面的文件夹结构:

+--test +--specs +--browser +--modeA +--testFile.js +--modeB +--testFile.js +--wdio.conf.js | +--wdio.conf.modeA.js | +--wdio.conf.modeB.js 

我为每个模式创build了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文件中,我指定了一些可能在每种不同模式下都改变的variables(这两个variables都是从wdio.confinheritance的),但是我想更改运行的文件,基本上只指定我只想运行当我运行npm run tools:e2e:modeA ,在modeA的文件夹中的文件,只运行modeB的文件,当我运行npm run tools:e2e: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' ] 

但是,这给我以下错误:

错误:规范或排除属性应该是一个string数组

这是没有意义的,因为你可以看到,它们是一串string!

所以基本上我想通过我的npm命令运行我的wdiotesting,但只运行模式的文件夹,而不是所有的。 我怎样才能做到这一点?

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"
"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文件