実現したいこと
あくまでiosアプリを自動的に操作して、自動的にエビデンスを取る仕組みを作りたいということ。
内部結合・外部結合といった感じで内容によっては自動化できないものもあるがそこはまた別の機会に。
環境構築
※Mac bookのm1 Pro
- maestroを入れる
- javaを入れる
- Facebook IDBを入れる(iOS自動化をお助け)
自動化してみる
以下のコマンドを実行し、シミュレーターを開く
open -a Simulator
サンプルを落とす
maestro download-samples
以下を実行して、サンプルアプリをシミュレーターにインストールする。
cd samples
unzip sample.zip
xcrun simctl install Booted Wikipedia.app
サンプルを実行したらこのように開かれる。
maestro test ios-flow.yaml
うん、アプリを開いただけだ。
さっきコマンドで指定したサンプルの「ios-flow.yaml」の中身はこちら。
appIdはxcode側にあるBundle Identifierを指定。「launchApp」がアプリ起動を表す。操作に関しては「launchApp」しか書いていないから、指定したアプリのidを開いて終わった。このファイルに自動操作のための記述をしていけばいい。そのあとはmaestroで用意されているコマンドを書いていけばいい。「- tapOn: "ユーザID"」みたいに書いたら、「ユーザID」という文字が書かれたボタンやテキストなど自動でタップしてくれる。ブラウザ操作する場合はhtmlのidなどを指定しなくてはならないケースがほとんどだが、これは便利。
Webシステムの自動テストの仕組みをガッツリ作ったこともあったが、それに比べたらちょっとアプリ操作速度は遅い。まあその自動操作をして自動画面キャプチャを撮ってもらう間に他の作業をやるのはかなりラクになると思う。
まとめ
他のテクニック(スクロールやテキスト入力、画面キャプチャし画像保存)はググれば出てくるので私も同じように書く必要もないので省略するが、便利であることは伝えられたかもしれない。