如何使用wdio.conf.js文件指定要运行哪些e2e测试的测试文件夹?

时间:2017-08-03 20:02:46

标签: javascript node.js selenium-webdriver e2e-testing webdriver-io

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

1 个答案:

答案 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文件