モバイルアプリのテストでMaestroを使ってみた
Maestroを使ってみた!便利なスクロールとJavaScriptの使い方
モバイルアプリのテストにMaestroを利用しています。Maestroは非常に便利なツールですが、使っている中で少し工夫が必要な場面もありました。今回は、その中で特に便利だと感じた機能や、少し工夫した使い方をTipsとして紹介します。
Maestroとは
Maestroは、公式サイトで「最もシンプルで効果的なモバイルUIテストフレームワーク」(the simplest and most effective mobile UI testing framework
) と紹介されています。これまでのUIテストツールから学んだことを基に作られており、開発者がテストを書きやすく設計されています。
(引用元: Maestro公式ドキュメント)
スクロールについて
長い画面やリストで、画面の外にある部品を操作したい場合にスクロール機能が役立ちます。scrollUntilVisible
という命令で、この処理を簡単に書くことができます。
# "item-id-to-find"という名前の部品が見えるまで下にスクロール
- scrollUntilVisible:
element:
id: "item-id-to-find"
スクロール方向を変える
基本は下方向へのスクロールですが、direction
を使うと4方向(UP
, DOWN
, LEFT
, RIGHT
)を指定できます。これにより、左右に動くメニューなどもテストできます。
# 上方向にスクロールして「リストの先頭」という文字を探す
- scrollUntilVisible:
element:
text: "リストの先頭"
direction: UP
# 右方向にスクロールして「carousel-next-button」という名前のボタンを探す
- scrollUntilVisible:
element:
id: "carousel-next-button"
direction: RIGHT
(参考: scrollUntilVisible - Maestro Docs)
JavaScriptの利用について
Maestroの基本的な命令だけでは少し難しいチェックをしたい場合は、runScript
を使ってJavaScriptのプログラムを呼び出すことができます。
以下のサンプルでは、画面から取得したテキストが「user-」という文字で始まっているか、JavaScriptを使ってチェックします。
Maestroの設定ファイル (test.yaml
)
- copyTextFrom:
id: "user-id-label"
- runScript:
file: "verify-text.js"
env:
COPIED_TEXT: ${maestro.copiedText}
EXPECTED_PREFIX: "user-"
JavaScriptファイル (verify-text.js
)
/* global maestro, COPIED_TEXT, EXPECTED_PREFIX */
const actual = COPIED_TEXT;
const expected = EXPECTED_PREFIX;
if (!actual.startsWith(expected)) {
throw new Error(`文字のチェックエラー: ${actual}は${expected}で始まっていません`);
}
JavaScriptのログを確認する方法
JavaScript内で console.log
を使って出力した内容は、そのままではコンソールのテスト実行時にlogの結果の表示が残りません。これを確認したい場合は、--debug-output
というオプションを使います。
maestro test test.yaml --debug-output maestro-debug.log
こうすることで、console.log
の内容が maestro-debug.log
というファイルに保存され、デバッグが簡単になります。
(参考: runScript - Maestro Docs)
まとめ
この記事では、Maestroを業務で使う中で便利だと感じたTipsを2つ紹介しました。
-
scrollUntilVisible
で、画面の外にある部品も柔軟に操作できる。 -
runScript
で、JavaScriptを使い少し複雑なチェックも行える。
これらのTipsが、これからMaestroを使う方の助けになれば幸いです。
Discussion