Я пытаюсь использовать следующую библиотеку TestHelpers, включенную в гем best_in_place. Функция, которую я пытаюсь использовать, bip_text
, выглядит следующим образом:
module TestHelpers
include ActionView::Helpers::JavaScriptHelper
def bip_text(model, attr, new_value)
id = BestInPlace::Utils.build_best_in_place_id model, attr
find("##{id}").click
execute_script <<-JS
$("##{id} input[name='#{attr}']").val('#{escape_javascript new_value.to_s}');
$("##{id} form").submit();
JS
wait_for_ajax
end
При попытке запустить его в моих спецификациях он выдает следующую ошибку (включая трассировку стека):
Failure/Error: find("##{id}").trigger('click')
Capybara::NotSupportedByDriverError:
Capybara::Driver::Node#trigger
# /Users/sam/.rvm/gems/ruby-2.4.1/gems/capybara-2.18.0/lib/capybara/driver/node.rb:99:in `trigger'
# /Users/sam/.rvm/gems/ruby-2.4.1/gems/capybara-2.18.0/lib/capybara/node/element.rb:341:in `block in trigger'
# /Users/sam/.rvm/gems/ruby-2.4.1/gems/capybara-2.18.0/lib/capybara/node/base.rb:85:in `synchronize'
# /Users/sam/.rvm/gems/ruby-2.4.1/gems/capybara-2.18.0/lib/capybara/node/element.rb:341:in `trigger'
# ./app/helpers/test_helper.rb:6:in `bip_area'
# ./spec/features/admin/admin_can_edit_a_task_inline_spec.rb:27:in `block (3 levels) in <top (required)>'
Что особенно странно в этом случае, так это то, что у меня есть другая спецификация, которая прекрасно работает. Просто для примера, вот как я это называю: bip_text @task, :title, "New Task"
(TestHelpers требуется в моем rails_helper)
Я искал ответы в Интернете и обнаружил, что некоторые предлагают использовать Capybara-webkit вместо capybara. В чем именно разница? Я не хочу, чтобы накладные расходы на бинарный веб-набор требовали, чтобы я мог решить эту проблему с помощью чистой капибары.