
スマホアプリの自動化ツールAppiumのサブプロジェクト?にあるappium_capybaraを試してみた。”Gem enabling appium support in capybara(AppiumがCapybaraをサポートしちゃうぜこの野郎!)”らしい。
appium_capybara
GitHub: https://github.com/appium/appium_capybara
exampleフォルダにiOSのサンプルがある。でも、うちは貧乏なのでAndroidしかないので、そのやり方を調べた。
appium.txt
サンプルやGitHubをながめていると、「Desired Capability」の設定を外出しするのが流行っているらしい。それにならって、appium.txtを作成。要件を記入しておく。
僕はリアルデバイスを繋いで動かしていたけど、デバイス名はつけてないと怒られるけど、間違っていても怒られなかったので、デバイス名とかは適当でよさそう。
サンプルだとsite_prismという、Capybara + PageObjectPatternを簡単に実装できるライブラリを使っていた。
GitHub: https://github.com/natritmeyer/site_prism
このライブラリを使うと、下のようにページオブジェクトがシンプルになる。
login_page.rb
通常だと
find_element(:id, 'com.daipresents.sample:id/login_button').click
と書くが、
element :login_button, :id, 'com.daipresents.sample:id/login_button'
と定義しておけば
login_button.click
のように定義した名前で呼び出せて、 find_element地獄から開放される感じ。
スターも800以上ついていて、いろんなところでよくみかけるライブラリだけど、モバイルアプリ系の情報が少ないので今後に期待。
spec_helper.rb
spec_helper.rbでは、ライブラリの読みこみやドライバーの初期化などを行う。上でつくったappium.txtもここで読みこんでいる。
spec_helper.rbの使い方や、Rubyのクラスローディングは、お作法がわかってないので勉強しないと。
login_spec.rb
login_spec.rbはこんなかんじ。ボタンをクリックするだけの動きをさせている。
調べてて思ったけど、CucumberとかCapybaraみたいに、工夫すれば読みやすく、書きやすくなるけど、そこまでやる? という気持ちがまだ残っている。
たとえば、プログラミング経験のない誇りあるテスターにテストコードを書いてもらうとしたら、どれをつかえばハードルが低いんだろう? Rubyだとすでに書きやすいけどなぁ。
そんなことを考える今日このごろ。