Capybara 経由で hoverIntent イベントをトリガーする方法を考え出した人はいますか?
私の Rails アプリのメイン ビューでは、ユーザーがそのセルの上にマウスを置くと、テーブル セルに編集ボタンが表示されます。
最近、jQuery hoverIntentプラグインを追加して、これらのボタンの表示を遅らせました。これにより、ユーザーがページ上でマウスをすばやく動かしたときに、UI がビジーな配電盤のように見えなくなりました。
残念ながら、hoverIntent の追加により、いくつかの Cucumber-Capybara-Selenium テストが中断されました。テストでは、次のような手順でボタンを表示していました (簡略化):
And /^I hover on the table cell with ID "(.*)"$/ do |cell_id|
selector = "td#" + cell_id
js = %Q{ (function() { jQuery("#{ selector }").mouseover(); })() }
page.evaluate_script js
end
これは、通常のマウスオーバー イベントではうまく機能しましたが、hoverIntent をトリガーしません。
1 つの (一種のハック的な) 解決策は、名前付き関数を作成して、マウスオーバーとマウスアウトの動作のために hoverIntent に渡すことです (私が現在行っている匿名のインライン関数の代わりに)。その後、Capybara ステップでマウスオーバー関数を名前で呼び出して、同じ結果を得ることができます。
ただし、これは hoverIntent 機能のテストを回避するため、最適ではありません。
ご提案いただきありがとうございます。