Dockerサービス
wdio-docker-serviceはサードパーティパッケージです。詳細については、GitHub | npmを参照してください。
このサービスはWebdriverIOで使用することを目的としており、コンテナ化されたアプリケーションに対する/を使用した機能/統合テストの実行に役立ちます。コンテナを実行するために、一般的なDockerサービス(別途インストール)を使用します。
使用理由
理想的には、テストは様々なCI/CDパイプラインで実行されますが、多くの場合、「実在の」ブラウザやアプリケーションが依存するその他のリソースはありません。Dockerが登場したことで、事実上すべての必要なアプリケーション依存関係をコンテナ化できるようになりました。このサービスを使用すると、アプリケーションコンテナまたはdocker-seleniumをCIで、完全に分離して実行できます(CIにDockerが依存関係としてインストールされていることを前提としています)。アプリケーションがメインOSからある程度の分離レベルを必要とする場合、ローカル開発にも同じことが適用できます。
動作方法
このサービスは既存のDockerイメージを実行し、準備ができたら、コンテナ化されたアプリケーションに対して実行されるWebdriverIOテストを開始します。
インストール
実行
npm install wdio-docker-service --save-dev
WebdriverIOのインストール方法はこちらをご覧ください。
設定
デフォルトでは、ホストシステムにインストールされている場合、Google Chrome、Firefox、PhantomJSを使用できます。このサービスを使用するには、サービス配列にdocker
を追加する必要があります。
// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};
オプション
dockerOptions
Dockerコンテナを実行するために必要な様々なオプション
型: Object
デフォルト: { options: { rm: true } }
例
dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}
dockerOptions.image
Dockerコンテナの名前タグ。ローカルまたはDocker HUBから指定できます。
型: String
必須: true
dockerOptions.healthCheck
テストを開始する前にコンテナの準備状況を確認する設定。通常はlocalhostのURLになります。healthCheckが設定されていない場合、Dockerコンテナの起動直後にWebdriverはテストの実行を開始します。これは、Dockerコンテナ内でウェブサービスの起動に時間がかかることを考えると、早すぎる可能性があります。
型: String|Object
Objectの使用オプション
- url - コンテナ内で実行されているアプリケーションのURL
- maxRetries - ヘルスチェックが失敗するまでの再試行回数。デフォルト: 10
- inspectInterval - 各再試行間のインターバル(ミリ秒)。デフォルト: 500
- startDelay - ヘルスチェックを開始する最初の遅延(ミリ秒)。デフォルト: 0
例1(文字列): healthCheck: 'http://localhost:4444'
例2(オブジェクト)
healthCheck: {
url: 'http://localhost:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}
dockerOptions.options
docker run
コマンドで使用されるオプションのマップ。run
コマンドの詳細についてはこちらをクリックしてください。
1文字のオプションは-[option]
に変換されます(例: d: true
-> -d
)。
2文字以上のオプションは--[option]
に変換されます(例: rm: true
-> --rm
)。
複数回使用できるオプション(例: -e
、-add-host
、--expose
など)については、配列表記を使用してください(例: e: ["NODE_ENV=development", "FOO=bar"]
)。
型: Object
例
options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}
dockerOptions.args
コンテナに渡したい引数。Docker run CLIの[ARG...]
に対応します。
型: String
dockerOptions.command
コンテナに渡したいコマンド。Docker run CLIの[COMMAND]
に対応します。
型: String
onDockerReady
Dockerアプリケーションの準備ができたときに呼び出されるコールバックメソッド。準備完了は、healthCheck
URLへのpingが可能かどうかで判断されます。
型: Function
dockerLogs
Dockerコンテナからのログを保存するパス
型: String
テストのユースケース/レシピ
詳細については、Wikiをご覧ください。