Validation: Fix map directions link opening in-app instead of native Apple Maps (#305)

validation-305-2026-07-26 Doc

validation pass

Verdict: PASS

Ticket

ldraney/landscaping-assistant#305 — Fix map directions link opening in-app instead of native Apple Maps. Merged via PR #319.

Environment

Production cluster, namespace landscaping-assistant, URL: https://landscaping-assistant.app

Tiers Executed

Tier 1 (CI tests) + Tier 3 (prod deployment verification). Labels: type:bug, arch:rails-app, arch:ios.

Checks

# Criterion How Verified Result Evidence
1 Tapping 'Directions' on iOS opens Apple Maps natively with correct location Code review: <code>data: { turbo: false }</code> added to both Directions links in <code>show.html.erb</code> (lines 32, 58). Prevents turbo-ios from intercepting the link. Pattern matches established convention used by login, logout, and delete account links. PASS Diff: <code>data: { turbo: false }</code> added to both <code>link_to "Directions"</code> calls. Cannot verify on actual iOS device from this environment.
2 Link still works on web (opens Apple Maps in a new tab) Code review: <code>target: "_blank"</code> and <code>rel: "noopener"</code> preserved. <code>data-turbo="false"</code> does not affect standard browser behavior for external links. PASS HTML attributes verified in source at lines 32 and 58 of <code>show.html.erb</code>
3 No regression on other navigation in the app CI pipeline #839 passed all steps (clone, database, bundle-install, lint, test, build-and-push). Only 2 lines changed in 1 file. No model, controller, or route changes. PASS Woodpecker pipeline #839: all 6 steps success
4 Pipeline green Woodpecker pipeline #839 (push to main) — all steps succeeded PASS Pipeline #839 status: success
5 Deployment live with correct image <code>kubectl get pods</code> — pod running with image tag <code>a0baf9ca04aaa3fea2d5b259a9b325198c9abb76</code> matching merge commit PASS Pod: <code>landscaping-assistant-7d5669d55d-575pl</code>, 1/1 Running, 0 restarts, image tag matches commit <code>a0baf9c</code>
6 Health endpoint responds <code>curl https://landscaping-assistant.app/up</code> returns 200 PASS HTTP 200

Regression Check

  • Only app/views/properties/show.html.erb modified (2 lines changed, 2 insertions, 2 deletions)
  • Change is additive — adds one HTML data attribute per link. Cannot break existing behavior.
  • data: { turbo: false } follows the established pattern already used in sessions/new.html.erb (login), profile/index.html.erb (logout, delete account)
  • CI full test suite passed (pipeline #839, test step exit code 0)
  • Root URL returns 302 (expected auth redirect) — app is responsive

Limitations

  • Could not log into production web app for visual browser verification — test user lucas-admin rejected by Keycloak ("Invalid username or password"). Test credentials may have been rotated.
  • iOS-native behavior (opening Apple Maps) cannot be verified from a desktop environment. Requires physical iOS device or simulator. The data-turbo="false" attribute is the standard turbo-ios convention for external link handling.

Discovered Issues

  • Test user credentials (lucas-admin / Test1234!) appear invalid against production Keycloak. Credentials may need to be re-provisioned or documented with current values.