設定
サービスは、サービスレベルまたは機能レベルで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()を呼び出します。これにより、モック履歴がクリアされ、実装が空の関数にリセットされます(未定義を返します)。
型: 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',
},
],
// ...
};
ユーザー管理
アプリがv26より前のバージョンのElectronを使用している場合は、Chromedriverを手動で設定する必要があります。
これは、WDIOがChromedriverをダウンロードするためにChrome for Testingを使用しており、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
},
},
],
// ...
};