capybara + poltergeist は便利

capybara のドライバーのひとつ poltergeist には remote debugging という experimental な機能があり、テスト実行中のDOMの状態をブラウザからインスペクタでみれる。

使い方

使い方は簡単で、README にもあるように driver に inspector: true を渡してあげ、 気になる部分に page.driver.debug と書くだけ。

  • spec_helper.rb
Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, :inspector => true)
end

Capybara.javascript_driver = :poltergeist
  • hoge_spec.rb
feature 'ブログを書く', :js do
  scenario 'タイトルを入力すると自動で大文字になる' do
    fill_in 'post[title]', with: 'soymilk'

    page.driver.debug

    page.should have_content 'SOYMILK'
  end
end

これでブラウザ上で debug を差し込んだタイミングのコンテキストでインスペクタが使える!

f:id:hrysd:20130913214715p:plain

最後に

Idobata のように、ガチガチにJavascriptを使っていて、わけもわからずテストが落ちて悩んだ時に便利!!!!(実体験)