capybara-webkit не может выполнить javascript (системный тест minitest) - PullRequest
0 голосов
/ 29 мая 2018

Уже несколько дней гуглю, но не повезло со следующей проблемой: у меня системный тест с использованием Minitest (5.11.3), capybara (2.13.0) и capybara-webkit (1.14.0), сказалтесты не выполняются в двух конкретных представлениях, зависящих от JavaScript: View1 скрывает / отображает поля в соответствии с выбранным раскрывающимся списком, View2 взимает данные с полей по запросу AJAX на основе выбранного пользователем другого раскрывающегося списка.

Текущая конфигурация:

require 'test_helper'
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  driven_by :webkit
  Capybara.javascript_driver = :webkit
end

Конфигурация служебной информации (на всякий случай параноик)

setup do
  Capybara.current_driver = Capybara.javascript_driver
end

Тем не менее, щелчки и утверждения не выполняются, поскольку Javascript не выполняется, поэтому ожидаемые изменения в представлениях никогда не происходят.Излишне говорить, что он работает без проблем в разработке :)).

1 Ответ

0 голосов
/ 29 мая 2018

Скорее всего, это потому, что вы используете capybara-webkit, который основан на QtWebkit.Если он собран с какой-либо из версий QtWebkit, он не поддерживает JS> ES5.1.Это означает, что если вы используете какие-либо современные функции JS (let / const / методы, добавленные к стандартным объектам в ES6 и т. Д.) И не полностью переносите / заполняете, чтобы быть совместимыми с ES5, JS будет выдавать ошибки и, следовательно, незапустить.Вы можете подтвердить это, запустив селен (безглавый хром, если вам нужен безголовый) и посмотрите, работают ли там ваши тесты.

Примечание: вам не нужно устанавливать javascript_driver напрямую, если вы используете driven_by с системойтесты, и вы, вероятно, хотите обновить Capybara по крайней мере до последней версии 2.x.

...