2016-08-09 1 views
0

Mon application intègre avec succès le service Web de l'API Google Maps JS/Google Places pour créer quelques menus déroulants Autocomplete. J'ai configuré ma clé de navigateur google api pour que les urls de développement (localhost), de mise en scène et de production fonctionnent. Cependant, sur n'importe quelle page ce service est utilisé, les tests d'acceptation (en utilisant 127.0.0.1) se brisent. Par exemple:L'API Google ne reconnaît pas */127.0.0.1: *

Capybara::Poltergeist::JavascriptError: 
    One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details). 

    Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error 
    Your site URL to be authorized: http://127.0.0.1:52724/clients/3 
    Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error 
    Your site URL to be authorized: http://127.0.0.1:52724/clients/3 
     at https://maps.googleapis.com/maps/api/js?v=3.exp&key=(my_browser_key)&signed_in=true&libraries=places:34 in hb 

J'ai essayé d'ajouter différentes configurations de 127.0.0.1 dans mon navigateur références clés qui n'ont pas travaillé, comme: http://127.0.0.1:* , */127* , and */127.0.0.1:\d\d\d\d\d/*

Ce dernier semble drôle parce que chaque nouvelle série de ma suite de tests génère 5 chiffres aléatoires après 127.0.0.1 :, comme vu dans l'erreur ci-dessus.

* Je ne veux pas ignorer les erreurs JS en changeant ma configuration de poltergeist comme mentionné dans l'erreur. Cela dit, je n'utilise pas réellement le service sur aucun de ces tests d'acceptation. Je ne veux pas tester la fonctionnalité google, je veux tester la fonctionnalité personnalisée entourant ces listes déroulantes.

+0

Cette application utilise angulaire 1 sur l'extrémité avant et Rails 4 sur le dos. Si pour une raison quelconque, l'un ou l'autre est pertinent. –

Répondre

1

J'ai été capable de contourner ce problème en réglant les ports app_host et server_port directement dans ma configuration Capybara. Merci à la réponse acceptée here. J'ai ajouté à mon fichier spec_helper:

def set_host(host) 
    default_url_options[:host] = host 
    Capybara.app_host = "http://" + host 
end 

RSpec.configure do |config| 
    config.before(:each) do 
    Capybara.current_driver = :poltergeist 
    Capybara.javascript_driver = :poltergeist 
    set_host("127.0.0.1:30111") 
    Capybara.server_port = 30111 
    end 
end 

Je précisé cette server_port exacte dans mes API Google les informations d'identification clés. Les tests d'acceptation passent maintenant.

MISE À JOUR:

Il semble que les instructions de Google ne sont pas à jour et incomplète (soupir). Après plus d'expérimentation, simplement 127.0.0.1 sans * ou / fait le travail.

La solution ci-dessus fonctionne également.