定義した Turnip の step 一覧ページを生成してくれるツール作りました。
https://github.com/gongo/table_beet
インストール
$ gem install table_beet
使い方
詳細は README をご覧下さい。
$ table_beet -h Usage: table_beet [options] --output Directory to output (default: ./stepdoc) --path Directory that contains step file. (default: ./spec) --suffix Suffix of step file (default: _steps.rb) -n, --textmode Display steps in plain text (No generate HTML) -v, --version Print this version -h, --help Display this help message.
試しに Turnip の example steps を使って生成してみましょう。
$ git clone git://github.com/jnicklas/turnip.git /tmp/turnip
$ table_beet --path /tmp/turnip/examples/steps
作成された $(pwd)/stepdoc/index.html
を開くとステップ一覧が載っているページが開くはずです。同じページをデモとして http://gongo.github.com/table_beet/demo/index.html に載せておきました。動きが確認できると思います。
余談ですが
会社で開発に携わっている Web アプリケーション(PHPです。PHPです。)の End-to-End テストは
- PHPUnit + Selenium(no webdriver)
- Unit Test じゃないんだから DB も見ないし、Model と連携する必要もないから悲しみながら PHP で書く必要ないよねってことで ↓ に移行
- Capybara + Cucumber(selenium-webdriver)
- やったぜ Ruby だ!でも各画面でステップ名が被りそうで且つ処理が違うやつあるんだよな…
- っておもって QA@IT に質問したら答えが返ってきた
- Turnip なにこれ!いいじゃん!!
- Capybara + Turnip(selenium-webdriver, poltergeist(試案中))
って流れで遷移してます。これで落ちつきたい所ですが、まだわからないですね。
Scoped step definitions in Cucumber-JVM - Cukes | Google Groups
でも話題に上がってたのですが、「同じステップ名なのに違う処理とか管理めんどくせーよ」みたいなのもあるはずなので、そこはこれからの課題ですね。
まあ違う処理といっても、中の細かい部分(XPathが違うとかっていうレベル)だけで、ユーザ視点での操作としては変わりがないので、 feature の記述に限ってはそこまで複雑化しないんじゃないかなって思ってたりもします。加えて補助も兼ねて table_beet
を使ってのもあります。