モジュール
WebdriverIOは、独自の自動化フレームワークを構築するために使用できる様々なモジュールをNPMやその他のレジストリに公開しています。WebdriverIOのセットアップタイプに関する詳細なドキュメントはこちらをご覧ください。
webdriver
と devtools
プロトコルパッケージ(webdriver
と devtools
)は、セッションを開始できる以下の静的関数が付加されたクラスを公開しています。
newSession(options, modifier, userPrototype, customCommandWrapper)
特定の機能で新しいセッションを開始します。セッションレスポンスに基づいて、異なるプロトコルからのコマンドが提供されます。
パラメータ
options
: WebDriver オプションmodifier
: 返される前にクライアントインスタンスを変更できる関数userPrototype
: インスタンスプロトタイプを拡張できるプロパティオブジェクトcustomCommandWrapper
: 関数呼び出しの周りに機能をラップできる関数
戻り値
- ブラウザ オブジェクト
例
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})
attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)
実行中のWebDriverまたはDevToolsセッションに接続します。
パラメータ
attachInstance
: セッションを接続するインスタンス、または少なくともプロパティ `sessionId` を持つオブジェクト(例:`{ sessionId: 'xxx' }`)modifier
: 返される前にクライアントインスタンスを変更できる関数userPrototype
: インスタンスプロトタイプを拡張できるプロパティオブジェクトcustomCommandWrapper
: 関数呼び出しの周りに機能をラップできる関数
戻り値
- ブラウザ オブジェクト
例
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)
`reloadSession(instance)`
指定されたインスタンスのセッションをリロードします。
パラメータ
- `instance`: リロードするパッケージインスタンス
例
const client = await WebDriver.newSession({...})
await WebDriver.reloadSession(client)
`webdriverio`
プロトコルパッケージ(`webdriver` と `devtools`)と同様に、WebdriverIOパッケージAPIを使用してセッションを管理することもできます。APIは `import { remote, attach, multiremote } from 'webdriverio` を使用してインポートでき、以下の機能が含まれています。
`remote(options, modifier)`
WebdriverIOセッションを開始します。インスタンスには、プロトコルパッケージと同様にすべてのコマンドが含まれていますが、追加の高次関数があります。APIドキュメントを参照してください。
パラメータ
- `options`: WebdriverIO オプション
modifier
: 返される前にクライアントインスタンスを変更できる関数
戻り値
- ブラウザ オブジェクト
例
import { remote } from 'webdriverio'
const browser = await remote({
capabilities: { browserName: 'chrome' }
})
`attach(attachOptions)`
実行中のWebdriverIOセッションに接続します。
パラメータ
- `attachOptions`: セッションを接続するインスタンス、または少なくともプロパティ `sessionId` を持つオブジェクト(例:`{ sessionId: 'xxx' }`)
戻り値
- ブラウザ オブジェクト
例
import { remote, attach } from 'webdriverio'
const browser = await remote({...})
const newBrowser = await attach(browser)
`multiremote(multiremoteOptions)`
単一のインスタンス内で複数のセッションを制御できるマルチリモートインスタンスを開始します。具体的なユースケースについては、マルチリモートの例をご覧ください。
パラメータ
- `multiremoteOptions`: ブラウザ名とそれらのWebdriverIOオプションを表すキーを持つオブジェクト。
戻り値
- ブラウザ オブジェクト
例
import { multiremote } from 'webdriverio'
const matrix = await multiremote({
myChromeBrowser: {
capabilities: { browserName: 'chrome' }
},
myFirefoxBrowser: {
capabilities: { browserName: 'firefox' }
}
})
await matrix.url('http://json.org')
await matrix.getInstance('browserA').url('https://google.com')
console.log(await matrix.getTitle())
// returns ['Google', 'JSON']
`@wdio/cli`
`wdio` コマンドを呼び出す代わりに、テストランナーをモジュールとしてインクルードし、任意の環境で実行することもできます。そのためには、`@wdio/cli` パッケージをモジュールとしてrequireする必要があります。方法は次のとおりです。
- EcmaScript モジュール
- CommonJS
import Launcher from '@wdio/cli'
const Launcher = require('@wdio/cli').default
その後、ランチャーのインスタンスを作成し、テストを実行します。
`Launcher(configPath, opts)`
`Launcher` クラスコンストラクターは、設定ファイルへのURLと、設定ファイルの値を上書きする設定を含む `opts` オブジェクトを予期します。
パラメータ
- `configPath`: 実行する `wdio.conf.js` へのパス
- `opts`: 設定ファイルの値を上書きする引数(`<RunCommandArguments>`)
例
const wdio = new Launcher(
'/path/to/my/wdio.conf.js',
{ spec: '/path/to/a/single/spec.e2e.js' }
)
wdio.run().then((exitCode) => {
process.exit(exitCode)
}, (error) => {
console.error('Launcher failed to start the test', error.stacktrace)
process.exit(1)
})
`run` コマンドは Promise を返します。テストが正常に実行された場合、または失敗した場合に解決され、ランチャーがテストの実行を開始できなかった場合に拒否されます。
`@wdio/browser-runner`
WebdriverIOのブラウザランナーを使用してユニットテストまたはコンポーネントテストを実行する場合、テスト用のモッキングユーティリティをインポートできます。例:
import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'
以下の名前付きエクスポートが利用可能です。
`fn`
モック関数。公式のVitestドキュメントで詳細をご覧ください。
`spyOn`
スパイ関数。公式のVitestドキュメントで詳細をご覧ください。
`mock`
ファイルまたは依存関係モジュールをモックするメソッド。
パラメータ
moduleName
: モックするファイルへの相対パスまたはモジュール名。factory
: モック値を返す関数(オプション)
例
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))
mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})
unmock
手動モック(__mocks__
)ディレクトリ内で定義されている依存関係のモックを解除します。
パラメータ
moduleName
: モックを解除するモジュールの名前。
例
unmock('lodash')