CIサービスと連携してテストの定期実行を行う際など、最新版のアプリファイル以外を指定して実行したいケースがあるでしょう。
ここでは、MagicPodにアップロードされているアプリファイルを一括実行の際に任意に指定する方法をご紹介します。
CIサービスとの連携についての詳細は、下記ページを参照してください。
目次
アップロードされた順番を元に指定する
例えば、最新のアプリファイルの1つ前にアップロードされたファイルを使用してテストを行いたい場合、下記のようなシェルスクリプトで実行することができます。
#!/bin/bash
MAGICPOD_API_TOKEN="XXX"
YOUR_ORGANIZATION_NAME="XXX"
YOUR_PROJECT_NAME="XXX"
# magicpod-api-clientの最新版を現在のディレクトリにダウンロード・解凍
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 -q ${FILENAME}.zip
# 最後から2番目にアップロードされたファイルのapp_file_numberを取得
RESPONSE=$(curl -s -X 'GET' \
'https://app.magicpod.com/api/v1.0/YOUR_ORGANIZATION_NAME/YOUR_PROJECT_NAME/list-files/' \
-H 'accept: application/json' \
-H "Authorization: Token ${MAGICPOD_API_TOKEN}")
ARRAY_LENGTH=$(echo "$RESPONSE" | jq '.app_files | length')
if [ "$ARRAY_LENGTH" -lt 2 ]; then
echo "Error: app_files の要素数が不足しています(必要: 2以上、実際: $ARRAY_LENGTH)"
exit 1
fi
APP_FILE_NUMBER=$(echo "$RESPONSE" | jq -r '.app_files[1].app_file_number')
echo "取得したapp_file_number: ${APP_FILE_NUMBER}"
# batch-runを実行
# 実行コマンドの取得方法についてはこちらを参照してください
./magicpod-api-client batch-run \
-t ${SECRET_API_TOKEN} \
-o YOUR_ORGANIZATION_NAME \
-p YOUR_PROJECT_NAME \
-s "{\"test_settings_name\":\"xyz\",\"test_settings\":[{\"environment\":\"magic_pod\",\"os\":\"android\",\"device_type\":\"arm64_v8a_emulator\",\"auto_grant_app_permissions\":\"all\",\"version\":\"14.0\",\"model\":\"Pixel 7\",\"app_type\":\"app_file\",\"app_file_number\":\"${APP_FILE_NUMBER}\",\"device_log_level\":\"none\",\"app_time_zone\":\"Default\",\"test_case_numbers\":\"11\",\"visual_diff_pattern\":\"Default\",\"implicit_wait_policy\":\"emphasize_stability\"}]}"
アプリファイルの名前を元に指定する
アプリファイル名の前方一致や部分一致などで、実行するファイルを指定することもできます。
下記はアプリファイルの冒頭が「v2」で始まるもののうち、最後にアップロードされたファイルを指定する例です。
#!/bin/bash
MAGICPOD_API_TOKEN="XXX"
YOUR_ORGANIZATION_NAME="XXX"
YOUR_PROJECT_NAME="XXX"
# magicpod-api-clientの最新版を現在のディレクトリにダウンロード・解凍
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 -q ${FILENAME}.zip
# 「v2」から始まるファイル名の中で、最大のapp_file_numberを取得
APP_FILE_NUMBER=$(curl -s -X 'GET' \
'https://app.magicpod.com/api/v1.0/YOUR_ORGANIZATION_NAME/YOUR_PROJECT_NAME/list-files/' \
-H 'accept: application/json' \
-H "Authorization: Token ${MAGICPOD_API_TOKEN}" \
| jq -r '.app_files[] | select(.app_file_name | ascii_downcase | startswith("v2")) | .app_file_number' \
| sort -nr \
| head -n 1)
# 取得できたか確認
if [ -z "$APP_FILE_NUMBER" ]; then
echo "Error: app_file_number が取得できませんでした"
exit 1
fi
echo "取得したapp_file_number: ${APP_FILE_NUMBER}"
# batch-runを実行
# 実行コマンドの取得方法についてはこちらを参照してください
./magicpod-api-client batch-run \
-t ${SECRET_API_TOKEN} \
-o YOUR_ORGANIZATION_NAME \
-p YOUR_PROJECT_NAME \
-s "{\"test_settings_name\":\"xyz\",\"test_settings\":[{\"environment\":\"magic_pod\",\"os\":\"android\",\"device_type\":\"arm64_v8a_emulator\",\"auto_grant_app_permissions\":\"all\",\"version\":\"14.0\",\"model\":\"Pixel 7\",\"app_type\":\"app_file\",\"app_file_number\":\"${APP_FILE_NUMBER}\",\"device_log_level\":\"none\",\"app_time_zone\":\"Default\",\"test_case_numbers\":\"11\",\"visual_diff_pattern\":\"Default\",\"implicit_wait_policy\":\"emphasize_stability\"}]}"
batch-runの実行コマンドについて
magicpod-api-clientを使ったbatch-runの実行コマンドは、下記の方法で取得できます。
まず、テスト一括実行設定の右上の「︙ 」> 「コマンドラインで実行」をクリックし、「magicpod-api-clientで実行(詳細設定)」を選択します。
./magicpod-api-client batch-run以降をコピーし、\"app_file_number\"の項目を\"app_file_number\":\"${APP_FILE_NUMBER}\"に編集し、使用してください。