# TODO: testID additions needed for stable Maestro selectors These are components that need `testID="..."` added by the UI agent (rebreak-native-ui domain). Ahmed does NOT add these — list is for coordination. Priority: HIGH = flow currently uses coordinate fallback or is skipped. Priority: MEDIUM = flow works via text selector but will break on i18n locale change. Priority: LOW = nice to have, flow is stable enough without it. --- ## HIGH — Coordinate fallbacks (breaks on layout change) | Component | File | Recommended testID | Used by flow | |---|---|---|---| | Avatar Pressable (menu trigger) | `components/AppHeader.tsx` line ~109 | `header-avatar-btn` | all flows that open dropdown | | Nickname edit Pressable in ProfileHeader | `components/profile/ProfileHeader.tsx` | `profile-edit-nickname-btn` | `profile/view-and-edit.yaml` | | Photo/avatar area tap in ProfileHeader | `components/profile/ProfileHeader.tsx` | `profile-edit-avatar-btn` | `profile/view-and-edit.yaml` | AppHeader snippet (line ~109): ```tsx setMenuOpen(true)} ... > ``` --- ## HIGH — SOS screen send button (no text, no testID) | Component | File | Recommended testID | Used by flow | |---|---|---|---| | Send/submit Pressable in chat input area | `app/urge.tsx` | `sos-send-btn` | `urge/sos-flow.yaml` | The send icon Pressable has no text and no testID. Current flow cannot reliably tap it. --- ## HIGH — Demographics field row Pressables Each row in DemographicsAccordion that opens a WheelPickerModal is a Pressable with no testID. Currently matched via hardcoded German label text (stable, but fragile if labels change). | Field | File | Recommended testID | |---|---|---| | Geburtsjahr row | `components/profile/DemographicsAccordion.tsx` | `demographics-birth-year-row` | | Geschlecht row | `components/profile/DemographicsAccordion.tsx` | `demographics-gender-row` | | Familienstand row | `components/profile/DemographicsAccordion.tsx` | `demographics-marital-row` | | Berufsstatus row | `components/profile/DemographicsAccordion.tsx` | `demographics-employment-row` | | Bundesland row | `components/profile/DemographicsAccordion.tsx` | `demographics-bundesland-row` | | Stadt / Landkreis row | `components/profile/DemographicsAccordion.tsx` | `demographics-city-row` | --- ## MEDIUM — Auth screen inputs (currently matched via i18n placeholder text) | Component | File | Recommended testID | Risk | |---|---|---|---| | Email TextInput | `app/(auth)/signin.tsx` line ~139 | `auth-email-input` | breaks if de.json placeholder changes | | Password TextInput | `app/(auth)/signin.tsx` line ~151 | `auth-password-input` | same | | Submit Pressable | `app/(auth)/signin.tsx` line ~173 | `auth-signin-btn` | breaks if t('auth.signin') changes | --- ## MEDIUM — ProfileEdit screen nickname input | Component | File | Recommended testID | |---|---|---| | Nickname TextInput | `app/profile/edit.tsx` line ~295 | `profile-nickname-input` | | Save Pressable | `app/profile/edit.tsx` line ~154 | `profile-save-btn` | --- ## MEDIUM — ComposeCard share button | Component | File | Recommended testID | Risk | |---|---|---|---| | Share/Teilen Pressable | `components/ComposeCard.tsx` line ~165 | `compose-share-btn` | breaks if t('community.share') changes | --- ## LOW — Settings screen rows Theme selection uses @react-native-menu/menu (native iOS UIMenu). Maestro may not interact with native UIMenu popovers — coordinate taps on the anchor Pressable are the only option without testID. If the native menu approach proves unreliable, a fallback custom picker with testID would be needed. | Component | File | Recommended testID | |---|---|---| | Theme menu anchor Pressable | `app/settings.tsx` | `settings-theme-picker` | | Language menu anchor Pressable | `app/settings.tsx` | `settings-language-picker` | --- ## Notes - Adding testID to a Pressable/TextInput does NOT require any logic change — it is a metadata prop only. Safe for UI agent to add without Ahmed review. - RiveAvatar in urge.tsx: no testID needed — Maestro cannot assert animation states. SOS screen is verified via the chat TextInput placeholder instead. - NotificationsDropdown: not tested in current flow suite — no testID needed yet.