【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.6 Now!
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.