この記事はHeadless Execution of GUI Tests with Jenkinsの抄訳です。
CI/CD(Continuous Integration/Continuous Deployment)システムであるJenkinsを使ってGUI自動テストを実行することは、自動化を効率化するアプローチとしてよく知られています。しかし、Jenkinsを通じてテストスイートを実行するコンピュータは、"ヘッドレス "である場合があります。つまり、物理的なディスプレイが接続されていなかったり、GUIアプリケーションを最終的にレンダリングするためのグラフィカルなログオンセッションがなかったりするのです。どちらの点も、ラックベースのコンピュータシステムでよく見られるケースであり、一般的にGUI自動化の妨げになる可能性があります。
ここでは、Squish GUI Testerで作成したGUIテストを、Unixプラットフォーム上のJenkinsサーバーを使用してヘッドレスで実行することについて説明します。Squish-Jenkins統合プラグインを使用して、プロジェクトに必要な高速な結果と迅速なフィードバックを得る方法について説明します。
このようなヘッドレスセットアップでは、通常、ディスプレイの欠如に関連するエラーメッセージが表示されます。Squishを使用する場合、これらのエラーメッセージは、ビルドのページのSquish report > Server Logに表示されます。考えられるエラーメッセージは以下の通りです:
qt.qpa.screen: QXcbConnection: Could not connect to display<br>Could not connect to any X display.
application-specific initialization failed: no display name and no $DISPLAY environment variable
ERROR:browser_main_loop.cc(1485)] Unable to open X display.
Error: no DISPLAY environment variable specified
qt.qpa.xcb: could not connect to display<br>qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.<br>This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.<br><br>Available platform plugins are: xcb.
Unixシステムの場合、「仮想」ディスプレイを使用することで、グラフィカルなログオンセッションやテストを実行するコンピュータの物理ディスプレイの必要性を回避することができます。
Unixシステム用の一般的な仮想ディスプレイソリューションの1つにXvfbがあります。Jenkinsプロジェクト内でXvfbを使用するには、Jenkins Xvfbプラグインを使用すると簡単です。
このプラグインをJenkinsプロジェクトにインストールして使用するには、次のような手順で行います:
Xvfbは、多くの場合、Unixシステムにはすでにインストールされています。インストールされているかどうかを調べるには、シェルでwhich xvfbを実行し、見つかるかどうかを確認するだけです。(UbuntuにXvfbをインストールするには、シェルでsudo apt install xvfbを実行します)。
# DISPLAYの名前をアウトプットする echo "DISPLAY: $DISPLAY"
# 適切なフォーカスを持つウィンドウマネージャーを起動する
fluxbox &
# ウィンドウマネージャーが起動するのを待つ
sleep 5
このためには、「fluxbox」ウィンドウマネージャがインストールされていることが必要ですが、一般的には、他のウィンドウマネージャーを使用することができます。(Ubuntuでfluxboxをインストールするには、sudo apt-get install fluxboxを実行します)。
また、このステップはSquishのビルドステップの前に行うことが重要です(下記を参照)。
Jenkinsの統合プラグインを使用すると、ディスプレイやモニタが接続されていないコンピュータでも、GUIテストの自動実行を簡単に設定できます。Jenkinsのような継続的インテグレーションツールを使用すると、マウスをクリックするだけでGUIテストを起動したり、アプリケーションやテストスクリプト自体の変更によってテストをトリガーしたりすることができます。
以上が、記事の内容となります。
SquishをはじめとするQtのQA(品質保証)ツールにご興味がおありの方は、Qt JapanのEメールアドレスjapan@qt.ioまでお気軽にご連絡ください。
概要のご説明から詳細な技術的相談、また無償のツールトライアルのご案内も行っております。