2016-12-21 1 views
-1

Я пытаюсь написать интеграционные тесты для моего приложения Rails. Его графический интерфейс довольно сложный, поэтому ему нужно много интеграционных тестов (в отличие от контрольных или модульных тестов), чтобы убедиться, что все запросы AJAX и рендеринг DOM работают правильно.Как загрузить CSS и JS в Capybara?

Я пробовал Capybara, Capybara-webkit, Poltergeist и Chromedriver, но ни один из них не выполняет какие-либо мои функции CSS или document.ready.

Я проделал большой объем чтения и попробовал множество решений, но у меня нет успеха. Я думаю, что это может быть связано с конвейером активов.

Я не уверен, где искать решение проблемы.

Спасибо, Луиза

ответ

3

В моем случае, это было что-то делать с трубопроводом активов.

После того, как я отключил конкатенацию активов в test.rb, все это работало нормально.

test.rb:

# Debug mode disables concatenation and preprocessing of assets. 
    # This option may cause significant delays in view rendering with a large 
    # number of complex assets. 
    config.assets.debug = true 

spec_helper:

Capybara.register_driver :chrome do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome) 
end 

Capybara.javascript_driver = :chrome 
Capybara.asset_host = "http://localhost:3000" 

отсортирован. Мне нужно было переключиться на хромированный рекордер, чтобы найти это - это зависело от того, что я действительно мог наблюдать за тем, как тестовый драйвер выполняет свою работу в реальном браузере, и откройте консоль javascript Chrome (в то время как capybara была приостановлена ​​в отладчике), чтобы сориться и посмотреть, что происходит.

+1

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

+0

Спасибо за совет! В dev нет ошибок, я подумал, что Capybara должен показать мне любые js-ошибки (с js: true и js_errors: true), но никто не появляется. – Louise

+0

IIRC js_errors - это вариант полтергейста, а не capybara-webkit. В capybara-webkit вам нужно будет проверить 'page.driver.error_messages', чтобы увидеть какие-либо ошибки, которые были подняты JS - я буду держать пари, что покажет вам некоторые ошибки, связанные с чем-то вроде функций ES6, которые capybara-webkit не делает support –

Смежные вопросы