投稿の経緯
頭痛ーるのUIテストにMagicpodを導入することになり、テストをGitHub Actionsで自動化したので記事にします。
MagicPodとは
Webアプリ・モバイルアプリの両方に対応しているクラウド型のUIテスト自動化ツールです。
MagicPodのテストはプログラミングの知識がなくてもノーコード・ローコードで構築できます。
直感的にテストケースを作成できるのでぜひ一度触ってみてください。
前提
・Fastlaneはすでに導入ずみ
・GitHub Actionsはすでに導入ずみ
・MagicPodも導入ずみ(テストケースも作成ずみ)
Simulator用にビルドされたアプリを作成する
MagicpodではSimulator用にビルドされたアプリが必要なのでFastlane stepで作成します。
desc "xcodebuild for simulator"
lane :preparation_magicpod_test do
app_dir_path = "./magicpod_test"
build_ios_app(
scheme: "xxxxx",
workspace: yyyyy.xcodeproj,
configuration: "Debug",
export_method: "ad-hoc",
derived_data_path: app_dir_path,
skip_package_ipa: true,
skip_archive: true,
destination: "generic/platform=iOS Simulator"
)
end
lane:任意の名前を設定します(今回はpreparation_magicpod_test)
app_dir_path:Simulator用にビルドされたアプリを保管するディレクトリを指定
scheme:ビルドするアプリのscheme
workspace:ビルドするアプリファイルを指定(Cocoapodsを使っているので.xcodeproj)
その他設定項目はFastlaneのドキュメントを参考にしてもらえればいいと思います。
ここまで書いたら
$ bundle exec fastlane preparation_magicpod_test
を実行して./magicpod_test
にビルドされたアプリが作成されているか確認しましょう。
ビルドされたアプリをMagicPodにアップデートする
先ほどビルドしたアプリをMagicPodにアップロードするためのシェルスクリプトを書きます。
今回はrun_magicpod_test.shというファイルです。
#!/bin/bash
# magicpod-api-clientのバージョンを指定して現在のディレクトリにダウンロード
RELEASE_VERSION=0.99.24.1
OS=mac
curl -L -O https://github.com/Magic-Pod/magicpod-api-client/releases/download/${RELEASE_VERSION}/${OS}64_magicpod-api-client.zip
# magicpod-api-clientを解凍
unzip -f ${OS}64_magicpod-api-client.zip
# MagicPodで使う各種環境変数を設定(MAGICPOD_API_TOKENは別で定義)
export MAGICPOD_ORGANIZATION=MagicPodで設定したOrganization名
export MAGICPOD_PROJECT=MagicPodで設定したプロジェクト名
# 先ほど作成したappファイルをMagicPodにアップロードして、FILE_NOを取得
APP_PATH=magicpod_test/Build/Products/Debug-iphonesimulator/アプリ名.app
FILE_NO=$(./magicpod-api-client upload-app -a ${APP_PATH})
# 先ほどアップロードしたアプリと、設定番号の設定を使ってテスト一括実行
./magicpod-api-client batch-run -S 1 -s "{\"app_file_number\":\"${FILE_NO}\"}"
# テストが成功した場合はアップロードしたアプリは削除
if [ $? = 0 ]; then
./magicpod-api-client delete-app -a ${FILE_NO}
fi
ここまでかけたら
$ bash run_magicpod_test.sh
を実行して設定番号で指定したMagicPodの一括テストが実行されているか確認しましょう。
↓参考記事
GitHub Actionsで動かす
MagicPodの一括テストが動作したなら次はGitHub Actionsで自動化しましょう。
実行するタイミングは任意ですが頭痛ーるではプルリクエストをmainにマージしたタイミングと,
App Store Connectにアップロードするタイミングで実行しています。
- name: Preparation MagicPod Test
run: bundle exec fastlane preparation_magicpod_test
- name: Start MagicPod Test
env:
MAGICPOD_API_TOKEN: ${{ secrets.カギの名前 }}
run: bash run_magicpod_test.sh
MAGICPOD_API_TOKENは秘密鍵なのでGitHubのSecretで定義しており
env:
MAGICPOD_API_TOKEN: ${{ secrets.カギの名前 }}
の部分で取り出しています。
これでMagicPodのテストがCI/CDで実行されると思います。
おわりに
これまでがっつりFastlaneとGitHub Actionsを触ったことがなかったのでいい経験になりました。
それぞれどういう記述が必要で、何をしているかの全体像はかなり掴めたかなと思っています。
MagicPodを導入したことで、頭痛ーるアプリのデバッグコストが軽減されることに期待しています。
最後までご覧いただきありがとうございました!