Qtブログ(日本語)

【GUIテスト自動化】CircleCI CI/CDでSquishのテストを実行する

作成者: Qt Group 日本オフィス|Feb 13, 2023 1:00:00 AM

こちらの記事は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」の設定です。以下の内容を変更する必要があります。

  1. "auth-token" には、ランナーのセットアップ時に取得したトークンを指定します。
  2. "name"にはランナーの名前を設定します。
  3. "working-directory"には、ランナーのあるフォルダーへのパスを設定します。
  4. "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

このジョブでは、以下のような処理を行います。

  1. ジョブの実行のランナーへの割り当て
  2. ソースコードのチェックアウト
  3. Squish テストを実行し、JUnit レポートと HTML レポートを生成する。また、--exitCodeOnFailスイッチにより、テストが失敗した際に13を戻り値とするように設定する
  4. 成果物 (レポート生成によって生成されたファイル) の保存
  5. テスト結果 (JUnit レポート) の保存

ジョブの実行

CercleCIによるSquishのテストの実行は以下のようになります。

 

失敗したテスト結果のJUnitレポートは以下のようになります。

 

テスト実行後、HTMLレポートを含む成果物がアップロードされます。HTML レポートの詳細な結果を分析するには、成果物ビューを選択し、Web ブラウザで web_report/index.htmlを開きます。

 

以上が、CircleCIでSquishを使用する方法のご紹介になります。

 

お問い合わせ

SquishをはじめとするQtのQA(品質保証)ツールにご興味のおありの方は、Qt JapanのEメールアドレス:japan@qt.ioまでお気軽にご連絡ください。概要のご説明から詳細な技術的相談、また無料のツールトライアルのご案内もいたしております。