SeleniumのHaskell版で、ブラウザアプリをテストしてみる。
テスト対象は、以前に作っていた
Backbone.jsでModelとViewを使ってみるで、
テストフレームワークにはHspecを使った。
SeleniumとHspecを連携させるには、
hspec-webdriverというパッケージがあった。
が、サンプルが動かなかったり残念だったので、
つなぎの部分は自分で何とかした。
手続き的なので、あまりHaskellっぽい簡潔な感じにはなっていない。
テスト対象は、Backbone.jsを使ったシングルページアプリ。
ユーザの入力に対し、JS上でイベントが処理されて
最終的に描画されるにはわずかに時間がかかる。
今回のテストでは、一番目のテストは
おそらくそれが原因で失敗している。
失敗するときのスクリーンショットを見ると、
確かに変更が反映されていない。
回避するには、waitUntil
などでJSの処理を待てばいいはずだが、
あまりうまくないのでそのままにした
(テストされる側も、テストしやすいようにしておけばよかった)。
なお、hs-webdriverのパッケージだけでは
テスト中にブラウザを起動できない。
Seleniumのスタンドアロンサーバを立てて、
これにブラウザを操作させる必要がある。
Homebrewにはselenium-server-standalone
という
パッケージがあるので、インストールして起動しておくこと。