Подтвердить что ты не робот

С Capybara, как я могу узнать, поддерживает ли используемый драйвер в JavaScript?

В моем приложении Rails у меня есть набор приемочных тестов для огурца, которые проверяют различные страницы моего приложения. С огурцом пометка определенного теста (сценария) с помощью @javascript приводит к тому, что сценарий запускается с использованием драйвера JavaScript вместо более простого драйвера, который не поддерживает JavaScript.

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

4b9b3361

Ответ 1

В случае, если кто-то заинтересован, я просмотрел документацию для Capybara и нашел другое возможное решение:

if Capybara.current_driver == Capybara.javascript_driver
  # Supports JavaScript
else
  # Doesn't support JavaScript
end

Ответ 2

Это отвратительно, но это то, к чему я приземлился. Думаю, что я получил это от суеты, жаль, что я потерял ссылку на него, но, по крайней мере, это довольно просто:

def javascript_test?
  [:selenium, :webkit, :chrome, :poltergeist].include?(Capybara.current_driver)
end

Если вы определяете (или требуете в своем Gemfile) другие js-совместимые драйверы, вам придется добавить их в этот список.

Ответ 3

Ищите меня из этого ответа, как самый простой способ сделать это - установить переменную экземпляра в hook Before:

Before('@javascript') do
  @javascript = true
end

Затем вы можете проверить, помечен ли сценарий в определениях шагов, проверяя значение этой переменной экземпляра:

When /^I go to the homepage$/ do
  if @javascript
    ...
  else
    ...
  end
end

Я тестировал это и, похоже, работает.