設定
可以透過在服務層級或能力層級設定 wdio:electronServiceOptions
來設定服務,其中能力層級的設定優先,例如,以下 WebdriverIO 設定
wdio.conf.ts
export const config = {
// ...
services: [
[
'electron',
{
appBinaryPath: '/foo/bar/myApp'
},
],
],
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appBinaryPath: '/foo/bar/myOtherApp'
appArgs: ['foo', 'bar'],
},
},
],
// ...
};
...將產生以下設定物件
{
"appBinaryPath": "/foo/bar/myOtherApp",
"appArgs": ["foo", "bar"]
}
服務選項
服務支援以下設定選項
appBinaryPath
:
要測試的應用程式的 Electron 二進位檔的路徑。在大多數情況下,服務會自動判斷您的應用程式的路徑,但如果由於某種原因而失敗,例如您的應用程式與您的測試位於不同的儲存庫中,則建議手動設定此值。
類型:string
appArgs
:
在執行測試時,要傳遞給應用程式的字串參數陣列。Electron 命令列開關和一些 Chromium 開關可以在這裡使用。
類型:string[]
clearMocks
:
在每次測試之前,對所有模擬的 API 呼叫 .mockClear()。這將清除模擬歷史記錄,但不會重設其實現。
類型:boolean
resetMocks
:
在每次測試之前,對所有模擬的 API 呼叫 .mockReset()。這將清除模擬歷史記錄,並將其實現重設為空函數(將傳回 undefined)。
類型:boolean
restoreMocks
:
在每次測試之前,對所有模擬的 API 呼叫 .mockRestore()。這將還原原始的 API 函數,模擬將被移除。
類型:boolean
Chromedriver 設定
wdio-electron-service
需要 Chromedriver 才能運作。Chromedriver 版本需要適合您的應用程式所建置的 Electron 版本,您可以讓服務處理(預設),也可以自行管理。
服務管理
如果您沒有指定 Chromedriver 二進位檔,則服務將下載並使用適合您應用程式的 Electron 版本的版本。您的應用程式的 Electron 版本由您的 package.json
中 electron
或 electron-nightly
的版本決定,但是您可能想要覆蓋此行為,例如,如果您要測試的應用程式與測試位於不同的儲存庫中。您可以透過設定 browserVersion
能力來手動指定 Electron 版本,如下列範例設定所示
wdio.conf.ts
export const config = {
// ...
services: ['electron'],
capabilities: [
{
browserName: 'electron',
browserVersion: '28.0.0',
},
],
// ...
};
使用者管理
如果您的應用程式使用的 Electron 版本低於 v26,則您需要手動設定 Chromedriver。
這是因為 WDIO 使用 Chrome for Testing 來下載 Chromedriver,這僅提供 v115 或更新版本的 Chromedriver 版本。
為了自行管理 Chromedriver,您可以直接安裝它,或透過其他方式安裝,例如 electron-chromedriver
,在這種情況下,您需要透過其自訂的 wdio:chromedriverOptions
能力告知 WebdriverIO 您的 Chromedriver 二進位檔在哪裡。
例如,為了在 Electron v19 應用程式中使用 WDIO,您必須從 https://chromedriver.chromium.org/downloads 下載 Chromedriver 102.0.5005.61
。然後您應該在 WDIO 設定中指定二進位檔路徑,如下所示
wdio.conf.ts
export const config = {
// ...
services: ['electron'],
capabilities: [
{
'browserName': 'electron',
'wdio:chromedriverOptions': {
binary: '/Users/wdio/Downloads/chromedriver', // path to Chromedriver you just downloaded
},
},
],
// ...
};