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

Javascript 如何使用wdio.conf.js文件指定要运行e2e测试的测试文件夹?,javascript,node.js,selenium-webdriver,e2e-testing,webdriver-io,Javascript,Node.js,Selenium Webdriver,E2e Testing,Webdriver Io,我有一个应用程序,在各种不同的模式下运行。这些模式完全改变了UI,因此每个模式都需要一组完全不同的E2E测试 我为每种模式创建了不同的wdio配置文件,并尝试为每种模式指定规范,以便它只运行指定的规范。不幸的是,这不起作用 因此,现在有三个wdio.conf文件(所有文件都从wdio.conf.js的默认值继承)和以下文件夹结构: +--test +--specs +--browser +--modeA +--testFile.js

我有一个应用程序,在各种不同的模式下运行。这些模式完全改变了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.js
specs: [
    './wdio/test/specs/browser/**/*.js'
  ],
好的,在每个wdio.conf文件中,我指定了一些变量,这些变量可能会在不同的模式下发生变化(它们都继承自wdio.conf),但是我想更改运行的文件,基本上指定在运行
npm run tools:e2e:modeA
时只运行modeA文件夹中的文件,当我运行
npm运行工具:e2e:modeB
时,只运行modeB的文件

我试图通过在每个conf文件中定义规范来实现这一点,如下所示:

// (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.js
specs: [
    './wdio/test/specs/browser/**/*.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
文件

wdio有命令行参数,您可以使用它。这就是我一直在使用的,但可以说每个模式的e spec上有更多的参数(我将其捆绑到套件中)。这样的话,我们只限于一个规范,这对我来说是行不通的。但是,我已经打开了一个有关此问题的问题,他们将对此进行处理:)感谢您的帮助。您可以链接到该问题吗?我也对这个感兴趣!