Athena — roomy-mobile/archive/changes/2025-12-24-add-maestro-screenshot-automation/specs/screenshot-automation/spec.md

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

Nog geen reacties