設定
セットアップタイプ(例:生のプロトコルバインディング、スタンドアロンパッケージとしてのWebdriverIO、またはWDIOテストランナーの使用)に基づいて、環境を制御するために利用できるオプションのセットが異なります。
WebDriverオプション
次のオプションは、webdriver
プロトコルパッケージを使用する場合に定義されます。
protocol
ドライバサーバーと通信する際に使用するプロトコル。
型: String
デフォルト: http
hostname
ドライバサーバーのホスト。
型: String
デフォルト: 0.0.0.0
port
ドライバサーバーが稼働しているポート。
型: Number
デフォルト: undefined
path
ドライバサーバーエンドポイントへのパス。
型: String
デフォルト: /
queryParams
ドライバサーバーに伝播されるクエリパラメータ。
型: Object
デフォルト: undefined
user
クラウドサービスのユーザー名(Sauce Labs、Browserstack、TestingBot、またはLambdaTestアカウントでのみ機能します)。設定した場合、WebdriverIOは自動的に接続オプションを設定します。クラウドプロバイダーを使用しない場合は、他のWebDriverバックエンドを認証するために使用できます。
型: String
デフォルト: undefined
key
クラウドサービスのアクセスキーまたはシークレットキー(Sauce Labs、Browserstack、TestingBot、またはLambdaTestアカウントでのみ機能します)。設定した場合、WebdriverIOは自動的に接続オプションを設定します。クラウドプロバイダーを使用しない場合は、他のWebDriverバックエンドを認証するために使用できます。
型: String
デフォルト: undefined
capabilities
WebDriverセッションで実行したいケイパビリティを定義します。詳細については、WebDriverプロトコルを確認してください。WebDriverプロトコルをサポートしない古いドライバを実行する場合は、セッションを正常に実行するためにJSONWireProtocolケイパビリティを使用する必要があります。
WebDriverベースのケイパビリティに加えて、リモートブラウザまたはデバイスへのより深い設定を可能にするブラウザ固有およびベンダー固有のオプションを適用できます。これらは、対応するベンダーのドキュメントに記載されています。例:
goog:chromeOptions
: Google Chromeの場合moz:firefoxOptions
: Mozilla Firefoxの場合ms:edgeOptions
: Microsoft Edgeの場合sauce:options
: Sauce Labsの場合bstack:options
: BrowserStackの場合selenoid:options
: Selenoidの場合
さらに、便利なユーティリティとして、Sauce Labsの自動テスト構成ツールがあります。これにより、必要なケイパビリティをクリックしてオブジェクトを作成できます。
型: Object
デフォルト: null
例
{
browserName: 'chrome', // options: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // browser version
platformName: 'Windows 10' // OS platform
}
モバイルデバイスでWebテストまたはネイティブテストを実行している場合、capabilities
はWebDriverプロトコルとは異なります。詳細については、Appiumドキュメントを参照してください。
logLevel
ログ出力の詳細度。
型: String
デフォルト: info
オプション: trace
| debug
| info
| warn
| error
| silent
outputDir
すべてのテストランナーログファイル(レポーターログとwdio
ログを含む)を保存するディレクトリ。設定されていない場合、すべてのログはstdout
にストリーミングされます。ほとんどのレポーターはstdout
にログを記録するように作られているため、レポートをファイルにプッシュすることがより理にかなっている特定のレポーター(たとえば、junit
レポーターなど)にのみこのオプションを使用することをお勧めします。
スタンドアロンモードで実行する場合、WebdriverIOによって生成されるログはwdio
ログのみです。
型: String
デフォルト: null
connectionRetryTimeout
ドライバまたはグリッドへのWebDriverリクエストのタイムアウト。
型: Number
デフォルト: 120000
connectionRetryCount
Seleniumサーバーへのリクエスト再試行の最大回数。
型: Number
デフォルト: 3
agent
カスタムhttp
/https
/http2
エージェントを使用してリクエストを行うことができます。
型: Object
デフォルト
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
すべてのWebDriverリクエストに渡すカスタムheaders
を指定します。Selenium GridでBasic認証が必要な場合は、このオプションを使用してWebDriverリクエストを認証するためのAuthorization
ヘッダーを渡すことをお勧めします。例:
import { Buffer } from 'buffer';
// Read the username and password from environment variables
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Combine the username and password with a colon separator
const credentials = `${username}:${password}`;
// Encode the credentials using Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
型: Object
デフォルト: {}
transformRequest
WebDriverリクエストが行われる前に、HTTPリクエストオプションをインターセプトする関数
型: (RequestOptions) => RequestOptions
デフォルト: なし
transformResponse
WebDriver応答が到着した後、HTTP応答オブジェクトをインターセプトする関数。関数には、最初の引数として元の応答オブジェクト、2番目の引数として対応するRequestOptions
が渡されます。
型: (Response, RequestOptions) => Response
デフォルト: なし
strictSSL
SSL証明書が有効である必要がないかどうか。環境変数としてSTRICT_SSL
またはstrict_ssl
で設定できます。
型: Boolean
デフォルト: true
enableDirectConnect
Appiumダイレクト接続機能を有効にするかどうか。フラグが有効になっている間、応答に適切なキーがない場合、何も行いません。
型: Boolean
デフォルト: true
cacheDir
キャッシュディレクトリのルートへのパス。このディレクトリは、セッションの開始を試みるときにダウンロードされるすべてのドライバを保存するために使用されます。
型: String
デフォルト: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
WebdriverIO
次のオプション(上記にリストされているオプションを含む)は、スタンドアロンのWebdriverIOで使用できます。
automationProtocol
WebdriverIOは、WebDriverのようなインターフェースを介した自動化プロトコルとしてのChrome Devtoolsの使用を非推奨としています。代わりに、webdriver
を使用する必要があります。
ブラウザ自動化に使用するプロトコルを定義します。現在、利用可能な主要なブラウザ自動化技術であるwebdriver
とdevtools
のみがサポートされています。
devtools
を使用してブラウザを自動化する場合は、NPMパッケージがインストールされていることを確認してください($ npm install --save-dev devtools
)。
型: String
デフォルト:webdriver
baseUrl
ベースURLを設定することで、url
コマンドの呼び出しを短縮します。
url
パラメータが/
で始まる場合、baseUrl
(baseUrl
にパスがある場合はパスを除く)が先頭に追加されます。url
パラメータがスキームまたは/
なし(some/path
など)で始まる場合、完全なbaseUrl
が直接先頭に追加されます。
型: String
デフォルト: null
waitforTimeout
すべてのwaitFor*
コマンドのデフォルトのタイムアウト。(オプション名に小文字のf
があることに注意してください。)このタイムアウトは、waitFor*
で始まるコマンドとそのデフォルトの待機時間にのみ影響します。
テストのタイムアウトを増やすには、フレームワークのドキュメントを参照してください。
型: Number
デフォルト:5000
waitforInterval
期待される状態(例:可視性)が変更されたかどうかを確認するための、すべてのwaitFor*
コマンドのデフォルトの間隔。
型: Number
デフォルト:500
region
Sauce Labsで実行している場合、異なるデータセンター(USまたはEU)間でテストを実行するように選択できます。リージョンをEUに変更するには、構成にregion: 'eu'
を追加します。
注意:これは、Sauce Labsアカウントに接続されているuser
オプションとkey
オプションを指定した場合にのみ有効です。
型: String
デフォルト:us
(VMまたはエミュレーター/シミュレーターの場合のみ)
Testrunner Options
以下のオプション(上記のオプションを含む)は、WDIOテストランナーでWebdriverIOを実行する場合にのみ定義されます。
specs
テスト実行の仕様を定義します。グロブパターンを指定して複数のファイルを一度に一致させるか、グロブまたはパスのセットを配列にラップして、単一のワーカープロセス内で実行することができます。すべてのパスは、構成ファイルのパスからの相対パスとして認識されます。
タイプ:(String | String[])[]
デフォルト:[]
exclude
テスト実行から仕様を除外します。すべてのパスは、構成ファイルのパスからの相対パスとして認識されます。
タイプ:String[]
デフォルト:[]
suites
さまざまなスイートを記述したオブジェクト。これは、wdio
CLIで--suite
オプションを指定して指定できます。
型: Object
デフォルト: {}
capabilities
上記のcapabilities
セクションと同じですが、multiremote
オブジェクト、または並列実行のための配列内の複数のWebDriverセッションを指定するオプションがあります。
上記で定義されているのと同じベンダーおよびブラウザ固有の機能も適用できます。
タイプ:Object
|Object[]
デフォルト:[{ maxInstances: 5, browserName: 'firefox' }]
maxInstances
合計で並列実行するワーカーの最大数。
注意:Sauce Labsのマシンのような一部の外部ベンダーでテストを実行する場合、100
もの高い数値になる可能性があります。そこでは、テストは単一のマシンではなく、複数のVMでテストされます。テストをローカルの開発マシンで実行する場合は、3
、4
、または5
などのより適切な数値を使用してください。基本的に、これは同時に起動してテストを実行するブラウザの数なので、マシンにどれだけのRAMがあるか、およびマシンで他のアプリがどれだけ実行されているかによって異なります。
型: Number
デフォルト:100
maxInstancesPerCapability
機能ごとの合計で並列実行するワーカーの最大数。
型: Number
デフォルト:100
injectGlobals
WebdriverIOのグローバル変数(例:browser
、$
、$$
)をグローバル環境に挿入します。false
に設定した場合、@wdio/globals
からインポートする必要があります(例:)。
import { browser, $, $$, expect } from '@wdio/globals'
注:WebdriverIOは、テストフレームワーク固有のグローバル変数の注入を処理しません。
型: Boolean
デフォルト: true
bail
特定の数のテスト失敗後にテスト実行を停止したい場合は、bail
を使用します。(デフォルトは0
で、テスト結果に関係なくすべてのテストを実行します。)注意:このコンテキストでのテストは、単一のスペックファイル(MochaまたはJasmineを使用する場合)内のすべてのテスト、またはフィーチャーファイル(Cucumberを使用する場合)内のすべてのステップです。単一のテストファイルのテスト内でbailの動作を制御する場合は、利用可能なフレームワークオプションを参照してください。
型: Number
デフォルト:0
(bailしない。すべてのテストを実行する)
specFileRetries
スペックファイル全体が失敗した場合に、スペックファイル全体を再試行する回数。
型: Number
デフォルト:0
specFileRetriesDelay
スペックファイルの再試行試行間の遅延(秒単位)
型: Number
デフォルト:0
specFileRetriesDeferred
再試行されたスペックファイルをすぐに再試行するか、キューの最後に延期するかどうか。
型: Boolean
デフォルト: true
groupLogsByTestSpec
ログ出力ビューを選択します。
false
に設定すると、異なるテストファイルからのログがリアルタイムで出力されます。並列で実行する場合、異なるファイルからのログ出力が混ざる可能性があることに注意してください。
true
に設定すると、ログ出力はテストスペックごとにグループ化され、テストスペックが完了したときにのみ出力されます。
デフォルトでは、ログがリアルタイムで出力されるようにfalse
に設定されています。
型: Boolean
デフォルト:false
services
サービスは、対応したくない特定のジョブを引き継ぎます。サービスは、ほとんど労力をかけずにテスト設定を強化します。
タイプ:String[]|Object[]
デフォルト:[]
framework
WDIOテストランナーで使用されるテストフレームワークを定義します。
型: String
デフォルト:mocha
オプション:mocha
| jasmine
mochaOpts, jasmineOpts and cucumberOpts
特定のフレームワーク関連のオプション。どのオプションが利用可能かについては、フレームワークアダプタのドキュメントを参照してください。詳細については、フレームワークを参照してください。
型: Object
デフォルト:{ timeout: 10000 }
cucumberFeaturesWithLineNumbers
行番号付きのCucumberフィーチャのリスト(Cucumberフレームワークを使用する場合)。
タイプ:String[]
デフォルト:[]
reporters
使用するレポーターのリスト。レポーターは文字列、または['reporterName', { /* reporter options */}]
の配列にすることができます。ここで、最初の要素はレポーター名を持つ文字列で、2番目の要素はレポーターオプションを持つオブジェクトです。
タイプ:String[]|Object[]
デフォルト:[]
例
reporters: [
'dot',
'spec'
['junit', {
outputDir: `${__dirname}/reports`,
otherOption: 'foobar'
}]
]
reporterSyncInterval
レポーターが非同期でログを報告する場合(たとえば、ログがサードパーティベンダーにストリーミングされる場合)に、同期されているかどうかを確認する間隔を決定します。
型: Number
デフォルト:100
(ミリ秒)
reporterSyncTimeout
テストランナーがエラーをスローするまで、レポーターがすべてのログのアップロードを完了するまでの最大時間を決定します。
型: Number
デフォルト:5000
(ミリ秒)
execArgv
子プロセスを起動するときに指定するNode引数。
タイプ:String[]
デフォルト: null
filesToWatch
--watch
フラグを使用して実行するときに、テストランナーに他のファイル(たとえば、アプリケーションファイル)も監視させるグロブ対応の文字列パターンのリスト。デフォルトでは、テストランナーはすでにすべてのスペックファイルを監視しています。
タイプ:String[]
デフォルト:[]
updateSnapshots
スナップショットを更新する場合はtrueに設定します。理想的には、CLIパラメータの一部として使用します(例:wdio run wdio.conf.js --s
)。
タイプ:'new' | 'all' | 'none'
デフォルト:提供されておらず、テストがCIで実行される場合はnone
、提供されていない場合はnew
、それ以外の場合は提供されたもの
resolveSnapshotPath
デフォルトのスナップショットパスをオーバーライドします。たとえば、テストファイルの隣にスナップショットを保存する場合。
export const config: WebdriverIO.Config = {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
}
タイプ:(testPath: string, snapExtension: string) => string
デフォルト:スナップショットファイルをテストファイルの隣の__snapshots__
ディレクトリに保存します
tsConfigPath
WDIOはtsx
を使用してTypeScriptファイルをコンパイルします。TSConfigは現在の作業ディレクトリから自動的に検出されますが、ここでカスタムパスを指定するか、TSX_TSCONFIG_PATH環境変数を設定することで指定できます。
tsx
のドキュメントを参照してください:https://tsx.is/usage#custom-tsconfig-json-path
型: String
デフォルト: null
Hooks
WDIOテストランナーでは、テストライフサイクルの特定のタイミングでトリガーされるフックを設定できます。これにより、カスタムアクション(たとえば、テストが失敗した場合のスクリーンショットの撮影)が可能になります。
すべてのフックには、ライフサイクルに関する特定の情報(たとえば、テストスイートまたはテストに関する情報)がパラメータとして含まれています。すべてのフックプロパティの詳細については、設定例を参照してください。
注意:一部のフック(onPrepare
、onWorkerStart
、onWorkerEnd
、およびonComplete
)は別のプロセスで実行されるため、ワーカープロセス内にある他のフックとグローバルデータを共有できません。
onPrepare
すべてのワーカーが起動される前に一度実行されます。
パラメータ
config
(object
):WebdriverIO設定オブジェクトparam
(object[]
):機能の詳細のリスト
onWorkerStart
ワーカープロセスが生成される前に実行され、そのワーカーの特定のサービスを初期化したり、ランタイム環境を非同期的に変更したりするために使用できます。
パラメータ
cid
(string
):機能ID(例:0-0)caps
(object
):ワーカーで生成されるセッションの機能を含みますspecs
(string[]
): ワーカープロセスで実行されるスペックargs
(object
): ワーカーの初期化時にメイン構成とマージされるオブジェクトexecArgv
(string[]
): ワーカープロセスに渡される文字列引数のリスト
onWorkerEnd
ワーカープロセスが終了した直後に実行されます。
パラメータ
cid
(string
):機能ID(例:0-0)exitCode
(number
): 0 - 成功、1 - 失敗specs
(string[]
): ワーカープロセスで実行されるスペックretries
(number
): "スペックファイルごとのリトライの追加"で定義されているスペックレベルのリトライ回数
beforeSession
WebDriverセッションとテストフレームワークを初期化する直前に実行されます。これにより、ケーパビリティまたはスペックに応じて構成を操作できます。
パラメータ
config
(object
):WebdriverIO設定オブジェクトcaps
(object
):ワーカーで生成されるセッションの機能を含みますspecs
(string[]
): ワーカープロセスで実行されるスペック
before
テストの実行が始まる前に実行されます。この時点で、browser
のようなすべてのグローバル変数にアクセスできます。カスタムコマンドを定義するのに最適な場所です。
パラメータ
caps
(object
):ワーカーで生成されるセッションの機能を含みますspecs
(string[]
): ワーカープロセスで実行されるスペックbrowser
(object
): 作成されたブラウザ/デバイスセッションのインスタンス
beforeSuite
スイートの開始前に実行されるフック(Mocha/Jasmineのみ)
パラメータ
suite
(object
): スイートの詳細
beforeHook
スイート内のフックが開始される前に実行されるフック(例:MochaでbeforeEachを呼び出す前に実行されます)
パラメータ
test
(object
): テストの詳細context
(object
): テストコンテキスト(CucumberにおけるWorldオブジェクトを表します)
afterHook
スイート内のフックが終了した後に実行されるフック(例:MochaでafterEachを呼び出した後に実行されます)
パラメータ
test
(object
): テストの詳細context
(object
): テストコンテキスト(CucumberにおけるWorldオブジェクトを表します)result
(object
): フックの結果(error
、result
、duration
、passed
、retries
プロパティが含まれます)
beforeTest
テストの前に実行される関数(Mocha/Jasmineのみ)。
パラメータ
test
(object
): テストの詳細context
(object
): テストが実行されたスコープオブジェクト
beforeCommand
WebdriverIOコマンドが実行される前に実行されます。
パラメータ
commandName
(string
): コマンド名args
(*
): コマンドが受け取る引数
afterCommand
WebdriverIOコマンドが実行された後に実行されます。
パラメータ
commandName
(string
): コマンド名args
(*
): コマンドが受け取る引数result
(number
): 0 - コマンド成功、1 - コマンドエラーerror
(Error
): エラーオブジェクト(存在する場合)
afterTest
テスト(Mocha/Jasmine)が終了した後に実行される関数。
パラメータ
test
(object
): テストの詳細context
(object
): テストが実行されたスコープオブジェクトresult.error
(Error
): テストが失敗した場合のエラーオブジェクト、それ以外の場合はundefined
result.result
(Any
): テスト関数の戻り値オブジェクトresult.duration
(Number
): テストの実行時間result.passed
(Boolean
): テストが合格した場合true、それ以外の場合はfalseresult.retries
(Object
): MochaとJasmine、およびCucumberで定義された、単一テスト関連のリトライに関する情報。例:{ attempts: 0, limit: 0 }
、参照result
(object
): フックの結果(error
、result
、duration
、passed
、retries
プロパティが含まれます)
afterSuite
スイートが終了した後に実行されるフック(Mocha/Jasmineのみ)
パラメータ
suite
(object
): スイートの詳細
after
すべてのテストが完了した後に実行されます。テストからのすべてのグローバル変数に引き続きアクセスできます。
パラメータ
result
(number
): 0 - テスト合格、1 - テスト失敗caps
(object
):ワーカーで生成されるセッションの機能を含みますspecs
(string[]
): ワーカープロセスで実行されるスペック
afterSession
WebDriverセッションを終了した直後に実行されます。
パラメータ
config
(object
):WebdriverIO設定オブジェクトcaps
(object
):ワーカーで生成されるセッションの機能を含みますspecs
(string[]
): ワーカープロセスで実行されるスペック
onComplete
すべてのワーカーがシャットダウンされ、プロセスが終了しようとしているときに実行されます。onCompleteフックでスローされたエラーは、テスト実行の失敗につながります。
パラメータ
exitCode
(number
): 0 - 成功、1 - 失敗config
(object
):WebdriverIO設定オブジェクトcaps
(object
):ワーカーで生成されるセッションの機能を含みますresult
(object
): テスト結果を含む結果オブジェクト
onReload
リフレッシュが発生したときに実行されます。
パラメータ
oldSessionId
(string
): 古いセッションのセッションIDnewSessionId
(string
): 新しいセッションのセッションID
beforeFeature
CucumberのFeatureの前に実行されます。
パラメータ
uri
(string
): Featureファイルへのパスfeature
(GherkinDocument.IFeature
): Cucumberのfeatureオブジェクト
afterFeature
CucumberのFeatureの後に実行されます。
パラメータ
uri
(string
): Featureファイルへのパスfeature
(GherkinDocument.IFeature
): Cucumberのfeatureオブジェクト
beforeScenario
CucumberのScenarioの前に実行されます。
パラメータ
world
(ITestCaseHookParameter
): ピクルとテストステップに関する情報を含むワールドオブジェクトcontext
(object
): Cucumber Worldオブジェクト
afterScenario
CucumberのScenarioの後に実行されます。
パラメータ
world
(ITestCaseHookParameter
): ピクルとテストステップに関する情報を含むワールドオブジェクトresult
(object
): シナリオの結果を含む結果オブジェクトresult.passed
(boolean
): シナリオが合格した場合trueresult.error
(string
): シナリオが失敗した場合のエラースタックresult.duration
(number
): シナリオの実行時間(ミリ秒単位)context
(object
): Cucumber Worldオブジェクト
beforeStep
CucumberのStepの前に実行されます。
パラメータ
step
(Pickle.IPickleStep
): Cucumberのstepオブジェクトscenario
(IPickle
): Cucumberのシナリオオブジェクトcontext
(object
): Cucumber Worldオブジェクト
afterStep
CucumberのStepの後に実行されます。
パラメータ
step
(Pickle.IPickleStep
): Cucumberのstepオブジェクトscenario
(IPickle
): Cucumberのシナリオオブジェクトresult
: (object
): ステップの結果を含む結果オブジェクトresult.passed
(boolean
): シナリオが合格した場合trueresult.error
(string
): シナリオが失敗した場合のエラースタックresult.duration
(number
): シナリオの実行時間(ミリ秒単位)context
(object
): Cucumber Worldオブジェクト
beforeAssertion
WebdriverIOのアサーションが発生する前に実行されるフック。
パラメータ
params
: アサーション情報params.matcherName
(string
): マッチャーの名前(例:toHaveTitle
)params.expectedValue
: マッチャーに渡される値params.options
: アサーションオプション
afterAssertion
WebdriverIOのアサーションが発生した後に実行されるフック。
パラメータ
params
: アサーション情報params.matcherName
(string
): マッチャーの名前(例:toHaveTitle
)params.expectedValue
: マッチャーに渡される値params.options
: アサーションオプションparams.result
: アサーション結果