# urge/start-session.yaml
# User-Journey: Login -> Home -> Header-Dropdown oeffnen -> SOS tippen -> Urge/Lyra-Screen laden.
# Prueft: SOS-Einstiegspunkt im HeaderDropdownMenu ist sichtbar und navigiert korrekt.
#
# Pre-requisite: App installiert, E2E_TEST_USER eingeloggt (oder clearState + frischer Login).
# Env-Vars: E2E_TEST_USER, E2E_TEST_PASSWORD

appId: org.rebreak.app
---
- launchApp:
    clearState: true

- waitForAnimationToEnd:
    timeout: 5000

# --- Auth ---
- assertVisible:
    text: "E-Mail"
- tapOn:
    text: "E-Mail"
- inputText: ${E2E_TEST_USER}@rebreak.internal
- tapOn:
    text: "Passwort"
- inputText: ${E2E_TEST_PASSWORD}
- tapOn:
    text: "Anmelden"
- waitForAnimationToEnd:
    timeout: 8000

# --- Home-Screen erreicht ---
- assertVisible:
    text: "ReBreak"

# Avatar-Button (Header rechts) oeffnet das HeaderDropdownMenu (Modal).
# Der Avatar hat keinen testID -> tippen auf den Initials-Text oder Avatar-Bereich.
# Maestro kann auf accessibilityLabel matchen, falls gesetzt. Aktuell nicht gesetzt.
# Robustester Weg: tapOn text des SOS-Labels direkt wenn sichtbar, sonst Avatar-Tap first.
# Avatar ist ein Pressable ohne Text -> swipeRight oder koordinaten-basierter Tap waere
# fragil. Wir tippen stattdessen auf den bekannten Notifikationen-Button (links vom Avatar)
# um sicherzugehen dass wir im richtigen Header sind, dann auf den SOS-Button.
# Seit HeaderDropdownMenu kein accessibilityLabel hat: tapOn text "SOS" direkt nach Modal-Open.

# Schritt 1: Avatar-Pressable. Kein Label -> tippen auf "ReBreak" Text-Bereich funktioniert
# nicht (Text != Button). Wir nutzen einen direkten tapOn auf "SOS" welcher nur im
# geoffneten Dropdown erscheint. Dafuer muss das Dropdown erst offen sein.
# Da kein testID/label: Nutze point-tap am oberen-rechten Rand wo Avatar sitzt.
# HINWEIS fuer den User: Avatar-Button braucht accessibilityLabel="open-menu" damit
# dieser Tap stabiler wird. TODO: testID="header-avatar-btn" in AppHeader ergaenzen.
- tapOn:
    point: "93%, 6%"

- waitForAnimationToEnd:
    timeout: 2000

# Dropdown ist jetzt offen. SOS-Label ist "SOS" (appHeader.sosLabel, de.json Z.94).
- assertVisible:
    text: "SOS"
- tapOn:
    text: "SOS"

- waitForAnimationToEnd:
    timeout: 6000

# Urge/SOS-Screen: Die RiveAvatar + initial Lyra-Nachricht werden geladen.
# Wir pruefen auf den Text-Input am unteren Rand (Urge-Screen hat einen Chat-Input).
# Kein testID -> assertVisible auf etwas das nur im SOS-Screen existiert.
# Der SOS-Screen hat keine eindeutige Headline. Wir pruefen den Input (placeholder).
# urge.tsx: placeholder aus t('urge.inputPlaceholder') oder aehnlich.
# Sicherer Fallback: waitForAnimationToEnd und dann kein Crash = Screen geladen.
- waitForAnimationToEnd:
    timeout: 4000

# Urge-Screen: Chat-Input hat Placeholder t('coach.placeholder') = "Was beschaeftigt dich?"
# (de.json Z.145). Dieser Text existiert nur auf dem SOS/Urge-Screen.
- assertVisible:
    text: "Was beschäftigt dich?"
