Railsアプリケーションで、ドライバーでCapybaraを使用して、RspecのjQuery TokenInputフィールドでBootstrapモーダルをテストしようとしています。問題の部分は次のとおりです。capybara-webkit
click_link 'Create Team Modal'
sleep 1
within('div#modal_popup') do
fill_in 'input#token-input-team_name', with: 'Fancy team name'
sleep 1
fill_in 'input#token-input-team_name', with: '\t'
sleep 1
click_button 'Create Team'
end
page.should have_content('Fancy team name')
- ボタンをクリックしてモーダルを取得
- TokenInput にチーム名を入力します
- Tab キーを押して選択するようにシミュレートする
- チームを作成する
- ページに名前が表示されていることを確認する
これは、それらすべてが適切に配置されている場合にのみ機能しsleep 1
ます。そうしないと、Capybara が でクラッシュしhave_content
、チーム名を正しく選択できなかったため、最終的にサーバー エラーが発生します。ただし、TokenInput フィールドのないその他の Bootstrap モーダルはsleep 1
、ロードする前に を必要としません。
そうは言っても、睡眠を取り除き、これを通常どおりに進める方法はありますか? wait_until
Capybara 2は、デフォルトの待機時間内に何かをテストするために待機するため、(正当な理由で)取り出しました...しかし、それは私の上記のテストには反映されていないようです。あたかもこのモーダルに出入りするときに、カピバラがその待機期間に従事していないかのようです。誰でもこれを経験したことがありますか?Rails 3.2.10、Rspec 2.12、Capybara 2、capybara-webkit 0.14.0、TokenInput 1.6 を使用。