Purpose: Verify trust and usability for metadata edit flow, map pin UX, and summary accuracy.
- Desktop Chrome (latest)
- Android Chrome (latest, portrait first)
- iOS Safari (latest, portrait first)
- Optional: Android landscape baseline
- Optional: iOS landscape baseline
- Run
npm run check - Run
npm run build:client - Confirm no runtime console error on initial load
- Prepare 10 images:
- 5 with GPS metadata
- 5 without GPS metadata
- Drop multiple files into uploader
- Verify table appears immediately
- Verify each row shows top fields: GPS, Date/Time, Device
- Verify row state transitions to Ready
Expected:
- No blocked UI
- No unexpected status freeze in Analyzing
- Select 2+ rows
- Open map modal
- Click any point on map
- Verify map centers smoothly to picked point
- Verify pin is visible on clicked point
- Verify Apply to selected is enabled only after a point is picked
- Apply and verify selected rows lat/lng are updated
Expected:
- Pin is persistent while modal stays open
- Wrong apply without point is impossible
- Use Bulk latitude/longitude apply
- Use Clear location
- Use Safe mode (risk cleanup)
- Use time offset and absolute time apply
Expected:
- Only selected rows are modified
- Non-selected rows remain unchanged
- Run in Remove mode
- Run in Add/Edit mode
- Download result file(s)
- Re-open output in EXIF viewer
Expected:
- Remove mode removes metadata as intended
- Edit mode writes expected GPS/time/device for JPEG path
Use same scenarios from EDIT_SUMMARY_CHECKLIST.md and verify result badges:
- Pure Remove:
locationRemovedincrements for original GPS rows onlylocationAddedandlocationUpdatedremain 0
- Bulk Location Add/Update:
- Added count matches originally empty GPS rows
- Updated count matches originally GPS-existing rows
- Device-only update:
deviceUpdatedmatches edited rows
- Combined update:
- Location/date/device counters match row-level edits
- Floating quick action bar does not cover critical buttons on mobile
- Table remains usable on narrow width (horizontal scroll is acceptable)
- Result view badges are readable and not clipped
- No accidental double-submit on action buttons
- No blocker in A-D sections
- Summary badges match expected values in all scenarios
- No critical visual break on Android/iOS portrait
- No data loss outside selected rows
- P0: Wrong metadata applied to non-selected files, corrupted outputs, crash
- P1: Summary mismatch, map apply wrong coordinate, blocked flow
- P2: Visual overlap, minor text mismatch, non-blocking layout issue