メインコンテンツにスキップ

モジュール

WebdriverIOは、NPMやその他のレジストリに様々なモジュールを公開しており、それらを使用して独自の自動化フレームワークを構築することができます。WebdriverIOのセットアップタイプについての詳細はこちらをご覧ください。

webdriverdevtools

プロトコルパッケージ(webdriverdevtools)は、セッションを開始できる以下の静的関数を持つクラスを公開しています:

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

プロトコルパッケージ(webdriverdevtools)と同様に、WebdriverIOパッケージのAPIを使用してセッションを管理することもできます。これらのAPIはimport { remote, attach, multiremote } from 'webdriverio'を使ってインポートでき、以下の機能を含んでいます:

remote(options, modifier)

WebdriverIOセッションを開始します。インスタンスはプロトコルパッケージのすべてのコマンドを含みますが、追加の高階関数も含みます。APIドキュメントを参照してください。

パラメーター
戻り値
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)

単一のインスタンス内で複数のセッションを制御できるマルチリモートインスタンスを開始します。具体的な使用例については、multiremote examplesをご覧ください。

パラメーター
戻り値
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パッケージをモジュールとして要求する必要があります:

import Launcher from '@wdio/cli'

その後、ランチャーのインスタンスを作成し、テストを実行します。

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')

Welcome! How can I help?

WebdriverIO AI Copilot