バイセル Tech Blog

バイセル Tech Blogは株式会社BuySellTechnologiesのエンジニア達が知見・発見を共有する技術ブログです。

Katalon を CircleCI 上で実行する

f:id:nmu0:20191022164856p:plain
引用元: https://d1h3p5fzmizjvp.cloudfront.net/themes/katalon_4/images/katalon_template_1809/logo_katalon@2x.png

テクノロジー開発部の村上です。平山さんが書いているように、弊社ではKatalonをCIで試験的に使用しています。
今回はCircleCIでの具体的な実行方法を紹介させていただきます。

tech.buysell-technologies.com

CircleCIの設定

公式からkatalonstudio/katalon というDockerイメージが提供されていて、それがCircleCIで動く状態になっています。
CircleCIの カスタムビルドの Docker イメージの使用 というページに書かれているように、CircleCIで動かすためにソフトウェアを色々とインストールしないといけないので、 1から自分で用意するのは結構大変です。弊社ではこのイメージをベースにさらにカスタマイズして使用しています。 このイメージではkatalon-execute.shというコマンドが叩けるようになっていて、その内容は Console Mode Execution と基本的に一緒です。
ですのでその引数を指定する形となります。
それを踏まえると以下のようなCircleCIの設定ファイルを記述することとなります。

version: 2.1
jobs:
  build:
    docker:
      - image: katalonstudio/katalon
    steps:
      - checkout
      - run:
          name: Execute Katalon Studio
          command: katalon-execute.sh -browserType="Chrome" -retry=0 -statusDelay=15 -testSuiteCollectionPath="Test Suites/MyCollection" -apiKey=${KATALON_API_KEY}
          environment:
            LANG: ja_JP.UTF-8 
      - store-test_results:
          path: ./report
      - store-artifacts:
          path: ./report

ポイントは4つあり、

  1. testSuiteCollectionPathの指定
  2. LANG環境変数の設定
  3. apiKeyの指定
  4. store-test_resultsとstore-artifactsの指定

となります。

まず1つ目のtestSuiteCollectionPathの指定ですが、これがテストを実行する単位となります。
testSuitePathを指定することも可能なのですが、CIでは複数のTest Suiteを一度に実行したいので、予めTest Suite Collectionを作成してそれを実行する形にすると良いです。

2つ目のLANG環境変数の設定ですが、これはブラウザ実行時のロケールを指定するのに必要となります。
これを指定しないと例えば日付のフォームなどで普段の日本語環境とは異なる指定方法となり、ローカルでは動いていたのにCircleCI上では失敗するという事態が発生します。
そのためにja_JP.UTF-8を指定しておきましょう。

3つ目のapiKeyですが、これはプラグインを使用するために必要となります。
プラグインを使用しない場合は不要なのですが、後述するBasic Reportというプラグインがテスト結果を見やすくするために必要なので設定しておきます。
API Keyは、KATALON_API_KEY という環境変数に格納し、CircleCIのUI上で値を設定しています。

4つ目のstore-test_resultsとstore-artifactsの指定ですが、これはCircleCI上で結果を残すために必要となります。
Basic Reportというプラグインを使用すると、JUnit形式で結果が出力され、それをCircleCIは見やすい形式で表示することが出来ます。

Basic Report プラグインの準備

前述したように、JUnit形式でテスト結果を出力するためにBasic Reportプラグインを導入します。 KatalonはKatalon Storeというものがありまして、それを使用して各種プラグインを導入します。
Katalon Storeを利用するためにはアカウント登録が必要で、そのアカウントでAPI Keyも発行出来ます。
会社の共通アカウントを用意して、それでAPI Keyを発行しておくと良いでしょう。
Basic Reportの導入と設定自体は公式サイトの以下のリンクを参考にして頂ければと思います。

Basic Report

Basic Reportを導入すると、CircleCIを実行すると以下のようにわかりやすく結果を見ることが出来ます。

f:id:nmu0:20191022164741p:plain

まとめ

いかがでしたでしょうか。CircleCI上で動かすこと自体は比較的簡単に出来ます。
その上で認証周りやデータのセットアップなどで工夫が必要なのですが、導入の端緒となれば幸いです。

参考資料