The Roomy app requires App Store and Play Store screenshots for marketing submissions. Currently, no automation exists - screenshots are captured manually per device/language combination. The project has Maestro infrastructure (empty .maestro/ directories) and Firebase Emulators already configured.
Stakeholders: Developers generating store assets, marketing team receiving screenshots
Constraints:
Goals:
Non-Goals:
What: Create roomy-firebase/scripts/seed-emulator.js using firebase-admin SDK
Why:
firebase-admin provides full Auth + Firestore controlAlternatives considered:
firebase emulators:start --import: Harder to maintain, binary-like formatWhat: Organize flows as:
.maestro/
├── common/
│ └── login.yaml # Reusable login flow
├── screens/
│ ├── 01-home.yaml # Individual screen flows
│ ├── 02-cleaning-tasks.yaml
│ └── ...
└── screenshot-all.yaml # Orchestrator flow
Why:
Alternatives considered:
What: Create scripts/capture-screenshots.sh that iterates devices and languages
Why:
Alternatives considered:
What: Use xcrun simctl spawn (iOS) and adb shell setprop (Android) to change device locale before each run
Why:
Trade-off: Requires simulator restart between languages, adding ~30s per switch
What: Pass OUTPUT_DIR environment variable to Maestro flows for screenshot paths
Why:
${OUTPUT_DIR} syntax in takeScreenshot paths| Risk | Mitigation |
|------|------------|
| Simulator names change across Xcode versions | Document exact simulator names; use xcrun simctl list to verify |
| Maestro element selectors break with UI changes | Use semantic labels or test IDs; document selector strategy |
| Screenshots capture loading states | Add explicit waitForAnimationToEnd and assertVisible before captures |
| Status bar clock/battery inconsistent | Accept as-is; store guidelines allow this variance |
| Emulator seed data becomes stale | Seed script is source of truth; re-run when data model changes |
None - the research phase (Prime) resolved all significant unknowns.
Reacties