Rails 統合テストが失敗しましたが、その理由がわかりません。SeleniumをドライバーとしてCapybaraを使用しています。
このテストでは、AJAX 呼び出しが行われた後にページ コンテンツが削除されたことを確認します。関連するアクションは、ボタンがクリックされることであり、そのボタンのクリックにより、jQueryremove()
呼び出しを介してページのセクションが削除されます。以下は、統合テスト コードの概算です。
click_button("Remove stuff")
assert has_no_link?("This should be removed")
アサーションは失敗し、リンクがまだ存在することを意味します。
私は Capybara について調べていて、デフォルトの待機時間を延長できることを知っています。私はそれをばかげた値 (20 秒) に拡張しましたが、それでもアサーションは失敗します。
自分で手動でテスト プロセスを実行すると、ページのソースにはコンテンツが表示されますが、DOMには表示されません (Firefox の DOM インスペクターを表示して要素を探します)。これは問題ですか?テストが Firefox で実行されている間に DOMを検査して、コンテンツが存在するかどうかを確認しようとしましたが、存在しないようです。
DOM に存在しなくなったこのリンクをカピバラがまだどのように見つけているのか、私にはわかりません。Capybara は DOM ではなくソースを調べて、そこにリンクを見つけていますか? もしそうなら、私はこのテストを修正してテストに合格することを確認する方法がわかりません。ページを更新すると問題は解決しますが、それはユーザーが行うことではないため、テストに合格するためだけにページを変更することをためらっています...
この問題にアプローチする方法についての推奨事項があれば幸いです。
ありがとう!