機能
機能とは、リモートインターフェースの定義です。WebdriverIO が、テストを実行するブラウザまたはモバイル環境を理解するのに役立ちます。ローカルでテストを開発する場合、ほとんどの場合、1つのリモートインターフェースで実行するため、機能はそれほど重要ではありませんが、CI/CD で大規模な統合テストを実行する際には、より重要になります。
機能オブジェクトの形式は、WebDriver 仕様で明確に定義されています。WebdriverIO テストランナーは、ユーザー定義の機能がその仕様に準拠していない場合、早期に失敗します。
カスタム機能
定義済みの固定機能の数は非常に少ないですが、自動化ドライバまたはリモートインターフェースに固有のカスタム機能を提供および受け入れることができます。
ブラウザ固有の機能拡張
goog:chromeOptions
: Chromedriver 拡張機能。Chrome でのテストにのみ適用されます。moz:firefoxOptions
: Geckodriver 拡張機能。Firefox でのテストにのみ適用されます。ms:edgeOptions
: Chromium Edge のテストに EdgeDriver を使用する場合の環境を指定するための EdgeOptions
クラウドベンダー機能拡張
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[]
デフォルト: ['*']
公式のドライバーパッケージで、すべてのGeckodriverオプションを参照してください。
公式のドライバーパッケージで、すべてのEdgedriverオプションを参照してください。
公式のドライバーパッケージで、すべてのSafaridriverオプションを参照してください。
特定のユースケースのための特別な機能
これは、特定のユースケースを実現するために適用する必要がある機能を示す例の一覧です。
ヘッドレスブラウザの実行
ヘッドレスブラウザを実行することは、ウィンドウやUIなしでブラウザインスタンスを実行することを意味します。これは主にディスプレイを使用しないCI/CD環境で使用されます。ヘッドレスモードでブラウザを実行するには、次の機能を適用します。
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // or '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', // or 'chromium'
browserVersion: '116' // or '116.0.5845.96', 'stable', 'latest', 'dev', 'canary', 'beta'
}
手動でダウンロードしたブラウザをテストする場合は、ブラウザへのバイナリパスを以下のように指定できます。
{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}
さらに、手動でダウンロードしたドライバーを使用する場合は、ドライバーへのバイナリパスを以下のように指定できます。
{
browserName: 'chrome', // or 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}
Firefoxでテストする場合、WebdriverIOは定義されたbrowserVersion
に基づいて、必要なブラウザバージョンとドライバーを自動的にダウンロードします。
{
browserName: 'firefox',
browserVersion: '119.0a1' // or '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' // or '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': {
// custom configurations
}
}]
}
機能の命名に関しては、実装固有の名前空間を示す:
(コロン)文字を必要とするW3Cプロトコルに従うことをお勧めします。テストでは、たとえば以下のようにしてカスタム機能にアクセスできます。
browser.capabilities['custom:caps']
型安全性を確保するには、WebdriverIOの機能インターフェースを以下のように拡張できます。
declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}