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

Тесты Capybara не работают с таймаутом:: Ошибка при первом тестировании при использовании Google Maps

Я тестирую RSpec + Capybara + Selenium (Firefox). Независимо от того, какой поднабор моих приемочных тестов я запускаю, первый из них терпит неудачу (следующие тесты работают правильно) с "причиной" следующим образом:

 Failure/Error: visit '/'
 Timeout::Error:
   Timeout::Error

Мое приложение сильно зависит от GoogleMaps и BackboneJS. Когда я запускаю тесты, страница не заканчивается для загрузки, а сообщение "Передача данных из maps.googleapis.com" остается в левом нижнем углу окна Firefox, однако страница выглядит так, как будто она правильно загружена (имеются карты и другой контент). Я уже установил тайм-аут до 60 секунд, чтобы исключить любые проблемы с медленной сетью. И все последующие тесты работают очень быстро (например, правильные сценарии Google были извлечены и уже кэшированы). Также, когда я запускаю сервер в среде разработки и обращаюсь к нему (localhost:3000), все работает нормально.

Firefox 17.0.1. Некоторые из моих драгоценных камней:

capybara (2.0.1)
database_cleaner (0.9.1)
mongoid (3.0.13)
rspec (2.12.0)
rspec-core (2.12.1)
rspec-expectations (2.12.0)
rspec-mocks (2.12.0)
rspec-rails (2.12.0)
selenium-webdriver (2.26.0)

У вас есть идея, почему это происходит и как его предотвратить?

EDIT:

spec/spec_helper.rb:

# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
  config.treat_symbols_as_metadata_keys_with_true_values = true
  config.infer_base_class_for_anonymous_controllers = false
  #config.order = "random"
end

spec/features/features_spec_helper.rb:

require_relative "../spec_helper"

require 'capybara/rspec'

Capybara.default_driver = :selenium
Capybara.default_wait_time = 60

EDIT2:

Раньше он работал правильно (несколько недель назад, этот проект был остановлен на то время). Может быть представлен обновлением RSpec от 2.11 до 2.12 (что я сделал несколько недель назад), но я просто попытался понизить его, и это произойдет. Я вернул всю базу кода в месяц назад, чтобы исключить возможную регрессию драгоценных камней. Проблема все еще происходит.

EDIT3:

Я только что обнаружил, что если я прокомментирую строку, отвечающую за привязку карты от Google:

new google.maps.Map($("#map")[0], mapOptions)

тогда все работает как шарм.

EDIT4:

Исходный код примера приложения: https://github.com/skalee/capybara-google-maps-failure

Запуск всех спецификаций приведет к тому, что Timeout:: Error в первом (по крайней мере для меня). Однако все спецификации передаются, когда:

#map{ width: 600px ; height: 600px }

Драгоценные камни - это точно такие же драгоценности, как и в моем приложении. В /vendor/assets есть сторонние скрипты.

4b9b3361

Ответ 2

Вы пытались изменить GemFile вокруг, чтобы создать группу: производство?

И вы загружаете весь этот script в нужное место?

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false">

Этот пример предназначен для загрузки:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE"
type="text/javascript">
</script>