Files
time_to_leave/MANUAL_TESTING_CHECKLIST.md
T
2026-05-18 15:01:53 +02:00

146 lines
5.5 KiB
Markdown

# TimeToLeave - Manual Testing Checklist
Use this checklist for browser, mobile, and integration testing before release.
## Prerequisites
- [ ] `npm install` has been run.
- [ ] Required environment variables are configured.
- [ ] Web app is running locally or deployed.
- [ ] Mobile app has a reachable `EXPO_PUBLIC_API_BASE_URL` when tested on a device.
- [ ] Network access is available for HAFAS, Nominatim, OSRM, Wiener Linien, and calendar providers.
## Web Dashboard
- [ ] Open `/`.
- [ ] Verify the departure desk loads without console errors.
- [ ] Add or import at least two future events.
- [ ] Verify the dashboard shows the next upcoming event.
- [ ] Verify edit and remove actions work from the event card.
- [ ] Verify event data persists after browser refresh.
## Web Calendar Import
- [ ] Open `/calendar`.
- [ ] Import a valid allowed ICS URL.
- [ ] Upload a local `.ics` file.
- [ ] Verify imported events with locations merge into the local event store.
- [ ] Verify duplicate imports do not create unusable duplicate records.
- [ ] Use batch destination editing and confirm edited destinations are retained.
## Google Calendar Web Sync
- [ ] Confirm `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `GOOGLE_REDIRECT_URI`, and `DEPLOYMENT_URL` are configured.
- [ ] Open the Google tab on `/calendar`.
- [ ] Connect Google Calendar through OAuth.
- [ ] Verify sync returns upcoming events with locations.
- [ ] Disconnect Google Calendar.
- [ ] Verify status returns to disconnected.
## Settings and Reminders
- [ ] Enable browser notifications when prompted.
- [ ] Change reminder buffer and arrival buffer.
- [ ] Toggle walking option off and on.
- [ ] Toggle bike option off and on.
- [ ] Refresh the page and verify settings persist.
- [ ] Verify disabling bike hides or disables bike mode.
- [ ] Verify disabling walking removes the final-walk adjustment from train mode.
## Train Mode
- [ ] Use an event with a real destination and origin station.
- [ ] Verify destination geocoding completes.
- [ ] Verify destination station lookup completes.
- [ ] Verify `/api/hafas` is called with `TripSearch`.
- [ ] Verify journey rows show departure, arrival, platform, train labels, delay, changes, and cancellations when present.
- [ ] Verify leave-by time is based on a journey that arrives before the event minus arrival buffer and final walk.
- [ ] Increase arrival buffer and verify leave-by can move earlier.
## Bike and Walking Routes
- [ ] Switch to bike mode.
- [ ] Verify `/api/bike-route` is called with four coordinate parameters.
- [ ] Verify bike duration, distance, and steps are displayed.
- [ ] Switch back to train mode with walking enabled.
- [ ] Verify `/api/walk-route` is called for station-to-destination walking.
- [ ] Verify walking duration and distance appear in the train section.
- [ ] Test route error handling with invalid or very distant coordinates.
## Wiener Linien
- [ ] Use a destination near Vienna public transport.
- [ ] Verify `/api/wienerlinien/stops` returns nearby stops.
- [ ] Verify `/api/wienerlinien/monitor` returns live departures for selected stops.
- [ ] Verify loading, empty, and error states are readable.
## API Guards
- [ ] Verify remote calendar URLs from unsupported hosts are rejected.
- [ ] Verify private or localhost calendar URLs are rejected.
- [ ] Verify overly large HAFAS POST bodies are rejected.
- [ ] Verify invalid coordinates return client errors.
- [ ] Verify CORS allows only configured origins.
- [ ] Verify rate limiting returns `429` after the configured threshold.
## Mobile Event Flow
- [ ] Start the Expo app.
- [ ] Add a manual event.
- [ ] Edit the event.
- [ ] Delete the event.
- [ ] Restart the app and verify stored events persist.
- [ ] Open event detail and verify train, bike, walking, and nearby-stop sections load when data is available.
## Mobile Calendar Import
- [ ] Import an ICS URL.
- [ ] Grant calendar permission.
- [ ] Verify native calendars are listed.
- [ ] Select and deselect individual calendars.
- [ ] Use select all and deselect all.
- [ ] Sync native calendars for the next 30 days.
- [ ] Verify events without locations are excluded.
- [ ] Verify CalDAV/DAVx, Apple, Google, Exchange, subscribed, local, and other source labels render correctly when available on the device.
## Mobile Settings and Notifications
- [ ] Search for an origin station.
- [ ] Use current location to find nearest origin station.
- [ ] Change reminder buffer and arrival buffer.
- [ ] Toggle walking and bike options.
- [ ] Toggle notifications.
- [ ] Verify notification settings persist after app restart.
- [ ] Verify scheduled notifications are recreated when settings change.
- [ ] Toggle dark/light theme and verify it persists.
## Offline and Failure States
- [ ] Disable network and open web event detail data.
- [ ] Verify geocoding, HAFAS, route, and Wiener Linien errors are visible and non-blocking.
- [ ] Re-enable network and verify retry/refresh paths work.
- [ ] Test mobile with the backend URL unavailable and verify errors are understandable.
## Accessibility and Layout
- [ ] Navigate web controls with keyboard only.
- [ ] Verify modal focus and close behavior.
- [ ] Verify buttons and interactive controls have accessible labels or readable text.
- [ ] Test narrow mobile browser width, tablet width, and desktop width.
- [ ] Verify mobile screens do not clip primary controls.
## Sign-Off
- [ ] Web smoke test passed.
- [ ] Mobile smoke test passed.
- [ ] Calendar import tested.
- [ ] Live transit integration tested.
- [ ] Notifications tested.
- [ ] No critical bugs remain.
Tested by:
Date:
Build/version: