minimal ruby client for WebDriverAgent

WebDriverAgent developed by Facebook is one of WebDriver tool which run on iOS.

Previous some posts, I investigated this module. And now, I develop minimal wrapper Ruby cli client to help some operations.

I implemented some operations such as taking screenshots, getting source tree, status about the driver and install arbitrary app to the launched iOS target and get its session id. This minimal library will support some tasks for handling iOS applications.

This library does’t have concrete plan to develop as testing library for WebDriver for now. Just helping some operations against WebDriverAgent.

If you’d like to run tests via WebDriverAgent, please use Appium and it’s ruby binding. Because Appium will support WebDriverAgent in the future. (https://github.com/appium/appium-xcuitest-driver)

some references

『dRubyによる分散・Webプログラミング』を読んで分散処理を思い出す

dRubyによる分散・Webプログラミングを読みました。

この書籍ではdRubyのモジュール解説だけでなく、処理の中心となる考え方や参照渡しと値渡し、マルチスレッド、排他制御、Webアプリケーション実装など含めて、分散処理を考える上で基本的な考え方を網羅しています。dRubyは、 require "drb/drb" すると得られるRubyにおける分散処理環境を提供する機構です。

分散処理を考えるとき、遠隔で処理を行うための規格としてRPC(Remote Procedure Call)なんかがあります。それらはクライアント/サーバのスタブを提供し、ネットワーク越しの分散処理環境の構築を支援します。一方、dRubyでは、オブジェクト同士の通信の概念をネットワーク越しにまで拡張して、分散処理機構を構築します。Pure Rubyで実装されている、というところもとても素晴らしいですね。

私はここ半年いかないくらいの間、Erlang/Elixirをざっと学んでいました。なので、分散オブジェクト同士のコミュニケーションの取り方やLindaのRuby版であるRindaのTupleSpaceなんかの役割など、プロセス間のメッセージパッシングやETSを対比として理解を深めることができました。

この書籍、2005年の段階で関さんによって書かれていることがすごいですね。(その頃はまだ私は大学に入りたてでコンピュターにさえ慣れていなかったな…)

GooglePlay/AppStoreのレビューを取得するスクリプトを少し整えた

過去、GooglePlayのレビューを新着順に取得するみたいな雑な記事書いていたのですが、気晴らしに少し書き換えてみました。

Nokogiriとか使っていたのですが、たかだか性能も求めない処理にNokogiriは重たいのでOgaを使ってみることにしました。Bundlerだけで完結できる環境です。楽だ。

ついでに、引数にjpやenなどの言語を与えることで、その言語に対応したレビューを取得できるようにしました。ページングのようなちょっと面倒なことはしていないので、本当に単純なものです。

こんな感じで使える。

require './app_review.rb'

google_reporter = AppReview::GooglePlay.new('com.android.chrome', 'jp')
google_result = google_reporter.latest_reviews_upto 5

app_reporter = AppReview::AppStore.new('375380948', 'jp')
app_result = app_reporter.latest_reviews_upto 5

https://github.com/KazuCocoa/simpleAppReviewReporter

GitHub API v3のWebHookと戯れてみた

最近、GitHub API のWebHookを使っていろいろ自動化をトライしてみてます。なので、少し調べてみた。

WebHook自体は以下のURLを参照ください。
https://developer.github.com/webhooks/

ここでは、私が実際に行った作業の備忘録かねて残していく、というスタンスで記載します。

WebHookの登録

通常のGitHubなら、SettingのWebhooks & ServicesからWebHookを登録することができます。(2014/07/06時点)

続きを読む »

GooglePlayのレビューを新着順に取得する

ちまたで見られるGooglePlayのレビューを取得する記事の多くは、GetリクエストからHTMLのページを取得、その要素から必要なものを取得するという方法でした。

ただし、GooglePlayはデフォルトではレビューの並びが新着順ではありません。
一方、私は新着順の情報が欲しい。

そこで、簡単なスクリプトを作ってみました。

すんなりいくかと思っていたら、Net::HTTPから取得しいたNet::HTTPResponseのbodyをNokogiriに読み込ませていたのですが、うまくパースされない。
そこで解決に至ったまでの作業を備忘録として残しておきます。

続きを読む »

EveryDayRailsSpecを復習がてらやった、Cucumberは白痴?

https://leanpub.com/everydayrailsrspec
https://github.com/everydayrails/rspec_rails_4

これは、RailアプリをSpec含めてまるっと学ぶために良い知見を与えてくれます。
Code School もやってみようかな。

続きを読む »

QuickCheck on RSpec

CIで何回も回すから味の出てくるテストケースを考えてみる にも書いたように、同値に区分されるテストデータの集合に対してテストを実施する場合、ランダムな値でテストデータのバリエーションを増やすことは現実的な選択肢としてありと思う。また、全網羅が難しいテスト対象の領域に対してこのようにランダムな値を適用することは現実的な選択肢になる。
※ランダム性は議論の範囲外

ここでは、以前から知られているQuickCheckを以下でRubyのコードを使ってためしていく。
また、先日書いた RSpecによるテストコードでパラメタライズドテストを記述していく と少し比較もしてみる。

続きを読む »