'Heroku CI: ブラウザおよびユーザー承認テスト (UAT)'
最終更新日 2022年03月09日(水)
Table of Contents
警告 Heroku CI の UAT/ブラウザテストはベータ機能です。
ブラウザのサポートは (機能を強化するための) 未発表の変更に従うものとし、UAT に対するサポートはベストエフォートの応答に制限されています。
ブラウザテスト/UAT について
Heroku CI は、テスト実行の dyno でブラウザをインストールするオプションを用意することによって、ブラウザテストまたは “ユーザー承認テスト” (UAT) に対するサポートを提供します。ユーザーは、--headless
フラグでサポートされる Google Chrome の安定、ベータ、および不安定リリースチャネルのいずれかを選択できます。
ブラウザをインストールするためのオプションは用意されていますが、そのブラウザの起動は開発者の責任であることに注意する必要があります。各言語、Web フレームワーク、あるいはテストフレームワークには、ブラウザでテストを起動して実行する方法に関する独自の対処法がある傾向にあります (最も一般的には、これは Selenium で実行される)。これらのソリューションのほとんどは Heroku CI でサポートできます。以下では、すでにテストされ、実証されている UAT の技術スタックと設定を追加します。
使用可能なブラウザ
さまざまなニーズに対応できるブラウザをいくつか提供していますが、まず --headless
がサポートされている Google Chrome を検討することを強くお勧めします。これは安定しており、かつユーザーのブラウザとの強い同等性があり、この種類のテストを可能にするように設計されています。
Google Chrome
Google Chrome では最近、--headless
コマンドラインオプションのサポートが追加されました。つまり、ブラウザテストを実行するためにウィンドウサーバーは必要なくなりました。この設定は、ユーザーのブラウザを使用するが、内容を画面にレンダリングしてサイクルを浪費することのない UAT に最適です。そのため、これが当社の規定されたブラウザソリューションです。
Heroku CI の実行のためにヘッドレス Google Chrome を使用するには、その buildpack を app.json の environments.test.buildpacks
セクションに追加します。たとえば、NodeJs のテストに Chrome を使用している場合は、次のようにします。
{
"environments": {
"test": {
"buildpacks": [
{ "url": "heroku/google-chrome" },
{ "url": "heroku/nodejs" }
]
}
}
}
これで、google-chrome
(デフォルトでは安定リリースチャネル) がテスト実行で使用可能になり、自動的にヘッドレスモードで実行されます (--headless
フラグが常に使用される)。詳細は、buildpack のドキュメントを参照してください。
PhantomJS
PhantomJS は、NodeJS 上に構築されたヘッドレスブラウザです。コンパクトで、かつ Chrome よりインストールが簡単なため、長い間 UAT のための一般的な選択肢になっていました。PhantomJS を使用するように Heroku CI の実行を設定することは可能ですが、1) これがサードパーティの buildpack を使用してインストールされること、2) PhantomJS が保守されなくなったことの 2 つの理由から、現在は直接のサポートを提供していません。
Heroku CI の実行のために PhantomJS を使用するには、その buildpack を app.json の environments.test.buildpacks
セクションに追加します。たとえば、Ruby のテストに PhantomJS を使用している場合は、次のようにします。
{
"environments": {
"test": {
"buildpacks": [
{ "url": "heroku/ruby" },
{ "url": "https://github.com/stomita/heroku-buildpack-phantomjs" }
]
}
}
}
NodeJS を使用している場合は、代わりに phantomjs-prebuilt
の使用を検討することもできます。
Selenium によるテスト
Heroku CI では、上記の Chrome buildpack を使用した Selenium によるテストがサポートされています。さらに、Heroku CI で Selenium を実行するには、次のものが必要になります。
- chromedriver - これは、言語またはフレームワークにすでにインストールされている可能性があります。そうでない場合は、chromedriver buildpack を参照してください。
- Selenium への言語バインディング - 選択されている言語によって異なります。
- chromedriver が正しい Chrome バイナリの場所を指すようにする特殊な設定 (詳細を参照)。