Browserstackサービス
BrowserStackユーザー向けのローカルトンネルとジョブメタデータを管理するWebdriverIOサービス。
インストール
最も簡単な方法は、@wdio/browserstack-service
をpackage.json
のdevDependencyとして保持することです。以下を使用します。
npm install @wdio/browserstack-service --save-dev
WebdriverIO
のインストール方法については、こちらをご覧ください。
設定
WebdriverIOは、BrowserStackをすぐにサポートしています。wdio.conf.js
ファイルでuser
とkey
を設定する必要があります。このサービスプラグインは、BrowserStackトンネルをサポートします。この機能を有効にするには、browserstackLocal: true
も設定します。BrowserStackでのセッションステータスのレポートは、Cucumberオプションのstrict
設定を尊重します。
// wdio.conf.js
export const config = {
// ...
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
services: [
['browserstack', {
testObservability: true,
testObservabilityOptions: {
projectName: "Your project name goes here",
buildName: "The static build job name goes here e.g. Nightly regression"
},
browserstackLocal: true
}]
],
// ...
};
オプション
BrowserStackサービスを認証するには、設定にuser
とkey
オプションが含まれている必要があります。
testObservability
テスト可観測性は、自動化テストを改善するための洞察を提供し、より迅速なデバッグを支援する高度なテストレポートツールです。browserstack-serviceのすべてのユーザーに対してtestObservability
フラグをtrue
に設定することで、デフォルトで有効になります。testObservability
フラグをfalse
に設定することで、これを無効にできます。
テストの実行が終了したら、テスト可観測性にアクセスして、ユニークエラー分析、自動フレークテスト検出などの追加の洞察を使用してビルドをデバッグできます。
BrowserStackインフラストラクチャでテストを実行していない場合でも、テスト可観測性を使用できます。CI、ローカルマシン、または他のクラウドサービスプロバイダーでテストを実行している場合でも、テスト可観測性は、テストに関するインテリジェントなテストレポートと高度な分析を生成できます。
BrowserStackインフラストラクチャでテストを実行せずにテスト可観測性を使用する場合は、次のように設定できます。
// wdio.conf.js
export const config = {
// ...
services: [
['browserstack', {
testObservability: true,
testObservabilityOptions: {
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
projectName: "Your project name goes here",
buildName: "The static build job name goes here e.g. Nightly regression"
}
}]
],
// ...
};
このサンドボックスでテスト可観測性のすべての機能を調べたり、こちらで詳細を確認したりできます。
browserstackLocal
BrowserStackクラウドからの接続をコンピューター経由でルーティングするには、これをtrueに設定します。
タイプ: Boolean
デフォルト: false
forcedStop
BrowserStackローカル停止コールバックが呼び出されるのを待たずに、完了時にBrowserStackローカルプロセスを強制終了するには、これをtrueに設定します。これは実験的なものであり、すべての人に使用すべきではありません。主にこの問題の回避策として必要です。
タイプ: Boolean
デフォルト: false
app
Appiumの場合、Appiumセッションのテスト対象アプリケーションとしてアプリを使用するには、マシンでローカルに利用可能なアプリファイルパスをこれで設定します。
タイプ: String
またはJsonObject
デフォルト: undefined
利用可能なアプリ値のリスト
path
Appiumのテスト対象アプリケーションとして、ローカルで利用可能なアプリファイルパスを使用します。
services: [
['browserstack', {
app: '/path/to/local/app.apk'
// OR
app: {
path: '/path/to/local/app.apk'
}
}]
]
アプリのアップロード中にcustom_idを渡します。
services: [
['browserstack', {
app: {
path: '/path/to/local/app.apk',
custom_id: 'custom_id'
}
}]
]
id
BrowserStackにアプリをアップロードした後に返されるアプリURLを使用します。
services: [
['browserstack', {
app: 'bs://<app-id>'
// OR
app: {
id: 'bs://<app-id>'
}
}]
]
custom_id
すでにアップロードされたアプリのcustom_idを使用します。
services: [
['browserstack', {
app: 'custom_id'
// OR
app: {
custom_id: 'custom_id'
}
}]
]
shareable_id
すでにアップロードされたアプリのshareable_idを使用します。
services: [
['browserstack', {
app: 'username/custom_id'
// OR
app: {
shareable_id: 'username/custom_id'
}
}]
]
preferScenarioName
Cucumberのみ。単一のシナリオのみが実行された場合、BrowserStack Automateセッション名をシナリオ名に設定します。wdio-cucumber-parallel-executionで並行して実行する場合に便利です。
タイプ: Boolean
デフォルト: false
sessionNameFormat
BrowserStack Automateセッション名の形式をカスタマイズします。
タイプ: Function
デフォルト (Cucumber/Jasmine): (config, capabilities, suiteTitle) => suiteTitle
デフォルト (Mocha): (config, capabilities, suiteTitle, testTitle) => suiteTitle + ' - ' + testTitle
sessionNameOmitTestTitle
Mochaのみ。BrowserStack Automateセッション名にテストタイトルを追加しません。
タイプ: Boolean
デフォルト: false
sessionNamePrependTopLevelSuiteTitle
Mochaのみ。BrowserStack Automateセッション名にトップレベルのスイートタイトルを先頭に追加します。
タイプ: Boolean
デフォルト: false
setSessionName
BrowserStack Automateセッション名を自動的に設定します。
タイプ: Boolean
デフォルト: true
setSessionStatus
BrowserStack Automateセッションステータス(合格/不合格)を自動的に設定します。
タイプ: Boolean
デフォルト: true
buildIdentifier
buildIdentifierは、buildNameに追加されるすべての実行を区別するためのユニークIDです。使用可能な式からbuildIdentifierの形式を選択します。
BUILD_NUMBER
: 実行ごとにインクリメンタルカウンターを生成しますDATE_TIME
: 実行ごとにタイムスタンプを生成します。例:05-Nov-19:30
services: [
['browserstack', {
buildIdentifier: '#${BUILD_NUMBER}'
}]
]
ビルド識別子は、他の文字とともに、いずれかまたは両方の式の使用をサポートし、カスタム書式設定オプションを有効にします。
opts
BrowserStackローカルオプション。
タイプ: Object
デフォルト: {}
optsとして渡される使用可能なローカルテスト修飾子のリスト
ローカル識別子
複数のローカルテスト接続を同時に行う場合は、異なるプロセスに対してこれを一意に設定します -
opts = { localIdentifier: "randomstring" };
詳細ログ
詳細ログを有効にするには -
opts = { verbose: "true" };
注意 - 「verbose」修飾子の可能な値は、「1」、「2」、「3」、および「true」です。
強制ローカル
すべてのトラフィックをローカル(自分)マシン経由でルーティングするには -
opts = { forceLocal: "true" };
フォルダーテスト
内部サーバーではなくローカルフォルダーをテストするには、このオプションの値としてフォルダーへのパスを指定します -
opts = { f: "/my/awesome/folder" };
強制開始
実行中の他のBrowserStackローカルインスタンスを強制終了するには -
opts = { force: "true" };
Automateのみ
Liveとスクリーンショットのローカルテストを無効にし、Automateのみを有効にするには -
opts = { onlyAutomate: "true" };
プロキシ
ローカルテストでプロキシを使用するには -
- proxyHost: プロキシのホスト名/IP。このオプションがない場合、残りのプロキシオプションは無視されます。
- proxyPort: プロキシのポート。-proxyHost が使用されている場合、デフォルトは 3128 です。
- proxyUser: プロキシに接続するためのユーザー名(基本認証のみ)
- proxyPass: USERNAME のパスワード。USERNAME が空または指定されていない場合は無視されます。
opts = {
proxyHost: "127.0.0.1",
proxyPort: "8000",
proxyUser: "user",
proxyPass: "password",
};
ローカルプロキシ
ローカルテストでローカルプロキシを使用するには -
- localProxyHost: プロキシのホスト名/IP。このオプションがない場合、残りのプロキシオプションは無視されます。
- localProxyPort: プロキシのポート。-localProxyHost が使用されている場合、デフォルトは 8081 です。
- localProxyUser: プロキシに接続するためのユーザー名(基本認証のみ)
- localProxyPass: USERNAME のパスワード。USERNAME が空または指定されていない場合は無視されます。
opts = {
localProxyHost: "127.0.0.1",
localProxyPort: "8000",
localProxyUser: "user",
localProxyPass: "password",
};
PAC (プロキシ自動構成)
ローカルテストで PAC (プロキシ自動構成) を使用するには -
- pac-file: PAC (プロキシ自動構成) ファイルの絶対パス
opts = { "pac-file": "<pac_file_abs_path>" };
バイナリパス
デフォルトでは、BrowserStack ローカルラッパーは、~/.browserstack または現在の作業ディレクトリ、または tmp フォルダの順に BrowserStack バイナリの最新バージョンをダウンロードして実行しようとします。ただし、-binarypath 引数を渡すことでこれらを上書きできます。ローカルバイナリパスを指定するパス -
opts = { binarypath: "/path/to/binary" };
ログファイル
'-v' 引数を付けて実行中にログをファイルに保存するには、ファイルのパスを指定できます。デフォルトでは、ログは現在の作業ディレクトリの local.log ファイルに保存されます。ログが保存されるファイルのパスを指定するには -
opts = { verbose: "true", logFile: "./local.log" };
WebdriverIO の詳細については、ホームページを参照してください。