Почему событие ajax: success не срабатывает при тестировании системы Rails? - PullRequest
0 голосов
/ 04 декабря 2018

У меня системный тест, который не проходит, потому что в тестовой среде не запускается правильное событие ajax:success.Событие корректно запускается при тестировании вручную в браузере.

Вот ссылка, по которой щелкает пользователь (и тест):

link_to 'Note', note_product_option_path(@product, option), remote: true, data: { note_link: true }

Событие JS (CoffeeScript), которое принимает ответи вставляет в body документа:

NOTE_LINK = '[data-note-link="true"]'
$ ->
  $('body').on 'ajax:success', NOTE_LINK, (e) ->
    alert 'ajax:success'
    $('.option-note').remove()
    data = e.detail[2].response        
    $div = $('<div></div>').html(data)
      .addClass('option-note')
    $('body').append($div)

Вот настройки тестирования системы:

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  include Devise::Test::IntegrationHelpers

  Capybara.register_driver :headless_chrome do |app|
    options = Selenium::WebDriver::Chrome::Options.new
    options.add_argument('headless')
    options.add_argument('window-size=1480x1680')
    Capybara::Selenium::Driver.new(app, :browser => :chrome, :options => options)
  end
end

В моем тесте системы:

visit product_path(option.product)
click_link 'Note'
assert_selector '.option-note', wait: 5

Этоутверждение всегда терпит неудачу, даже если оно всегда работает, когда я тестирую в браузере.alert никогда не срабатывает и не запускается Капибарой, но всегда появляется при ручной проверке.Журнал испытаний показывает, что контроллер отображает правильный JS.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 05 декабря 2018

Проверьте консоль браузера на наличие других ошибок JS и исправьте их.Большая разница между средами разработки и тестирования заключается в том, что ресурсы JS объединяются в один файл в среде тестирования, что означает, что ошибка в одном JS может помешать запуску JS других файлов.В режиме разработки этого не происходит, поскольку каждый файл загружается отдельно, поэтому ошибка может повлиять только на другой код в том же файле

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