RSpec / Capybara Javascript тестирование сбрасывает ошибку драйвера - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь использовать следующую библиотеку 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. В чем именно разница? Я не хочу, чтобы накладные расходы на бинарный веб-набор требовали, чтобы я мог решить эту проблему с помощью чистой капибары.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...