1

我有一個運行在各種不同模式的應用程序。這些模式完全改變了用戶界面,因此每種模式都需要一套完全不同的E2E測試。如何使用wdio.conf.js文件指定哪些e2e測試運行的測試文件夾?

我爲每種模式創建了不同的wdio配置文件,並試圖爲每個模式指定規格,以便它只運行指定的規格。不幸的是,這是行不通的。

所以現在有三個wdio.conf文件(所有這些都從wdio.conf.js默認繼承)和下列文件夾結構:我創建NPM命令每種模式

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

,這是如下:

// (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文件I指定一些變量可以在每個不同的模式改變(兩者從wdio.conf繼承),但我想改變什麼文件運行,基本上指定我只想運行modeA中的文件當我運行npm run tools:e2e:modeA時,運行模式B的文件,當我運行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' 
    ] 

然而,這是給我以下錯誤:

Error: specs or exclude property should be an array of strings

這是沒有意義的,因爲正如你所看到的,它們是一串字符串!

所以基本上我想通過我的npm命令運行我的wdio測試,但只運行模式的文件夾,而不是所有的。我怎樣才能做到這一點?

PS:我試圖將它們分離到不同的套件中,並指定我在package.json中的npm命令中運行的套件,但是通過這樣做,我無法指定要運行的規範,這也是我使用了很多東西。

+0

wdio已命令行參數,您可以使用。 –

回答

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

+2

這就是我一直在使用的,但是說每種模式的電子規格不止一個(我將它們分類爲套件)。這樣我們被限制在一個單一的規範,這不適合我。 但是,我已經打開了一個關於這個問題的問題,他們會對此工作:) 謝謝你的幫助,不管。 – theJuls

+0

你可以請鏈接到問題?我有興趣跟隨這個! – ktouchie

相關問題