GhostMe

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

An abstract city map with a glowing blue route between two pins

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

All guides