ケーパビリティ
ケーパビリティは、リモートインターフェースの定義です。WebdriverIOがどのブラウザやモバイル環境でテストを実行したいかを理解するのに役立ちます。ケーパビリティは、ローカルでテストを開発する場合はほとんどの時間を1つのリモートインターフェースで実行するため、それほど重要ではありませんが、CI/CDで大規模な統合テストセットを実行する場合はより重要になります。
ケーパビリティオブジェクトの形式はWebDriver仕様によって明確に定義されています。WebdriverIOテストランナーは、ユーザー定義のケーパビリティがその仕様に準拠していない場合、早期に失敗します。
カスタムケーパビリティ
固定された定義済みケーパビリティの数は非常に少ないですが、誰でも自動化ドライバーやリモートインターフェースに特有のカスタムケーパビリティを提供および受け入れることができます:
ブラウザ固有のケーパビリティ拡張
goog:chromeOptions
: Chromedriver拡張、Chromeでのテストにのみ適用可能moz:firefoxOptions
: Geckodriver拡張、Firefoxでのテストにのみ適用可能ms:edgeOptions
: EdgeOptions Chromium EdgeをテストするためにEdgeDriverを使用する際の環境を指定するため
クラウドベンダーケーパビリティ拡張
sauce:options
: Sauce Labsbstack:options
: BrowserStacktb:options
: TestingBot- など多数...
自動化エンジンケーパビリティ拡張
WebdriverIOのブラウザドライバーオプションを管理するためのケーパビリティ
WebdriverIOはブラウザドライバーのインストールと実行を管理します。WebdriverIOはドライバーにパラメータを渡すことができるカスタムケーパビリティを使用します。
wdio:chromedriverOptions
Chromedriverを起動する際に渡される特定のオプション。
wdio:geckodriverOptions
Geckodriverを起動する際に渡される特定のオプション。
wdio:edgedriverOptions
Edgedriverを起動する際に渡される特定のオプション。
wdio:safaridriverOptions
Safariを起動する際に渡される特定のオプション。
wdio:maxInstances
特定のブラウザ/ケーパビリティに対して並行実行できるワーカーの最大数。maxInstancesとmaxInstancesPerCapabilityよりも優先されます。
タイプ: number
wdio:specs
そのブラウザ/ケーパビリティのテスト実行用のスペックを定義します。通常のspecs
設定オプションと同じですが、特定のブラウザ/ケーパビリティに固有のものです。specs
よりも優先されます。
タイプ: (String | String[])[]
wdio:exclude
そのブラウザ/ケーパビリティのテスト実行からスペックを除外します。通常のexclude
設定オプションと同じですが、特定のブラウザ/ケーパビリティに固有のものです。exclude
よりも優先されます。
タイプ: String[]
wdio:enforceWebDriverClassic
デフォルトでは、WebdriverIOはWebDriver Bidiセッションの確立を試みます。この動作を望まない場合は、このフラグを設定して無効にすることができます。
タイプ: boolean
共通ドライバーオプション
すべてのドライバーは異なる設定パラメータを提供していますが、WebdriverIOが理解し、ドライバーやブラウザのセットアップに使用するいくつかの共通のものがあります:
cacheDir
キャッシュディレクトリのルートへのパス。このディレクトリは、セッションを開始しようとするときにダウンロードされるすべてのドライバーを保存するために使用されます。
タイプ: string
デフォルト: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
binary
カスタムドライバーバイナリへのパス。設定されている場合、WebdriverIOはドライバーをダウンロードしようとせず、このパスで提供されているものを使用します。ドライバーが使用するブラウザと互換性があることを確認してください。
このパスはCHROMEDRIVER_PATH
、GECKODRIVER_PATH
またはEDGEDRIVER_PATH
環境変数を通じて提供できます。
タイプ: string
ドライバーのbinary
が設定されている場合、WebdriverIOはドライバーをダウンロードしようとせず、このパスで提供されているものを使用します。ドライバーが使用するブラウザと互換性があることを確認してください。
ブラウザ固有のドライバーオプション
ドライバーにオプションを伝播するには、次のカスタムケーパビリティを使用できます:
- Chrome または Chromium:
wdio:chromedriverOptions
- Firefox:
wdio:geckodriverOptions
- Microsoft Edge:
wdio:edgedriverOptions
- Safari:
wdio:safaridriverOptions
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- wdio:safaridriverOptions
adbPort
ADBドライバーが実行されるポート。
例: 9515
タイプ: number
urlBase
コマンドのベースURLパスプレフィックス、例:wd/url
例: /
タイプ: string
logPath
stderrの代わりにファイルにサーバーログを書き込み、ログレベルをINFO
に引き上げます
タイプ: string
logLevel
ログレベルを設定します。可能なオプションはALL
、DEBUG
、INFO
、WARNING
、SEVERE
、OFF
です。
タイプ: string
verbose
詳細にログを出力します(--log-level=ALL
と同等)
タイプ: boolean
silent
何もログに出力しません(--log-level=OFF
と同等)
タイプ: boolean
appendLog
ログファイルを書き換えるのではなく、追加します。
タイプ: boolean
replayable
詳細にログを出力し、長い文字列を切り詰めないため、ログを再生できます(実験的)。
タイプ: boolean
readableTimestamp
ログに読みやすいタイムスタンプを追加します。
タイプ: boolean
enableChromeLogs
ブラウザからのログを表示します(他のログオプションを上書きします)。
タイプ: boolean
bidiMapperPath
カスタムbidiマッパーパス。
タイプ: string
allowedIps
EdgeDriverへの接続が許可されているリモートIPアドレスのカンマ区切りの許可リスト。
タイプ: string[]
デフォルト: ['']
allowedOrigins
EdgeDriverへの接続が許可されているリクエスト元のカンマ区切りの許可リスト。任意のホスト元を許可するために*
を使用することは危険です!
タイプ: string[]
デフォルト: ['*']
spawnOpts
ドライバープロセスに渡されるオプション。
タイプ: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
デフォルト: undefined
すべてのGeckodriverオプションは公式ドライバーパッケージを参照してください。
すべてのEdgedriverオプションは公式ドライバーパッケージを参照してください。
すべてのSafaridriverオプションは公式ドライバーパッケージを参照してください。
特定のユースケース向けの特別なケーパビリティ
以下は、特定のユースケースを達成するために適用する必要があるケーパビリティの例のリストです。
ブラウザをヘッドレスで実行する
ヘッドレスブラウザを実行するとは、ウィンドウやUIなしでブラウザインスタンスを実行することを意味します。これは主にディスプレイが使用されないCI/CD環境内で使用されます。ブラウザをヘッドレスモードで実行するには、次のケーパビリティを適用します:
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // または 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
browserName: 'msedge',
'ms:edgeOptions': {
args: ['--headless']
}
Safariはヘッドレスモードでの実行をサポートしていないようです。
異なるブラウザチャンネルを自動化する
安定版としてまだリリースされていないブラウザバージョン(例:Chrome Canary)をテストしたい場合、ケーパビリティを設定し、開始したいブラウザを指定することができます:
- Chrome
- Firefox
- Microsoft Edge
- Safari
Chromeでテストする場合、WebdriverIOは定義されたbrowserVersion
に基づいて、必要なブラウザバージョンとドライバーを自動的にダウンロードします:
{
browserName: 'chrome', // または 'chromium'
browserVersion: '116' // または '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' または 'latest' ('canary'と同じ)
}
手動でダウンロードしたブラウザをテストしたい場合は、ブラウザへのバイナリパスを提供できます:
{
browserName: 'chrome', // または 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}
さらに、手動でダウンロードしたドライバーを使用したい場合は、ドライバーへのバイナリパスを提供できます:
{
browserName: 'chrome', // または 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}
Firefoxでテストする場合、WebdriverIOは定義されたbrowserVersion
に基づいて、必要なブラウザバージョンとドライバーを自動的にダウンロードします:
{
browserName: 'firefox',
browserVersion: '119.0a1' // または 'latest'
}
手動でダウンロードしたバージョンをテストしたい場合は、ブラウザへのバイナリパスを提供できます:
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
さらに、手動でダウンロードしたドライバーを使用したい場合は、ドライバーへのバイナリパスを提供できます:
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
Microsoft Edgeでテストする場合は、必要なブラウザバージョンがマシンにインストールされていることを確認してください。WebdriverIOが実行するブラウザを指定できます:
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
WebdriverIOは定義されたbrowserVersion
に基づいて、必要なドライバーバージョンを自動的にダウンロードします:
{
browserName: 'msedge',
browserVersion: '109' // または '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
さらに、手動でダウンロードしたドライバーを使用したい場合は、ドライバーへのバイナリパスを提供できます:
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}
Safariでテストする場合は、Safari Technology Previewがマシンにインストールされていることを確認してください。WebdriverIOにそのバージョンを指定できます:
{
browserName: 'safari technology preview'
}
カスタムケーパビリティを拡張する
例えば、特定のケーパビリティのテスト内で使用する任意のデータを保存するために、独自のケーパビリティセットを定義したい場合は、以下のように設定できます:
export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// カスタム設定
}
}]
}
ケーパビリティの命名に関しては、実装固有の名前空間を示す:
(コロン) 文字を必要とするW3Cプロトコルに従うことをお勧めします。テスト内では、カスタムケーパビリティに次のようにアクセスできます:
browser.capabilities['custom:caps']
型安全性を確保するために、WebdriverIOのケーパビリティインターフェースを次のように拡張できます:
declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}