ヘッドレスCIシステム(Travis CI、Jenkins)でのテスト
ChromiumをベースとしているElectronは、機能するためにディスプレイドライバを必要とします。Chromiumがディスプレイドライバを見つけられない場合、Electronは起動に失敗し、したがって、どのようにテストを実行しているかにかかわらず、テストを実行しません。したがって、Travis、CircleCI、JenkinsなどのシステムでElectronベースのアプリをテストするには、少しの構成が必要です。本質的には、仮想ディスプレイドライバを使用する必要があります。
仮想ディスプレイサーバーの構成
まず、Xvfbをインストールします。これは仮想フレームバッファであり、X11ディスプレイサーバープロトコルを実装しています。画面出力を表示せずにメモリ内でグラフィック操作をすべて実行しますが、これはまさに必要なものです。
次に、仮想Xvfbスクリーンを作成し、それを指すDISPLAYという名前の環境変数をエクスポートします。ElectronのChromiumは自動的に$DISPLAY
を探すため、アプリの追加の構成は必要ありません。このステップは、Anaïs Bettsのxvfb-maybeで自動化できます。テストコマンドの先頭にxvfb-maybe
を付加すると、この小さなツールは現在のシステムで必要な場合、Xvfbを自動的に構成します。WindowsまたはmacOSでは、何も行いません。
## On Windows or macOS, this invokes electron-mocha
## On Linux, if we are in a headless environment, this will be equivalent
## to xvfb-run electron-mocha ./test/*.js
xvfb-maybe electron-mocha ./test/*.js
Travis CI
Travisについては、Xvfbの使用に関するドキュメントを参照してください。
Jenkins
Jenkinsの場合、Xvfbプラグインが利用可能です。
CircleCI
CircleCIは素晴らしく、Xvfbと$DISPLAY
がすでに設定されているため、追加の構成は必要ありません。
AppVeyor
AppVeyorはWindowsで実行され、Selenium、Chromium、Electronなどのツールをすぐにサポートします。構成は必要ありません。