💬

iOS開発でMaestroを試してみた

2023/07/19に公開

公式ドキュメントはこちら

インストール方法

$ curl -Ls "https://get.maestro.mobile.dev" | bash
$ brew tap facebook/fb
$ brew install facebook/fb/idb-companion

サンプルをダウンロードしてみる

$ maestro download-samples
$ cd ./samples
$ unzip sample.zip
$ xcrun simctl install Booted Wikipedia.app
$ maestro test ios-flow.yaml # or maestro test --continuous ios-flow.yaml

ios-flow.yamlを編集して、コマンドを入力することで実行できる

appId: org.wikimedia.wikipedia
---
- launchApp
- tapOn: "次へ"
- tapOn: "場所"
- tapOn: "保存済み"
- tapOn: "履歴"
- tapOn: "検索"

Maestro Studioを使ってみる

$ maestro studio

ローカルサーバが立ち上がって、Web上でMaestroコマンドを生成可能になる

コマンド一覧

  • - launchApp アプリを立ち上げる
  • - tapOn: "次へ" 次へと書かれているテキストをタップすることが可能
    • ※ アプリ内のテキスト, アクセシビリティラベル, 座標を指定することが可能
  • - assertVisible: "次へ" アプリ内に要素が表示されているかどうかを確認する
  • - inputText: "Hello World" テキストを入力することができる
    • ※ (もちろんですが)テキストにフォーカスが当たっている場合のみ
  • - pasteText テキストの貼り付け
  • - runFlow: anotherFlow.yaml 別のファイルをコマンドから実行することができる
  • - scroll: 下方向へスクロールする
    • swipeコマンドを用いることで、スクロール方向を調整することが可能
  • - stopApp アプリを停止する
  • - takeScreenshot: MainScreenshot スクショを撮影することが可能
  • - startRecording: <screen-recording-file-name>- stopRecordingで画面録画を行うことができる

(他にもコマンドがあるので、詳細はコマンド一覧)

よさそうなこと

  • maestro studioコマンドを使うことでWeb上でMaestroコマンドを生成可能になる
  • 人為的な待機ブロックを用意しなくても良いとのこと (参考: waitコマンド)
  • 条件式はあまり好まれないとのこと (参考: conditionsコマンド)

できなさそうなこと

  • 実機へのサポート (Simulatorのみサポートしているとのこと) (参考: iOS - UIKit)

感想

手続き型のように命令を順に書いていくのは分かりやすいと感じました。
iOSでもUIテストにMaestroを導入できそうだと感じました。

参考

https://maestro.mobile.dev/
https://zenn.dev/tellernovel_inc/articles/79c261b52daed8
https://speakerdeck.com/kgmyshin/uitesutohamoumaestrodeiinokamosirenaihua
https://speakerdeck.com/hkusu/maestro-wo-github-actions-dedong-kasu-androidbian

Discussion