5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MagicPodのUIテストをGitHub Actionsで自動化してみた

Last updated at Posted at 2023-05-12

投稿の経緯

頭痛ーるの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というファイルです。

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にアップロードするタイミングで実行しています。

.yaml
- 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で定義しており

.yaml
env:
  MAGICPOD_API_TOKEN: ${{ secrets.カギの名前 }}

の部分で取り出しています。

これでMagicPodのテストがCI/CDで実行されると思います。

おわりに

これまでがっつりFastlaneとGitHub Actionsを触ったことがなかったのでいい経験になりました。
それぞれどういう記述が必要で、何をしているかの全体像はかなり掴めたかなと思っています。

MagicPodを導入したことで、頭痛ーるアプリのデバッグコストが軽減されることに期待しています。

最後までご覧いただきありがとうございました!

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?