End-to-end testing

User journeys

15 documented, device-verified journeys — from signup to share-out. Each is a first-class artifact linked to features and flows, and doubles as the app's end-to-end test suite (run on a physical device via Maestro). Identity is unified: one login for everyone, roles resolve per group after auth.

15 journeys 8 critical 7 medium device-verified E2E
Demo access

Test it yourself — no setup

Two ways in: tap Demo Explore in the app for a guest, offline-seeded session with no account, or sign in to the shared test instance and run a real group end to end.

👤 Kofi — Group Organizer

primary persona

Sign up & create a group in <5 min · invite members by link/code · run meetings (attendance → savings → loans → close) · approve loans · execute share-out.

👩 Amina — Treasurer

delegated per-group role

Collect savings and repayments in-meeting · reconcile the group corpus · review member savings detail.

🧑 Joseph — Chairperson

delegated per-group role

Chair loan votes · approve or reject applications on behalf of the group · confirm share-out.

🙋 Grace — Member

joins via invite code

Accept an invitation · view personal savings & loans · request a loan · track share-out projection.

🧑‍💼 Field officer — Supervisory

optional tier · v1.1

Oversee multiple groups · monitor repayment health · review sync & attendance.

🧭 Guest — Demo Explore

no account

Tap “Demo Explore” for an offline-seeded sample group · browse dashboards & flows read-only.

Instance admin (organizer / staff login)

Sign in as staff to organize groups, run meetings, and approve loans — or self-sign-up a brand-new organizer account.

Instance
mifos-bank-2
Tenant
mifos-bank-2
Username
mifos
Password
password

Demo group members — sign in as any of these

Group: Mwangaza Women's Group (seeded on mifos-bank-2). Sign in via end-user login with the phone number as username; same password for all demo members.

MemberRoleUsername (phone)PasswordWhat to try
Amina OtienoTreasurer+254700000001DemoExplore@2026Collect savings in a meeting; reconcile the group corpus
Joseph MwangiChairperson+254700000002DemoExplore@2026Chair a loan vote; approve or reject an application
Grace WanjiruSecretary · borrower+254700000003DemoExplore@2026Has an active loan (KES 5,000) — record a repayment
Peter KamauMember+254700000004DemoExplore@2026Request a loan; view personal savings
Mary AchiengMember+254700000005DemoExplore@2026Browse the personal dashboard & savings
No account? Tap Demo Explore in the app for a guest, offline-seeded session — or self-sign-up a new organizer and create your own group. The demo data lives on the shared mifos-bank-2 Mifos X instance; for a private setup, deploy Mifos X with self-service enabled and point the app at it.
Critical journeys · 8

The core paths, device-verified

Each journey has an entry screen, an exit screen, and an executable Maestro flow that asserts the state at every step.

Organizer end-to-end: signup to share-out
The full lifecycle in one path — the flagship journey.
login-signup → share-out-execute
critical
Explore MifosSave as a demo user
Guest, offline-seeded session — no account required.
login-signup → savings-dashboard
critical
Join a group with an invite code
Accept an invitation, auto-associate, land in the group.
join-with-code → loan-request
critical
Create a new savings group
Organizer self-serve — pick group type, configure, activate.
group-type-picker → group-dashboard
critical
Conduct a full group meeting
Attendance → savings → loans → close, then summary.
meeting-calendar → meeting-summary
critical
Loan application to approval
Apply, group-vote, chairperson approve, disburse.
loan-list → loan-detail
critical
Annual share-out cycle distribution
Preview projections, then execute the payout.
group-dashboard → share-out-execute
critical
Onboard a new group member
Organizer-driven member add, activation, profile.
member-list → member-profile
critical
Supporting journeys · 7

Servicing, self-service & oversight

Service a loan: repayment or mark defaulted
loan-list → loan-repayment-dialog
medium
Check and trigger offline sync
organizer-dashboard → sync-status
medium
Member loan request submission
personal-loans → loan-request
medium
Review group savings & a member's detail
savings-dashboard → member-savings-detail
medium
Browse groups and open a group
group-list → group-dashboard
medium
Field officer group oversight
field-officer-dashboard → group-dashboard
medium
Manage app settings and sign out
settings → settings-logout-dialog
medium
How these run. Every journey is generated from the idea-layer (idea-layer/journeys/*.yaml) and executed on a physical device with Maestro — asserting the network call and the rendered state at each step. A feature isn't "done" until its journey passes on-device.