Я пытаюсь запустить интеграционные тесты на Rails, используя RSpec Capybara и драйвер селен-хром.
Я также использую capybara-angular gem.
Меня немного смущает, что именно происходит, так как я не вижу своих сценариев, когда я сплю, мой тест rspec проверяет вкладку исходников в отладчике Chrome. Похоже, что мои ресурсы не загружены, хотя кажется, что операторы ng-if работают, поскольку страница скрыта.
Так что я не совсем уверен, что происходит.Страница работает как положено в разработке, но переменные в $ scope не заданы в тесте.
Это моя установка в "system.rb
RSpec.configure do |config|
config.before(:each, type: :system) do
driven_by :rack_test
end
config.before(:each, type: :system, js: true) do
driven_by :selenium_chrome
end
end
require "capybara-screenshot/rspec"
include Capybara::Angular::DSL
Вот тест, который я выполняювыполняется:
it "shows changes to the budget when the budget is changed", :js do
visit(root_path)
sleep 0.5
fill_in "inputEmail", with: "test@tester.com"
fill_in "password", with: "test"
click_on("Log In")
sleep 0.25
click_on("Budgeting")
sleep 10
expect(page).to have_selector("#current_project_name", text: "Project A")
expect(page).to have_selector("#budgetInput1")
fill_in "#budgetInput1", with: "100"
# Fail on next line with 'expected to find visible css "#budgetInput1" but there were no matches'
page.should have_selector("#budgetInput1", text: "100") # <--test fails with
end
Из того, что я могу сказать, причина, по которой он не найден, заключается в том, что элемент появляется в div с ng-if="showBudget"
. $scope.showBudget=true
установлен в контроллере, но контроллер не 'Кажется, что он загружается, и {{showBudget==unknown}}
возвращает true
, что говорит о том, что AngularJS загружается, но скрипты, загруженные манифестом для страницы, не являются.
Как это исправить?