added automated App Store screenshots via iOS simulators and fastlane deliver

tool/screenshots_ios.sh runs the existing demo-login integration test on
iPhone 6.5" (iPhone 14 Plus) and iPad 13" simulators, stores the canonical PNGs
under materials/screenshots and mirrors alpha-free JPEGs to
ios/fastlane/screenshots for `fastlane upload_screenshots`.

Fixed the demo router answering timetable/custom-events with a week, which
crashed the inline iOS widget refresh after a demo login. The screenshot test
now skips the one-time Talk notification dialog and waits longer for the app
shell on cold simulators.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 16:58:29 +02:00
co-authored by Claude Opus 5.5
parent ada4d6a77c
commit c5592f117b
38 changed files with 241 additions and 2 deletions
+12
View File
@@ -8,6 +8,7 @@ import 'package:marianum_mobile/api/marianumconnect/queries/timetable_get_school
import 'package:marianum_mobile/api/marianumconnect/queries/timetable_get_subjects/timetable_get_subjects_response.dart';
import 'package:marianum_mobile/api/marianumconnect/queries/timetable_get_timegrid/timetable_get_timegrid_response.dart';
import 'package:marianum_mobile/api/marianumconnect/queries/timetable_get_week/timetable_get_week_response.dart';
import 'package:marianum_mobile/api/mhsl/custom_timetable_event/get/get_custom_timetable_event_response.dart';
/// The demo interceptor answers MarianumConnect calls with these bodies; each
/// must round-trip through the same parser the real query uses. A shape
@@ -57,6 +58,17 @@ void main() {
);
});
// Eigener Case nötig: sonst greift der timetable/<type>/<id>-Fallback und
// liefert eine Woche statt `{events: [...]}` (iOS-Widget-Refresh crashte).
test('timetable/custom-events', () {
expect(
() => GetCustomTimetableEventResponse.fromJson(
asMap('timetable/custom-events'),
),
returnsNormally,
);
});
test('holidays → non-empty list of McHoliday', () {
final holidays = asList('holidays').map(McHoliday.fromJson).toList();
expect(holidays, isNotEmpty);