'Heroku CI: ブラウザおよびユーザー承認テスト (UAT)'
最終更新日 2024年02月21日(水)
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 の開発者は、バージョン調整された Chromedriver (Selenium WebDriver アダプター) のような自動ブラウザテストをサポートするために、ブラウザの特別リリース版である Chrome for Testing を公開しています。
Google Chrome は、--headless
のコマンドラインオプションをサポートしています。これはユーザーのブラウザを使用するため UAT に最適で、コンテンツを画面にレンダリングするサイクルを浪費しません。
Heroku CI の実行のために Google Chrome を使用するには、その buildpack heroku-community/chrome-for-testing
を app.json
の environments.test.buildpacks
セクションに追加します。たとえば、Node.js テストに Chrome を使用している場合は、次のようにします。
{
"environments": {
"test": {
"buildpacks": [
{ "url": "heroku-community/chrome-for-testing" },
{ "url": "heroku/nodejs" }
]
}
}
}
今後、chrome
と chromedriver
(デフォルトで安定リリースチャネルから) がテスト実行で利用できるようになります。詳細は、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 for Testing buildpack 経由で、Selenium を使用したアプリのテストをサポートしています。Heroku CI で Selenium を実行するには、次のものが必要になります。
- Chromedriver - Chrome for Testing buildpack によってインストールされます
- Selenium への言語バインディング - WebDriver アダプター。アプリに必要な言語に応じて選択します。
- アプリのテストコード内の Selenium ドライバーオプション - Selenium のドキュメントと言語固有のドライバードキュメントを参照してください。