# 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?"