@@ -433,25 +433,66 @@ jobs:
433433 adb -s "$emulator_serial" shell pm grant "$BUNDLE_ID" android.permission.ACCESS_FINE_LOCATION || true
434434 adb -s "$emulator_serial" shell pm grant "$BUNDLE_ID" android.permission.ACCESS_COARSE_LOCATION || true
435435
436+ echo "Disabling automatic time/timezone updates..."
436437 adb -s "$emulator_serial" shell settings put global auto_time 0 || true
437438 adb -s "$emulator_serial" shell settings put global auto_time_zone 0 || true
439+
440+ # Verify settings
441+ auto_time_status="$(adb -s "$emulator_serial" shell settings get global auto_time 2>/dev/null | tr -d '\r')"
442+ echo "Auto time status: $auto_time_status"
443+
444+ # Wake up the device
445+ adb -s "$emulator_serial" shell input keyevent KEYCODE_WAKEUP || true
446+ sleep 1
438447
439448 set_emulator_time_utc() {
440449 local iso_utc="$1"
441- local compact_utc
442- compact_utc="$(date -u -j -f "%Y-%m-%dT%H:%M:%SZ" "$iso_utc" "+%Y%m%d.%H%M%S" 2>/dev/null || true)"
443- if [ -z "$compact_utc" ]; then
444- compact_utc="$(printf '%s' "$iso_utc" | tr -d ':-' | sed -E 's/T/./; s/Z$//')"
450+
451+ echo "Setting emulator time to: $iso_utc"
452+
453+ # Convert to Unix timestamp (seconds since epoch)
454+ local timestamp_sec
455+ timestamp_sec="$(date -u -j -f "%Y-%m-%dT%H:%M:%SZ" "$iso_utc" "+%s" 2>/dev/null)"
456+
457+ if [ -n "$timestamp_sec" ]; then
458+ # Convert to milliseconds for emulator console
459+ local timestamp_ms="${timestamp_sec}000"
460+ echo "Using emulator console to set time (timestamp ms: $timestamp_ms)"
461+
462+ # Use emulator console command - more reliable than shell date
463+ if adb -s "$emulator_serial" emu avd setclock "$timestamp_ms" </dev/null 2>&1; then
464+ echo "Time set via emulator console"
465+ else
466+ echo "::warning::Failed to set time via emulator console"
467+ fi
468+ else
469+ echo "::warning::Failed to parse timestamp from $iso_utc"
445470 fi
446-
447- adb -s "$emulator_serial" shell "date -u $compact_utc" </dev/null >/dev/null 2>&1 || true
448- adb -s "$emulator_serial" emu avd host-time-scale 1 </dev/null >/dev/null 2>&1 || true
471+
472+ sleep 2
473+
474+ # Verify time was set
475+ current_time="$(adb -s "$emulator_serial" shell "date -u" </dev/null 2>/dev/null | tr -d '\r')"
476+ echo "Emulator time is now: $current_time"
449477 }
450478
451479 set_emulator_geo_gibraltar() {
452480 local lat="36.1408"
453481 local lon="-5.3536"
454- adb -s "$emulator_serial" emu geo fix "$lon" "$lat" </dev/null >/dev/null 2>&1 || true
482+ echo "Setting emulator GPS to Gibraltar: lat=$lat, lon=$lon"
483+
484+ # Use emulator console command
485+ if adb -s "$emulator_serial" emu geo fix "$lon" "$lat" 0 </dev/null 2>&1; then
486+ echo "GPS location set via emulator console"
487+ else
488+ echo "::warning::Failed to set GPS location via emulator console"
489+ fi
490+
491+ sleep 2
492+
493+ # Verify location provider is enabled
494+ location_mode="$(adb -s "$emulator_serial" shell settings get secure location_mode </dev/null 2>/dev/null | tr -d '\r')"
495+ echo "Location mode: $location_mode (3=high accuracy)"
455496 }
456497
457498 wait_for_app_foreground() {
@@ -535,12 +576,18 @@ jobs:
535576
536577 case "$url" in
537578 *gibraltar-between-c1-c3*)
579+ echo "Detected gibraltar-between-c1-c3 scenario"
538580 set_emulator_time_utc "2027-08-02T08:23:09Z"
539581 set_emulator_geo_gibraltar
582+ echo "Waiting 2 seconds for time/GPS changes to propagate..."
583+ sleep 2
540584 ;;
541585 *gibraltar-max*)
586+ echo "Detected gibraltar-max scenario"
542587 set_emulator_time_utc "2027-08-02T08:47:59Z"
543588 set_emulator_geo_gibraltar
589+ echo "Waiting 2 seconds for time/GPS changes to propagate..."
590+ sleep 2
544591 ;;
545592 esac
546593
0 commit comments