Simulate walking and driving routes on an iPhone
A line between two pins is not a route test. Transport mode, timing, turns, pauses, and cleanup all change what the app experiences.
6 min readUpdated

Setting an iPhone to one test coordinate answers a narrow question: what does the app show at this place? Many location bugs only appear between places. A route crosses road junctions, changes direction, enters geofences, and gives the app a stream of updates to process.
You can test that movement from a Mac with a connected development iPhone. The phone receives simulated coordinates while the app runs normally, which makes the same route repeatable during development and QA.
What you need before route playback
Use a test device that you are allowed to control. Connect it to the Mac, accept the trust prompt if one appears, and enable Developer Mode on the iPhone. Open the app under test and grant the location permission that matches your test case.
Keep the device connected during the run. If the Mac cannot see it, reconnect the cable, unlock the phone, and confirm the trust relationship before changing anything in the app. Fixing that connection first saves a lot of confusion later.
Plan a driving route
Open GhostMe, select the iPhone, and enter a starting point and destination. Choose driving mode, then inspect the route on the map before you start. A short trip with a few turns is ideal for checking navigation UI, map following, arrival logic, or a timeline that depends on distance traveled.
Start the simulation and watch both GhostMe and the app on the phone. The current position should move along the planned road route. Pause your observations at turns and near the destination. Those are the places where stale bearings, early arrival states, and abrupt camera changes tend to become visible.
If your test depends on speed, choose a pace that makes the relevant screen easy to observe. Faster playback is useful for a broad regression pass. Slower playback is better when a state changes inside a small area and you need to see the exact update that caused it.
Switch to a walking route
Walking mode is more than a slower version of driving. A pedestrian route can use paths, entrances, and connections that a car route avoids. That makes it useful for testing venue arrival, a last-block handoff, a campus app, or any feature where the final approach matters.
Use the same endpoints in walking mode if you want a clean comparison. Then try a short route that includes a pedestrian path. Check whether your app displays the right travel context and whether it behaves sensibly when the simulated coordinate is away from the nearest vehicle road.
Use the same run after every change
Record the start, destination, transport mode, and playback speed with the issue. Note the app build and the state that should appear. After changing the code, return the simulated location to the start and run the same route again.
Repetition is the useful part. A real walk introduces small changes every time, while a saved test route gives the fix the same input that exposed the problem. It also gives a reviewer a specific check instead of a sentence such as "move around until the map breaks."
Test interruptions one at a time
Once the basic route works, repeat it with one interruption. Put the phone to sleep and wake it. Send the app to the background and return. Stop playback halfway through, then begin a fresh run. Change location permission between separate tests if your app supports more than one permission state.
Avoid combining every interruption in one pass. If the final screen is wrong after six changes, you still do not know which change caused it. One route plus one changed condition produces a report another person can act on.
Know what route playback does not cover
Coordinate playback is a software testing tool. It cannot reproduce every condition of a physical trip, including weak satellite reception, a loose cable, or the way a person handles the phone while moving. Test those environmental and hardware conditions separately when they matter to the feature.
It also should not be used to present a false location to people or services. Keep route simulations on your own devices, in apps you develop, and inside testing environments you have permission to use.
Clear the test location when you finish
Stop the route in GhostMe and clear the simulated location before disconnecting the iPhone. Open the app again and confirm that it returns to the expected location behavior. This cleanup matters when the same phone is used for several test cases because an old coordinate can make the next result look broken before the test even begins.
Driving and walking playback cover different paths, but the testing habit is the same: choose a small route, change one condition, record the result, and replay it after the fix.
Keep reading
- A MapKit location testing checklist that catches real bugsUse this before release when “the blue dot moved” is no longer a meaningful test result.
- How to test a GPS app without movingThe goal is not a fake blue dot. It is a repeatable sequence that lets a second tester reproduce the same location behavior.
- How to test Life360 location safely and with consentLocation sharing involves real people. A useful test starts with consent, a shared plan, and a device everyone knows is in test mode.