CircleCIからMagicPodのテストを実行するには、magicpod-api-clientを使い、以下の手順でクラウド端末または外部クラウドサービス端末を使ってテストを実行するのが簡単です。
※magicpod-api-clientのダウンロード方法はこちらを参照してください。
(クラウドを使用せずにCircleCIのマシン上のシミュレータやエミュレータを使ってテストを行う場合は、モバイルアプリテストの場合はローカルPCでのテスト一括実行の設定を、ブラウザテストの場合は一括テスト実行・コマンドラインテスト実行(ローカルPCテスト)を参考にしてください。)
run_magicpod_test.shを作成
まずは、magicpod-api-clientを使ってテストを実行するrun_magicpod_test.shを作成します。
モバイルアプリテストの場合は、以下のように作成してください。 (リリースブランチのライフサイクル管理を Zapier で自動化するを参考にしました)。
#!/bin/bash -e
# (-eで、コマンドがエラーになった行で処理を終了させる)
# magicpod-apiクライアントの最新版を現在のディレクトリにダウンロード・解凍
# セキュリティのため、MAGICPOD_API_TOKENはCircleCIの環境変数で設定
OS=mac # Windowsマシン上でのビルドの場合はwindows、Linuxはlinuxを指定
FILENAME=magicpod-api-client # 任意のファイル名
curl -L "https://app.magicpod.com/api/v1.0/magicpod-clients/api/${OS}/latest/" -H "Authorization: Token ${MAGICPOD_API_TOKEN}" --output ${FILENAME}.zip
unzip -fq ${FILENAME}.zip
# MagicPodで使う各種環境変数を設定
export MAGICPOD_ORGANIZATION=<MagicPod組織名>
export MAGICPOD_PROJECT=<MagicPodプロジェクト名>
# app/ipa/apkファイルをMagicPodにアップロードして、FILE_NOを取得
FILE_NO=$(./magicpod-api-client upload-app -a アプリファイルへのパス)
# 先ほどアップロードしたアプリと、設定番号の設定を使ってテスト一括実行
./magicpod-api-client batch-run -S 設定番号 -s "{\"app_file_number\":\"${FILE_NO}\"}"
# テストが成功した場合はアップロードしたアプリは削除(任意)
if [ $? = 0 ]; then
./magicpod-api-client delete-app -a ${FILE_NO}
fi
- magicpod-api-clientをテストのたびにダウンロードしていますが、こちらから、あらかじめ最新のmagicpod-api-clientを取得し、CircleCIのビルドが利用するGitレポジトリに追加しておく方法もあります。
- CircleCIのプロジェクト環境設定などで、環境変数MAGICPOD_API_TOKENを定義しておきます。トークンの値は、MagicPodにログイン後こちらのページから取得できます。
- テスト一括実行時の「設定番号」は、「テスト一括実行」ページで設定を作成した上で、その番号を指定します(図1)。また、アップロードされたアプリファイルを使ってテストを実行するため、「アプリ種別」は「クラウドアップロード」にします(図1)。
ブラウザテストの場合は、アプリのアップロードは不要のため、以下のように作成してください。
#!/bin/bash -e
# (-eで、コマンドがエラーになった行で処理を終了させる)
# magicpod-apiクライアントの最新版を現在のディレクトリにダウンロード・解凍
# セキュリティのため、MAGICPOD_API_TOKENはCircleCIの環境変数で設定
OS=mac # Windowsマシン上でのビルドの場合はwindows、Linuxはlinuxを指定
FILENAME=magicpod-api-client # 任意のファイル名
curl -L "https://app.magicpod.com/api/v1.0/magicpod-clients/api/${OS}/latest/" -H "Authorization: Token ${MAGICPOD_API_TOKEN}" --output ${FILENAME}.zip
unzip -fq ${FILENAME}.zip
# MagicPodで使う各種環境変数を設定。
export MAGICPOD_ORGANIZATION=MagicPod組織名
export MAGICPOD_PROJECT=MagicPodプロジェクト名
# 設定番号の設定を使ってテスト一括実行
./magicpod-api-client batch-run -S 設定番号
CircleCI設定ファイルの編集
続いて、run_magicpod_test.shを実行するCircleCIのジョブを追加します。ジョブ設定は以下のようになります。
magic-pod-e2e-test:
steps:
# checkoutやアプリのビルドなど、必要な処理を実施
# ... 中略 ....
- run:
name: MagicPod E2Eテスト
command: bash run_magicpod_test.sh