ADDED Requirements
Requirement: Firebase Emulator Seed Data
The system SHALL provide a seed script that populates Firebase Emulators with deterministic demo data for screenshot capture.
Scenario: Seed script creates demo users
- WHEN the seed script executes
- THEN 4 user accounts are created (Emma, James, Sofia, Alex) with email/password authentication
- AND each user has a display name and profile data
Scenario: Seed script creates demo household
- WHEN the seed script executes
- THEN a household named "The Downtown Apartment" is created
- AND all 4 demo users are members of the household
Scenario: Seed script creates demo content
- WHEN the seed script executes
- THEN cleaning tasks exist with varied states (pending, completed, overdue)
- AND shopping lists exist with items in various states
- AND payment records exist showing expense splits
- AND inbox notifications exist
Scenario: Seed data is deterministic
- WHEN the seed script executes multiple times
- THEN the resulting data is identical each run
Requirement: Maestro Screenshot Flows
The system SHALL provide Maestro flow files that navigate to every app screen and capture screenshots.
Scenario: Login flow authenticates with seeded account
- WHEN the login flow executes
- THEN it authenticates using seeded demo account credentials
- AND navigates to the home screen
Scenario: Screen flows capture all views
- WHEN the orchestrator flow executes
- THEN it navigates to all 22 app screens
- AND captures a screenshot at each screen
Scenario: Screenshots use environment variable for output path
- WHEN a screenshot is captured
- THEN the output path uses the
${OUTPUT_DIR} environment variable
- AND filenames are numbered and descriptive (e.g.,
01-home.png)
Scenario: Flows wait for content before capture
- WHEN a screen is ready for screenshot
- THEN animations have completed
- AND data has loaded
- AND keyboard is dismissed (if applicable)
Requirement: Device Matrix Orchestration
The system SHALL provide shell script orchestration to run Maestro flows across all required device sizes and languages.
Scenario: iOS device matrix coverage
- WHEN the iOS screenshot script executes
- THEN screenshots are captured for iPhone 6.9" (1320×2868)
- AND screenshots are captured for iPhone 6.7" (1290×2796)
- AND screenshots are captured for iPhone 6.5" (1284×2778)
- AND screenshots are captured for iPhone 5.5" (1242×2208)
- AND screenshots are captured for iPad 13" (2064×2752)
Scenario: Android device matrix coverage
- WHEN the Android screenshot script executes
- THEN screenshots are captured for phone (min 1080×1920)
- AND screenshots are captured for tablet (min 1080px short edge)
Scenario: Language matrix coverage
- WHEN the screenshot script executes
- THEN screenshots are captured in English (en)
- AND screenshots are captured in Dutch (nl)
Scenario: Locale switching between runs
- WHEN switching to a different language
- THEN the simulator/emulator locale is changed before launching the app
- AND the app displays in the target language
Requirement: Screenshot Output Organization
The system SHALL organize screenshots in a directory structure suitable for store submission.
Scenario: Output directory structure
- WHEN screenshots are captured
- THEN they are organized as
screenshots/{platform}/{device}/{language}/{filename}.png
Scenario: iOS output organization
- WHEN iOS screenshots are captured
- THEN output is at
screenshots/ios/{device-size}/{language}/
- AND device sizes are
iphone-6.9, iphone-6.7, iphone-6.5, iphone-5.5, ipad-13
Scenario: Android output organization
- WHEN Android screenshots are captured
- THEN output is at
screenshots/android/{device-type}/{language}/
- AND device types are
phone, tablet
Requirement: Single-Command Execution
The system SHALL provide a single command to generate all screenshots.
Scenario: Make screenshots command
- WHEN
make screenshots is executed
- THEN Firebase Emulators start
- AND emulators are seeded with demo data
- AND screenshots are captured for all device/language combinations
- AND emulators are shut down on completion
Scenario: Platform-specific commands
WHEN make screenshots-ios is executed
THEN only iOS screenshots are captured
WHEN make screenshots-android is executed
THEN only Android screenshots are captured
Reacties