Just built this little snippet in a hacknight, it simulates a geolcation via capybara, so you can test if you geo-magic actually works 🙂
View
<p>Finding your location... <span id="status">checking...</span></p> <script> jQuery(function () { var timeout = (document.location.href.indexOf('test_location') >= 0 ? 100 : 0); setTimeout(function(){ navigator.geolocation.getCurrentPosition(function(){ jQuery('#status').html("found you!"); }); }, timeout) }); </script>
Capybara test via selenium in rspec
def simulate_location(lat, lng) page.driver.browser.execute_script <<-JS window.navigator.geolocation.getCurrentPosition = function(success){ var position = {"coords" : { "latitude": "#{lat}", "longitude": "#{lng}" }}; success(position); } JS end it "can use location", :js => true do visit '/?test_location=true' simulate_location 20, 20 sleep 0.2 page.should have_content "found you!" end