本当はもっと早く記事にする予定だったが。。。
関連記事:
- behat3とzombiejsでBDDに挑戦(1)
- behat3とzombiejsでBDDに挑戦(2)
- behat 3.0 とzombiejsでBDDに挑戦(3)
- behat 3.0とphantomjsでBDDに挑戦(4)
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 余談はここから ↓-------------------
さて、以前の記事でwait設定をしたことがあるが、
その他にもbehat3単独では不足している機能がたくさんある。
待ち時間一つとっても、n秒待つだけではなく、
画面に現れるまで待つとか、
画面の表示、非表示を確認したいとか。
ピンポイントでスクリーンショットを撮りたいとか、
json, xmlの状態確認したいとか。
そのほかもろもろ拡張機能を加えたいが一つ一つをContextに追加していてはちょっと面倒だ。
そこで最初から必要なものをあらかじめ用意しているパッケージがある。
今回はそれを使うことにする。
------------------- ↑ 余談はここまで ↑-------------------
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
Behat Custom Helperのインストール
composerでインストール
composerより追加し設定ファイルを書き換えればOK。
$ ./composer.phar require "sanpi/behatch-contexts *@dev" --prefer-dist
$ vi ./behat.yml
設定ファイル変更
設定ファイルに記述を追加する
extensionとcontexts項目に記述を追加
contextsには必要なものだけ追加する形でも良い。
default:
suites:
default:
paths:
- %paths.base%/features
contexts:
- FeatureContext
- Behat\MinkExtension\Context\MinkContext
- behatch:browser: # ←ここ追加
- behatch:debug: # ←ここ追加
- behatch:json: # ←ここ追加
- behatch:rest # ←ここ追加
- behatch:system: # ←ここ追加
- behatch:table # ←ここ追加
- behatch:xml # ←ここ追加
extensions:
Behat\MinkExtension:
base_url: http://en.wikipedia.org/
sessions:
default:
selenium2:
wd_host: http://127.0.0.1:4444/wd/hub
Sanpi\Behatch\Extension: ~ # ←ここ追加
インストール確認
$ ./bin/behat -dl
デフォルトの状態より圧倒的にフィーチャ文脈が増えていることが確認できる。
contextにbehatch:browserを追加してしていると以下の記述が見つかると思う。
Then /^(?:|私が)"(?P[^"])"を見るまで(?P\d+)秒間?待つ$/u
Then /^(?:|私が)"(?P[^"])"を見るまで待つ$/u
Then /^(?:|私が)"(?P[^"])"要素(?:で|に)"(?P[^"])"を見るまで(?P\d+)秒間?待つ$/u
Then /^(?:|私が)(?P\d+)秒間?待つ$/u
これをフィーチャに追加すればwait機能が使えることになる。
ではサンプルにあったwikipedia検索に追加してみる。
(サンプルは英語記述なのでフィーチャ分も英語バージョンを使っている)
Feature: Search
In order to see a word definition
As a website user
I need to be able to search for a word
Scenario: Searching for a page that does exist
Given I am on "/wiki/Main_Page"
Then I wait 10 seconds # ← ここに追加
When I fill in "search" with "Behavior Driven Development"
And I press "searchButton"
Then I should see "agile software development"
Scenario: Searching for a page that does NOT exist
Given I am on "/wiki/Main_Page"
Then I wait 10 seconds # ← ここに追加
When I fill in "search" with "Glory Driven Development"
And I press "searchButton"
Then I should see "Search results"
これからはとりあえず組み込んでおいて、
使うか使わないかは後で決めるって方向でいいのではないかな。
------------------- ↑ 本題はここまで ↑ -------------------
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 補足はここから ↓-------------------
実はbehat3のmink-extensionや今回のBehat Custom Helperの日本語の調整を少し手伝った。
プルリクエスト(変更内容を適用してくれ依頼のこと)を送信したのが3か月前。
一部テストに不具合があったので修正をすぐに入れたのだが、
何か月も放置状態だった。
いったん取り消して再度送ったら適用されたので、
どうやら修正分に気づいていなかったっぽい。
githubちゃんもうちょっとどうにかしてほしい。