
スマホアプリの自動化ツール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
https://gist.github.com/daipresents/f12517a22655454f51c9cf913d0ccd0f.js?file=appium.txt
サンプルやGitHubをながめていると、「Desired Capability」の設定を外出しするのが流行っているらしい。それにならって、appium.txt
を作成。要件を記入しておく。
僕はリアルデバイスを繋いで動かしていたけど、デバイス名はつけてないと怒られるけど、間違っていても怒られなかったので、デバイス名とかは適当でよさそう。
サンプルだとsite_prism
という、Capybara + PageObjectPatternを簡単に実装できるライブラリを使っていた。
GitHub: https://github.com/natritmeyer/site_prism
このライブラリを使うと、下のようにページオブジェクトがシンプルになる。
login_page.rb
https://gist.github.com/daipresents/f12517a22655454f51c9cf913d0ccd0f.js?file=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
https://gist.github.com/daipresents/f12517a22655454f51c9cf913d0ccd0f.js?file=spec_helper.rb
spec_helper.rb
では、ライブラリの読みこみやドライバーの初期化などを行う。上でつくったappium.txt
もここで読みこんでいる。
spec_helper.rb
の使い方や、Rubyのクラスローディングは、お作法がわかってないので勉強しないと。
login_spec.rb
https://gist.github.com/daipresents/f12517a22655454f51c9cf913d0ccd0f.js?file=login_spec.rb
login_spec.rb
はこんなかんじ。ボタンをクリックするだけの動きをさせている。
調べてて思ったけど、Cucumber
とかCapybara
みたいに、工夫すれば読みやすく、書きやすくなるけど、そこまでやる? という気持ちがまだ残っている。
たとえば、プログラミング経験のない誇りあるテスターにテストコードを書いてもらうとしたら、どれをつかえばハードルが低いんだろう? Rubyだとすでに書きやすいけどなぁ。
そんなことを考える今日このごろ。