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>
45 lines
1.5 KiB
YAML
45 lines
1.5 KiB
YAML
# auth/email-signin.yaml
|
|
# Tests: App starts → sign-in screen loads → email+password login succeeds → Home-Feed visible.
|
|
# Pre-requisite: App installed, E2E_TEST_USER account exists on staging backend.
|
|
# Env-Vars: E2E_TEST_USER (username without @rebreak.internal), E2E_TEST_PASSWORD
|
|
# Expected outcome: "ReBreak" headline visible in AppHeader after login.
|
|
# Note: No testIDs on signin inputs — text selectors match i18n keys from de.json.
|
|
# Run with --env=E2E_LOCALE=de if CI device locale may differ.
|
|
|
|
appId: org.rebreak.app
|
|
---
|
|
- launchApp:
|
|
clearState: true
|
|
|
|
# Splash / font-load can take a moment
|
|
- waitForAnimationToEnd:
|
|
timeout: 5000
|
|
|
|
# Signin screen must appear immediately — no auth state after clearState.
|
|
# TextInput placeholder = t('auth.emailPlaceholder') = "E-Mail" (de.json)
|
|
- assertVisible:
|
|
text: "E-Mail"
|
|
|
|
- tapOn:
|
|
text: "E-Mail"
|
|
- inputText: ${E2E_TEST_USER}@rebreak.internal
|
|
|
|
# Password input placeholder = t('auth.passwordPlaceholder') = "Passwort" (de.json)
|
|
- tapOn:
|
|
text: "Passwort"
|
|
- inputText: ${E2E_TEST_PASSWORD}
|
|
|
|
# Submit button text = t('auth.signin') = "Anmelden" (de.json)
|
|
# Button is disabled until both fields have content — typing above enables it.
|
|
- tapOn:
|
|
text: "Anmelden"
|
|
|
|
# Supabase auth + /api/auth/me call — allow network round-trip
|
|
- waitForAnimationToEnd:
|
|
timeout: 10000
|
|
|
|
# AppHeader shows t('appHeader.appName') = "ReBreak" (hardcoded fallback, de.json).
|
|
# This text only appears in the authenticated Home layout.
|
|
- assertVisible:
|
|
text: "ReBreak"
|