本文へ移動

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をご覧ください。

ようこそ!お手伝いしましょうか?

WebdriverIO AI Copilot