簡単にするために、テストのほとんどを省略し、問題のあるコードのみを含めました。それは:
click_button('Search')
page.select 'Preferred', :from => 'ticket_service_type'
これを実行すると、次のメッセージが表示されます。
Failure/Error: page.select 'Preferred', :from => 'ticket_service_type'
Capybara::ElementNotFound:
cannot select option, no select box with id, name, or label 'ticket_service_type' found`
このボタン クリック イベントがトリガーする AJAX 要求は select タグとは関係がないため、テストで順序を逆にすると、テストはパスします。Capybara のデフォルトの待機時間は 2 秒であることを知っているので、次のように 10 に変更しました。
Capybara.default_wait_time = 10
これにより、テストがパスすることはありません。これら 2 つのメソッドを互いにうまく連携させ、ユーザーが Web ページを操作する順序で機能させるにはどうすればよいでしょうか?
(自分の仕様からコードを投稿していれば、これはすぐに解決されたに違いありません。)