update documentation

This commit is contained in:
2026-05-18 15:01:53 +02:00
parent 834025e560
commit 7018443b18
13 changed files with 756 additions and 725 deletions
+109 -180
View File
@@ -1,216 +1,145 @@
# TimeToLeave - Manual Integration Testing Checklist
# TimeToLeave - Manual Testing Checklist
## Overview
This checklist guides you through manual testing of the TimeToLeave application to ensure all features work correctly in the browser.
Use this checklist for browser, mobile, and integration testing before release.
## Prerequisites
- [ ] Application is running locally or deployed
- [ ] All required environment variables are set
- [ ] Network connection is available for external API calls
---
- [ ] `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.
## 1. Settings Infrastructure Testing
## Web Dashboard
### Arrival Buffer Settings
- [ ] Navigate to Settings panel
- [ ] Set arrival buffer to 10 minutes
- [ ] Verify buffer value is displayed correctly
- [ ] Test different buffer values (0, 5, 15, 30 minutes)
- [ ] Verify buffer value persists after page refresh
- [ ] 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.
### Walking Option Toggle
- [ ] Enable "Show walking option" toggle
- [ ] Verify toggle state is saved
- [ ] Disable "Show walking option" toggle
- [ ] Verify toggle state persists after page refresh
## Web Calendar Import
### Bike Option Toggle
- [ ] Enable "Show bike option" toggle
- [ ] Verify toggle state is saved
- [ ] Disable "Show bike option" toggle
- [ ] Verify toggle state persists after page refresh
- [ ] 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
## 2. Walk Routing Testing
- [ ] 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.
### Walk Route API
- [ ] Open Developer Tools (F12) → Network tab
- [ ] Trigger a walk route calculation (e.g., by loading an event with walk mode)
- [ ] Verify `/api/walk-route` request appears in network log
- [ ] Check request contains correct query parameters (fromLat, fromLng, toLat, toLng)
- [ ] Verify response contains distance, duration, and steps array
- [ ] Test with different coordinate pairs
## Settings and Reminders
### Walk Route Display
- [ ] Enable walking option in settings
- [ ] Load an event that should show walk route
- [ ] Verify walk duration appears under train section
- [ ] Verify walk distance is displayed
- [ ] Verify step-by-step instructions are shown
- [ ] Test with events at different locations
- [ ] 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
## 3. Departure Time Calculation Testing
- [ ] 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.
### Countdown Badge
- [ ] Set arrival buffer to 10 minutes
- [ ] Verify countdown badge shows earlier departure time than event time
- [ ] Test with different event times (now, in 1 hour, in 3 hours)
- [ ] Verify countdown updates in real-time
## Bike and Walking Routes
### Departure Time Override
- [ ] Switch between transport modes (train, bike, walk)
- [ ] Verify countdown updates to reflect selected mode
- [ ] Test mode switching multiple times
- [ ] Verify departure time calculation is consistent
- [ ] 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
## 4. Mode Selector Testing
- [ ] 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.
### Transport Mode Selection
- [ ] Verify "Train" mode is selected by default
- [ ] Click "Bike" mode button
- [ ] Verify "Bike" mode is now active
- [ ] Click "Walk" mode button
- [ ] Verify "Walk" mode is now active
- [ ] Test switching between all modes multiple times
## API Guards
### Conditional Rendering
- [ ] With walking option disabled: verify walk section is hidden
- [ ] With walking option enabled: verify walk section appears
- [ ] With bike option disabled: verify bike section is hidden
- [ ] With bike option enabled: verify bike section appears
- [ ] Test all combinations of toggle states
- [ ] 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
## 5. JourneyList Filtering Testing
- [ ] 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.
### Arrival Buffer Filtering
- [ ] Set arrival buffer to 5 minutes
- [ ] Load multiple journeys with different arrival times
- [ ] Verify journeys arriving too late are filtered out
- [ ] Increase arrival buffer to 15 minutes
- [ ] Verify previously filtered journeys now appear
- [ ] Test filtering with real-world journey data
## 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.
## 6. Cross-Feature Integration Testing
## Mobile Settings and Notifications
### Complete Workflow
- [ ] Open settings and set arrival buffer to 10 minutes
- [ ] Enable walking option
- [ ] Enable bike option
- [ ] Load an event with multiple journey options
- [ ] Verify countdown badge shows earlier departure time
- [ ] Switch to bike mode and verify countdown updates
- [ ] Verify walk duration appears under train section
- [ ] Disable bike option and verify bike section disappears
- [ ] Re-enable bike option and verify bike section reappears
- [ ] Test complete workflow with different events
- [ ] 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
## 7. Edge Cases Testing
- [ ] 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.
### Empty States
- [ ] Test with no walk route available (remote location)
- [ ] Verify appropriate error message is displayed
- [ ] Test with missing coordinates
- [ ] Verify graceful handling of missing data
## Accessibility and Layout
### Network Errors
- [ ] Disable network connection (offline mode in DevTools)
- [ ] Attempt to load walk route
- [ ] Verify error state is displayed
- [ ] Re-enable network and verify retry works
### Invalid Data
- [ ] Test with invalid coordinate values
- [ ] Test with zero or negative buffer times
- [ ] Verify application handles invalid data gracefully
---
## 8. Accessibility Testing
### Keyboard Navigation
- [ ] Tab through all settings controls
- [ ] Verify all buttons and toggles are keyboard accessible
- [ ] Test mode selector with keyboard only
### Screen Reader Compatibility
- [ ] Use Chrome's accessibility inspector or a screen reader
- [ ] Verify all settings have proper labels
- [ ] Verify all interactive elements are announced correctly
### High Contrast Mode
- [ ] Enable high contrast mode in OS settings
- [ ] Verify all UI elements remain visible and readable
---
## 9. Performance Testing
### Loading Times
- [ ] Measure time to load walk route for nearby location (< 5km)
- [ ] Measure time to load walk route for farther location (10-20km)
- [ ] Verify loading spinner appears during API calls
- [ ] Verify loading spinner disappears when complete
### Memory Usage
- [ ] Open Developer Tools → Memory tab
- [ ] Perform multiple walk route calculations
- [ ] Verify no memory leaks (memory usage should stabilize)
---
## 10. Responsive Design Testing
### Mobile
- [ ] Test on mobile device (iPhone/Android)
- [ ] Verify settings panel is usable on small screens
### Tablet
- [ ] Test on tablet device
- [ ] Verify all controls are properly sized
### Desktop
- [ ] Test on various desktop screen sizes
- [ ] Verify layout does not break
---
## Reporting Issues
When you encounter an issue during testing:
1. Note the exact steps to reproduce
2. Record browser/device information
3. Capture any error messages or console logs
4. Take screenshots if UI is affected
5. Test with latest code after reporting
---
- [ ] 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
- [ ] All required tests passed successfully
- [ ] No critical bugs found
- [ ] Application ready for production deployment
- [ ] Web smoke test passed.
- [ ] Mobile smoke test passed.
- [ ] Calendar import tested.
- [ ] Live transit integration tested.
- [ ] Notifications tested.
- [ ] No critical bugs remain.
**Tested by:** ________________________
**Date:** ________________________
**Browser/Device:** ________________________
**Build Version:** ________________________
Tested by:
---
Date:
## Additional Notes
_Add any observations, workarounds, or special test conditions here._
Build/version: