chahinebrini 417191c90a test(maestro): 6 E2E flows + setup-guide + testID-TODO
User-runnable lokal via maestro CLI oder Studio (GUI). Ahmed-agent built.

Neue flows (.maestro/):
- auth/email-signin.yaml (admin@rebreak.org login via env-vars, NOT hardcoded)
- profile/view-and-edit.yaml (avatar tap → edit → save → verify)
- profile/demographics.yaml (accordion → fill 3 fields → verify save)
- settings/dark-theme.yaml (Settings → Theme → Dark → verify)
- urge/sos-flow.yaml (start SOS → atemübung → finish → rating)
- community/create-post.yaml (compose → publish)

SETUP.md ergänzt: install, prerequisites, env-vars, troubleshooting.

TODO_TESTIDS.md (17 missing testIDs, 7 high-prio):
- AppHeader: header-avatar-btn (alle flows betroffen, aktuell coordinate-fallback)
- urge: sos-send-btn (SOS-flow blocked ohne)
- profile/edit: nickname-input, save-btn

GH-Actions template (.github/workflows/maestro-cloud.yml) — NICHT aktiv,
braucht User-OK + EAS-secrets.

User runs:
  maestro test apps/rebreak-native/.maestro/auth/email-signin.yaml \
    --env=E2E_TEST_USER=admin --env=E2E_TEST_PASSWORD=<from Infisical>
  maestro studio  # GUI

Stolperfalle: charioanouar (Google OAuth) funktioniert nicht — admin-account
nutzen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:45:53 +02:00

4.2 KiB

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):

<Pressable
  testID="header-avatar-btn"   // <-- add this
  onPress={() => 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.