設定
WebdriverIO をセットアップタイプ(例:生のプロトコルバインディングを使用、スタンドアロンパッケージとしての 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 Chromemoz:firefoxOptions
: Mozilla Firefoxms:edgeOptions
: Microsoft Edgesauce:options
: Sauce Labsbstack:options
: BrowserStackselenoid:options
: Selenoid
さらに、Sauce Labsの自動テスト構成ツールは、必要な機能をクリックして作成するのに役立つ便利なユーティリティです。
型: Object
デフォルト: null
例:
{
browserName: 'chrome', // 選択肢: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // ブラウザバージョン
platformName: 'Windows 10' // OSプラットフォーム
}
モバイルデバイスでウェブまたはネイティブテストを実行している場合、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リクエストに渡すカスタムヘッダー
を指定します。Selenium Gridが基本認証を必要とする場合、このオプションを通じてAuthorization
ヘッダーを渡してWebDriverリクエストを認証することをお勧めします。例:
import { Buffer } from 'buffer';
// 環境変数からユーザー名とパスワードを読み取る
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// ユーザー名とパスワードをコロン区切りで組み合わせる
const credentials = `${username}:${password}`;
// 資格情報を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
ブラウザ自動化に使用するプロトコルを定義します。現在はwebdriver
のみがサポートされており、WebdriverIOが使用する主要なブラウザ自動化技術です。
異なる自動化技術を使用してブラウザを自動化したい場合は、以下のインターフェースに準拠するモジュールに解決されるパスにこのプロパティを設定してください:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* 自動化セッションを開始し、対応する自動化コマンドを持つWebdriverIO [モナド](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* を返します。参照実装として[webdriver](https://www.npmjs.com/package/webdriver)パッケージを参照してください。
*
* @param {Capabilities.RemoteConfig} options WebdriverIOオプション
* @param {Function} hook 関数から解放される前にクライアントを変更できるフック
* @param {PropertyDescriptorMap} userPrototype ユーザーがカスタムプロトコルコマンドを追加できるようにする
* @param {Function} customCommandWrapper コマンド実行を変更できるようにする
* @returns WebdriverIO互換のクライアントインスタンス
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* ユーザーが既存のセッションにアタッチできるようにする
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* 新しいセッションのためにインスタンスセッションIDとブラウザ機能を変更します
* 渡されたブラウザオブジェクトに直接変更します
*
* @optional
* @param {object} instance 新しいブラウザセッションから取得するオブジェクト
* @returns {string} ブラウザの新しいセッションID
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
型: String
デフォルト: webdriver
baseUrl
ベースURLを設定することでurl
コマンド呼び出しを短縮します。
url
パラメータが/
で始まる場合、baseUrl
の前に追加されます(baseUrl
のパスがある場合を除く)。url
パラメータがスキームまたは/
なしで始まる場合(例:some/path
)、完全なbaseUrl
が直接前に追加されます。
型: String
デフォルト: null
waitforTimeout
すべてのwaitFor*
コマンドのデフォルトタイムアウト。(オプション名の小文字のf
に注意してください)このタイムアウトはwaitFor*
で始まるコマンドとそのデフォルト待機時間にのみ影響します。
テストのタイムアウトを増やすには、フレームワークのドキュメントを参照してください。
型: Number
デフォルト: 5000
waitforInterval
すべてのwaitFor*
コマンドが期待される状態(例:可視性)が変更されたかどうかを確認するデフォルト間隔。
型: Number
デフォルト: 100
region
Sauce Labsで実行している場合、異なるデータセンター(USまたはEU)間でテストを実行することを選択できます。
リー ジョンをEUに変更するには、設定にregion: 'eu'
を追加します。
注意: これは、Sauce Labsアカウントに接続されているuser
とkey
オプションを提供している場合にのみ効果があります。
型: String
デフォルト: us
(VMおよび/またはエミュレータ/シミュレータのみ)
テストランナーオプション
以下のオプション(上記のものを含む)は、WDIO テストランナーを使用してWebdriverIOを実行する場合にのみ定義されます:
specs
テスト実行のためのスペックを定義します。一度に複数のファイルに一致するグロブパターンを指定するか、グロブまたはパスのセットを配列にラップして、単一のワーカープロセス内で実行することができます。すべてのパスは設定ファイルパスからの相対パスとして扱われます。
型: (String | String[])[]
デフォルト: []
exclude
テスト実行から除外するスペック。すべてのパスは設定ファイルパスからの相対パスとして扱われます。
型: String[]
デフォルト: []
suites
wdio
CLIで --suite
オプションを指定することができる様々なスイートを記述するオブジェクト。
型: Object
デフォルト: {}
capabilities
上記で説明した capabilities
セクションと同じですが、multiremote
オブジェクトを指定するか、並列実行のための複数のWebDriverセッションを配列で指定するオプションがあります。
上記で定義されているのと同じベンダーおよびブラウザ固有の機能を適用できます。
型: Object
|Object[]
デフォルト: [{ 'wdio:maxInstances': 5, browserName: 'firefox' }]
maxInstances
並列実行するワーカーの最大総数。
注意: Sauce Labsのようなマシンなどの外部ベンダーでテストが実行されている場合、この数は100
のように高くなる可能性があります。その場合、テストは単一のマシンではなく、複数の仮想マシンで実行されます。ローカル開発マシンでテストを実行する場合は、3
、4
、または5
のようなより適切な 数値を使用してください。基本的に、これは同時に起動され、テストを実行するブラウザの数であり、マシンのRAM容量や他のアプリの実行状況によって異なります。
また、wdio:maxInstances
機能を使用して、機能オブジェクト内でmaxInstances
を適用することもできます。これにより、その特定の機能の並列セッション数が制限されます。
型: 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を使用す る場合)です。単一のテストファイル内でのテストのベイル動作を制御したい場合は、利用可能なフレームワークオプションを確認してください。
型: Number
デフォルト: 0
(ベイルしない; すべてのテストを実行)
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
使用するレポーターのリスト。レポーターは文字列または
['レポーター名', { /* レポーターオプション */}]
の配列で、最初の要素はレポーター名の文字列、2番目の要素はレポーターオプションを持つオブジェクトです。
型: String[]|Object[]
デフォルト: []
例:
reporters: [
'dot',
'spec'
['junit', {
outputDir: `${__dirname}/reports`,
otherOption: 'foobar'
}]
]
reporterSyncInterval
レポーターが非同期にログを報告する場合(例:ログが第三者ベンダーにストリーミングされる場合)、同期しているかどうかを確認する間隔。
型: Number
デフォルト: 100
(ms)
reporterSyncTimeout
レポーターがすべてのログのアップロードを完了するまでの最大時間。テストランナーによってエラーがスローされるまでの時間。
型: Number
デフォルト: 5000
(ms)
execArgv
子プロセスを起動する際に指定するNode引数。
型: String[]
デフォルト: null
filesToWatch
テストランナーに、--watch
フラグで実行する際に他のファイル(例:アプリケーションファイル)も監視するよう指示するグロブをサポートする文字列パターンのリスト。デフォルトでは、テストランナーはすべてのスペックファイルを監視します。
型: String[]
デフォルト: []
updateSnapshots
スナップショットを更新したい場合は true
に設定します。理想的には CLI パラメータの一部として使用します。例:wdio run wdio.conf.js --s
。
型: 'new' | 'all' | 'none'
デフォルト: 提供されていない場合でテストが CI で実行される場合は none
、提供されていない場合は new
、それ以外の場合は提供されたもの