146 lines
5.5 KiB
Markdown
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:
|