我有一个可以在各种不同模式下运行的应用程序。这些模式完全改变了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/

10-09 05:47