language which makes it easy to simulate how a user interacts with your application.” http://teamcapybara.github.io/capybara/ • ざっくり書くと、いい感じにブラウザ上で ユーザーが行う操作を記述&実行する ためのライブラリ • Seleniumなどの外部ライブラリを driver として利用することができ、 Capybaraが それらを使うための便利メソッドを提供し てくれている
seconds = session_options.default_max_wait_time if [nil, true].include? seconds session.synchronized = true timer = Capybara::Helpers.timer(expire_in: seconds) begin yield rescue StandardError => e session.raise_server_error! raise e unless catch_error?(e, errors) if driver.wait? raise e if timer.expired? sleep(0.01) reload if session_options.automatic_reload else old_base = @base reload if session_options.automatic_reload raise e if old_base == @base end retry ensure session.synchronized = false end end 個々の要素を 追っていくと結構複雑
a status of 422/ ] JSライブラリが出すログを抑制するオプションがなかったり、HTTPステータス コードで4xxが返ってくるケース等ではログが出てしまうのでfilterを使って抑 制する。 rspecのexample毎に制御したい仕組みを作る場合はbefore/after hooks を組み合わせたりと追加の手間がかかる。