【GUIテスト自動化】CircleCI CI/CDでSquishのテストを実行する
2月 13, 2023 by Qt Group 日本オフィス | Comments
こちらの記事はRunning Squish tests in CircleCI CI/CDの抄訳です。
Squishでは、Squish IDEからの実行だけではなく、コマンドラインでsquishrunnerコマンドを呼び出してテストを実行し、JUnit および Web レポートを生成することもできます。
squishrunner は --exitCodeOnFailスイッチ付きで呼び出すことで、テストケースが失敗した場合はカスタム終了コード (0 以外) を返し、それ以外の場合はゼロを返すように設定が可能です。したがって、CircleCIはその値に応じてジョブの状態を設定することができます。
CircleCIとは?
CircleCIは、クラウドやプライベートインフラ上でCI/CDサービスを提供するプラットフォームです。
この例では、ローカルマシン上で動作するエージェントを使用します。
ローカルエージェントの設定
設定を行うには、まずソースが入ったGitHubやBitBucketのリポジトリを用意します。次に、このリポジトリをプロジェクトのソースとしてCircleCIに追加する必要があります。
その後、ローカルエージェントをセットアップします。"Self-Hoster Runners "にアクセスし、"Create Resource Class "を選択します。そのページの指示に従って、ローカルエージェントに以下のフォルダを作成します。
- Workdir/
- circleci-launch-agent.exe
- circleci-runner.log
- launch-agent-config.yaml
次のステップは、ローカルエージェント設定ファイル「launch-agent-config.yaml」の設定です。以下の内容を変更する必要があります。
- "auth-token" には、ランナーのセットアップ時に取得したトークンを指定します。
- "name"にはランナーの名前を設定します。
- "working-directory"には、ランナーのあるフォルダーへのパスを設定します。
- "mode"プロパティを "single-task" から "continuous" に変更すると、ランナープロセスが1回のビルド実行のみで終了しないようになります。
最終的には、設定ファイルは以下のようになります。
api:
auth_token: "02ff98778548cd252o1ythfpsl570we153d776599d0d0510c1596b346e34c761e9f3d135669839" # FIXME: Specify your runner token
# On server, set url to the hostname of your server installation. For example,
# url: https://circleci.example.com
runner:
name: "WindowsLaptop" # FIXME: Specify the name of this runner instance
mode: continuous
working_directory: D:\CircleCI\Workdir
cleanup_working_directory: false
logging:
file: D:\CircleCI\circleci-runner.log
セルフホストランナーを設定する最後のステップは、グローバル環境変数を作成し、squishrunner の場所を定義することです。これを行うための一つの方法は、次のような内容の簡単なバッチスクリプトを作成することです。
set SQUISHRUNNER_PATH=D:\Squish/7.1/Squish_for_Qt_7.1.0/bin/squishrunner.exe
call circleci-launch-agent.exe
このスクリプトを実行することで、セルフホストエージェントが起動します。
プロジェクト構成
CircleCiでワークフローを設定するために、プロジェクトの設定ファイルを編集します。
version: 2.1
jobs:
run-tests:
machine: true
resource_class: eduardkaverinskyi/local
steps:
- checkout
- run:
name: "Run Squish tests"
command: ${SQUISHRUNNER_PATH} --testsuite ${TESTSUITE_PATH} --local --exitCodeOnFail 13 --reportgen junit,C:/CircleCI/Workdir/reports/xml/junit_report.xml --reportgen html,reports/web_report
environment:
TESTSUITE_PATH: ./repository_testsuite_js
- run:
name: "Run FAILING Squish tests (expected failure)"
command: ${SQUISHRUNNER_PATH} --testsuite ${TESTSUITE_PATH} --local --exitCodeOnFail 13 --reportgen junit,C:/CircleCI/Workdir/reports/xml/junit_report_failing.xml --reportgen html,reports/web_report
environment:
TESTSUITE_PATH: repository_testsuite_failing_rb
- store_artifacts:
path: reports
- store_test_results:
path: C:/CircleCI/Workdir/reports/xml
workflows:
run-tests-workflow:
jobs:
- run-tests
このジョブでは、以下のような処理を行います。
- ジョブの実行のランナーへの割り当て
- ソースコードのチェックアウト
- Squish テストを実行し、JUnit レポートと HTML レポートを生成する。また、--exitCodeOnFailスイッチにより、テストが失敗した際に13を戻り値とするように設定する
- 成果物 (レポート生成によって生成されたファイル) の保存
- テスト結果 (JUnit レポート) の保存
ジョブの実行
CercleCIによるSquishのテストの実行は以下のようになります。
失敗したテスト結果のJUnitレポートは以下のようになります。
テスト実行後、HTMLレポートを含む成果物がアップロードされます。HTML レポートの詳細な結果を分析するには、成果物ビューを選択し、Web ブラウザで web_report/index.htmlを開きます。
以上が、CircleCIでSquishを使用する方法のご紹介になります。
お問い合わせ
SquishをはじめとするQtのQA(品質保証)ツールにご興味のおありの方は、Qt JapanのEメールアドレス:japan@qt.ioまでお気軽にご連絡ください。概要のご説明から詳細な技術的相談、また無料のツールトライアルのご案内もいたしております。
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.8 Now!
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.