Ответ 1
В случае, если кто-то заинтересован, я просмотрел документацию для Capybara и нашел другое возможное решение:
if Capybara.current_driver == Capybara.javascript_driver
# Supports JavaScript
else
# Doesn't support JavaScript
end
В моем приложении Rails у меня есть набор приемочных тестов для огурца, которые проверяют различные страницы моего приложения. С огурцом пометка определенного теста (сценария) с помощью @javascript
приводит к тому, что сценарий запускается с использованием драйвера JavaScript вместо более простого драйвера, который не поддерживает JavaScript.
Есть ли простой способ для моих тестов определить, выполняются ли они в настоящее время с драйвером, поддерживающим JavaScript, или тем, который этого не делает? Я хочу, чтобы я мог делать мои тесты несколько иначе, если они запускаются с включенным JavaScript.
В случае, если кто-то заинтересован, я просмотрел документацию для Capybara и нашел другое возможное решение:
if Capybara.current_driver == Capybara.javascript_driver
# Supports JavaScript
else
# Doesn't support JavaScript
end
Это отвратительно, но это то, к чему я приземлился. Думаю, что я получил это от суеты, жаль, что я потерял ссылку на него, но, по крайней мере, это довольно просто:
def javascript_test?
[:selenium, :webkit, :chrome, :poltergeist].include?(Capybara.current_driver)
end
Если вы определяете (или требуете в своем Gemfile) другие js-совместимые драйверы, вам придется добавить их в этот список.
Ищите меня из этого ответа, как самый простой способ сделать это - установить переменную экземпляра в hook Before
:
Before('@javascript') do
@javascript = true
end
Затем вы можете проверить, помечен ли сценарий в определениях шагов, проверяя значение этой переменной экземпляра:
When /^I go to the homepage$/ do
if @javascript
...
else
...
end
end
Я тестировал это и, похоже, работает.