This document provides comprehensive testing procedures for the Navio Safari extension to ensure it works reliably across different scenarios, platforms, and edge cases.
Before starting tests, ensure:
- Extension is built and installed in Xcode
- Extension is enabled in Safari settings
- "All Websites" permission is granted
- Safari Developer menu is enabled (for Web Inspector access)
- You have access to both iOS and macOS devices/simulators
Objective: Verify basic redirection of a place search from Google Maps to Apple Maps
Steps:
- Open Safari with Navio enabled
- Navigate to google.com
- Search for "Empire State Building"
- Click on the map thumbnail or "View larger map" link in the search results
Expected Result:
- Apple Maps opens
- Shows Empire State Building location
- Pin is correctly placed on the building
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Verify directions functionality
Steps:
- Search for "Starbucks near me" on Google
- Find a result with a "Directions" or "Get directions" button
- Click the directions button
Expected Result:
- Apple Maps opens in directions mode
- Destination is set to the selected Starbucks
- Origin is "Current Location"
- Route is calculated
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Test with a specific street address
Steps:
- Search for "1600 Amphitheatre Parkway, Mountain View, CA"
- Click on any map-related link
Expected Result:
- Apple Maps opens
- Shows the Google headquarters location
- Address is correctly geocoded
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Ensure extension works on international Google domains
Steps: For each domain: google.co.uk, google.ca, google.de, google.com.au
- Navigate to the domain
- Search for a local landmark (e.g., "Big Ben" on google.co.uk)
- Click a map link
Expected Result:
- Extension works identically on all domains
- Apple Maps opens with correct location
Platforms to test: macOS (easier to test multiple domains)
Status: [ ] Pass [ ] Fail
Notes:
Objective: Test the fallback mechanism when landing directly on Google Maps
Steps:
- Copy this URL:
https://www.google.com/maps/place/Statue+of+Liberty/@40.6892,-74.0445,17z - Paste it into Safari's address bar
- Press Enter
Expected Result:
- Google Maps page starts loading
- Within ~500ms, automatic redirect to Apple Maps
- Apple Maps shows Statue of Liberty
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Test links that use latitude/longitude coordinates
Steps:
- Search for "@40.7128,-74.0060" (coordinates for New York City) on Google
- Click on map result
Expected Result:
- Apple Maps opens
- Shows location at coordinates 40.7128, -74.0060
- Pin is placed in New York City
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Ensure proper handling of complex place names with special characters
Steps:
- Search for "Grand Central Terminal New York"
- Click map link
Expected Result:
- Apple Maps opens
- Correctly finds "Grand Central Terminal"
- No encoding issues with spaces
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Verify extension doesn't interfere with regular Google search results
Steps:
- Search for "Apple" on Google
- Click on regular web results (NOT map links)
- Click on images, news, etc.
Expected Result:
- Regular links work normally
- Only map-specific links are redirected
- No interference with other Google functionality
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Ensure links are converted quickly without noticeable delay
Setup:
- Enable Debug mode in content.js (set
DEBUG = true) - Open Safari Web Inspector on a Google search page
Steps:
- Search for "restaurants near me"
- Check console for timing logs
- Note the time between page load and link processing completion
Expected Result:
- Link processing completes in < 100ms
- No visible delay before links are clickable
- No impact on page load time
Platform to test: macOS (easier to inspect)
Status: [ ] Pass [ ] Fail
Measured time: ________ ms
Notes:
Objective: Verify extension doesn't cause memory leaks
Steps:
- Open Safari Activity window (Safari > Activity)
- Perform 20+ searches and click map links
- Monitor memory usage of Safari Web Content processes
Expected Result:
- Memory usage remains stable
- No continuous growth over time
- Extension's content script releases resources properly
Platform to test: macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Ensure Navio works alongside other extensions
Steps:
- Enable 2-3 other Safari extensions (ad blockers, password managers, etc.)
- Repeat Test 1 (Basic Place Redirect)
Expected Result:
- Navio still functions correctly
- No conflicts or errors
- Other extensions continue to work
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Verify the onboarding experience is clear
Steps:
- Install the app on a fresh device/simulator
- Launch the Navio app
- Follow the displayed instructions
Expected Result:
- Instructions are clear and easy to follow
- User can successfully enable the extension
- App UI is visually appealing in both light and dark mode
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Check the toolbar popup appearance and message
Steps:
- Enable Navio
- On macOS: Click the Navio icon in Safari's toolbar
- On iOS: Access via Extensions menu
Expected Result:
- Popup shows "✓ Navio is active"
- Message is clear: "Google Maps links will open in Apple Maps"
- Works in both light and dark mode
- Clean, minimal design
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Document the permission flow
Steps:
- Enable extension for the first time
- Note what permissions Safari requests
- Click a Google Maps link on first use
Expected Result:
- Safari requests "All Websites" permission
- First time opening Apple Maps may show iOS/macOS permission prompt
- Subsequent uses don't show repeated prompts
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Handle unusual or malformed URLs gracefully
Steps:
- Create a link with unusual Google Maps URL (e.g., missing parameters)
- Click it
Expected Result:
- Extension handles gracefully without crashing
- Either converts what it can, or allows normal navigation
- No JavaScript errors in console
Platform to test: macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Ensure multiple rapid clicks don't cause issues
Steps:
- Search for "coffee shops"
- Rapidly click multiple map links in succession
Expected Result:
- Each click opens Apple Maps correctly
- No crashes or errors
- No duplicate tabs or windows
Platforms to test: iOS, macOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Test behavior without internet connection
Steps:
- Load a Google search page while online
- Disable internet connection
- Click a map link
Expected Result:
- Extension attempts to open Apple Maps
- Apple Maps handles offline appropriately (may show cached data or error)
- No crashes in extension
Platform to test: iOS
Status: [ ] Pass [ ] Fail
Notes:
Objective: Verify compatibility across Safari versions
Steps: Test on:
- Latest Safari on latest OS
- Safari on OS version N-1 (previous major version)
Expected Result:
- Extension works on both versions
- Manifest v3 features are supported (Safari 16+)
Platforms to test: iOS 16+, macOS 12+
Status: [ ] Pass [ ] Fail
Notes:
Objective: Verify native messaging prevents blank tabs on macOS
Steps:
- On macOS, click a Google Maps link
- Observe Safari tab behavior
Expected Result:
- Apple Maps opens
- Original tab remains on Google (doesn't navigate to blank page)
- No extra tabs are created
Platform to test: macOS only
Status: [ ] Pass [ ] Fail
Notes:
Objective: Verify smooth transition back to Safari on iOS
Steps:
- On iOS, click a map link
- Apple Maps opens
- Swipe up and return to Safari
Expected Result:
- Safari remains on the Google search page
- User can continue browsing normally
- No lost state or crashes
Platform to test: iOS only
Status: [ ] Pass [ ] Fail
Notes:
After any code changes, run through this quick checklist:
- Basic redirect works (Test 1)
- Directions work (Test 2)
- Fallback works (Test 5)
- No errors in console
- Performance is acceptable (Test 9)
- Works on both iOS and macOS
If you find a bug during testing, document it using this template:
**Bug Title**:
**Severity**: Critical / High / Medium / Low
**Platform**: iOS / macOS / Both
**Safari Version**:
**OS Version**:
**Steps to Reproduce**:
1.
2.
3.
**Expected Result**:
**Actual Result**:
**Screenshots/Logs**:
**Workaround** (if any):
For future enhancements, consider implementing:
- Unit tests for
googleToAppleMapsURL()function with various URL patterns - UI tests in Xcode for the container app
- Integration tests for native messaging
- Performance benchmarks
Date: _______________ Tester: _______________ Build Version: _______________
| Test # | Test Name | iOS | macOS | Notes |
|---|---|---|---|---|
| 1 | Basic Place Redirect | [ ] | [ ] | |
| 2 | Directions Link | [ ] | [ ] | |
| 3 | Address Search | [ ] | [ ] | |
| 4 | Multiple Domains | - | [ ] | |
| 5 | Fallback | [ ] | [ ] | |
| 6 | Coordinates | [ ] | [ ] | |
| 7 | Multi-word Place | [ ] | [ ] | |
| 8 | Non-Maps Links | [ ] | [ ] | |
| 9 | Conversion Speed | - | [ ] | |
| 10 | Memory Usage | - | [ ] | |
| 11 | Extension Compat | [ ] | [ ] | |
| 12 | First-Time Setup | [ ] | [ ] | |
| 13 | Popup Display | [ ] | [ ] | |
| 14 | Permissions | [ ] | [ ] | |
| 15 | Malformed URL | - | [ ] | |
| 16 | Rapid Clicking | [ ] | [ ] | |
| 17 | Offline | [ ] | - | |
| 18 | Safari Versions | [ ] | [ ] | |
| 19 | No Blank Tab | - | [ ] | |
| 20 | Return to Safari | [ ] | - |
Overall Status: Pass / Fail / Needs Work
Critical Issues Found: _______________
Recommendations: _______________