Athena — roomy-mobile/archive/changes/2026-01-05-add-per-screen-maestro-flows/specs/maestro-screenshot-automation/spec.md

ADDED Requirements

Requirement: Per-Screen Flow Architecture

The system SHALL provide individual Maestro flow files for each app screen, enabling agents to launch specific views with parameterized data states.

Scenario: Agent launches cleaning task detail screen

  • WHEN agent invokes maestro test -e TASK_ID=task-bathroom .maestro/screens/cleaning/manage_cleaning_task.yaml
  • THEN the flow navigates to the manage cleaning task view for task-bathroom
  • AND captures a screenshot at the specified output path

Scenario: Agent launches home screen with defaults

  • WHEN agent invokes maestro test .maestro/screens/home/home.yaml without parameters
  • THEN the flow uses default seed data values
  • AND navigates to the home view successfully

Scenario: Agent filters flows by tag

  • WHEN agent invokes maestro test --includeTags screenshot .maestro/screens/
  • THEN only flows tagged with screenshot execute
  • AND non-screenshot utility flows are excluded

Requirement: Device Configuration Matrix

The system SHALL support screenshot capture across all mandatory app store device configurations.

Scenario: iOS App Store screenshots

  • WHEN agent runs orchestration flow for iOS
  • THEN screenshots are captured at 1290x2796 for iPhone 16 Pro Max (6.9")
  • AND screenshots are captured at 2064x2752 for iPad Pro 13"

Scenario: Google Play Store screenshots

  • WHEN agent runs orchestration flow for Android
  • THEN screenshots are captured at 1080x1920 for Pixel 8
  • AND screenshots are captured at 600x1024 for Nexus 7 (7" tablet)
  • AND screenshots are captured at 1200x1920 for Pixel Tablet (10")

Requirement: Semantic Identifier Coverage

The system SHALL provide semantic identifiers on all views required for Maestro automation.

Scenario: View has required identifiers

  • WHEN Maestro flow attempts to interact with a view
  • THEN the view exposes semantic identifiers for all interactive elements
  • AND identifiers follow the pattern {screen}_screen for containers and {action}_button for actions

Scenario: List items have indexed identifiers

  • WHEN Maestro flow needs to select a specific list item
  • THEN list items expose identifiers in the pattern {feature}_{item}_{index} or {feature}_{item}_{id}

Requirement: Utility Flow Library

The system SHALL provide reusable utility flows for common operations.

Scenario: Conditional login utility

  • WHEN a screen flow needs authentication
  • THEN the login utility flow checks if already authenticated
  • AND performs auto-login only when the home screen is not visible

Scenario: Tab navigation utility

  • WHEN a screen flow needs to navigate to a specific tab
  • THEN the navigation utility accepts a TAB_ID parameter
  • AND taps the corresponding semantic identifier

Requirement: Orchestration Flow Suites

The system SHALL provide orchestration flows that capture all screens for a specific device configuration.

Scenario: Full iPhone screenshot suite

  • WHEN agent invokes maestro test .maestro/orchestration/appstore_iphone.yaml
  • THEN all 21 screen flows execute in sequence
  • AND screenshots are saved to device-specific output directory

Scenario: Full Android phone screenshot suite

  • WHEN agent invokes maestro test .maestro/orchestration/playstore_phone.yaml
  • THEN all 21 screen flows execute in sequence
  • AND screenshots are saved to device-specific output directory

Requirement: Mobile MCP Integration

The system SHALL integrate mobile-mcp for agent-driven screenshot and interaction capabilities.

Scenario: Agent takes screenshot via MCP

  • WHEN agent calls mobile_take_screenshot MCP tool after Maestro navigation
  • THEN the current simulator/emulator screen is captured
  • AND the screenshot is saved to the specified location

Scenario: Agent lists available devices

  • WHEN agent calls mobile_list_devices MCP tool
  • THEN all booted iOS simulators and Android emulators are listed
  • AND device identifiers can be used for subsequent operations

Requirement: Directory Structure Organization

The system SHALL organize Maestro flows in a feature-based directory structure.

Scenario: Feature-based flow location

  • WHEN developer searches for a screen flow
  • THEN flows are located at .maestro/screens/{feature}/{screen}.yaml
  • AND features match the app's lib/ directory organization (auth, home, cleaning, shopping, payments, settings)

Scenario: Utility flow location

  • WHEN developer searches for a reusable utility
  • THEN utilities are located at .maestro/utils/{utility}.yaml
  • AND utilities are excluded from screenshot tags

Reacties

Nog geen reacties