Maestro File Structure Overview
mainThe Maestro E2E test suite is organized into sub-flows, fixtures, and main flows:
subflows/: Reusable logic for authentication, navigation, calls, waits, and server/browser interactions.fixtures/: Node scripts for seeding data (users, channels, files) or polling APIs.flows/: The actual test scenarios, categorized by feature (account, calls, channels, multi-device, timezone).scripts/: Orchestration scripts for running specific test types (e.g., two-device or timezone tests).
detox/maestro/
package.json # Maestro CLI version pin + npm scripts
README.md # This file
subflows/
auth/
login.yml # Reusable: app launch + login
logout.yml # Reusable: logout from app
navigation/
navigate_to_channel.yml # Reusable: tap channel in sidebar
expand_channels_category.yml
dismiss_scheduled_post_tooltip.yml
calls/
join_channel_call.yml
wait_for_active_call.yml
waits/
wait_for_home_tab.yml
wait_for_server_connect_complete.yml
server/
connect_server.yml
browser/
dismiss_chrome_interstitial.yml
reopen_settings_screen.yml
timezone/
assert_timezone_region_label.yml
assert_timezone_region_local.yml
lib/
env.ts # Env helpers for fixture scripts
timezone_region.sh # Shell helper for timezone CI
fixtures/
seed.ts # Node script: create team/channel/user via API
seed_file_preview.ts # Node script: seed for file_type_preview flows
calls_seed.ts # Node script: seed calls-specific data
poll_for_message.ts # Node script: poll API for SYNC_TOKEN message
flows/
account/
attach_logs.yml # MM-T67856 (Zephyr MM-T3261 Report a Problem)
help_url.yml # MM-T3260
calls/
call_ui_permission.yml # MM-T1411 (Android PR CI only)
leave_call.yml # MM-T4833 (Android PR CI only)
mute_unmute.yml # MM-T4832 (Android PR CI only)
start_call.yml # MM-T4829 (nightly/manual — calls_seed.ts)
channels/
channel_bookmark_file.yml # MM-T5603
channel_bookmark_file_android_picker.yml # sub-flow (skipped in PR batch)
channel_bookmark_file_ios_picker.yml # sub-flow (skipped in PR batch)
channel_bookmark_link_external.yml # MM-T5611
file_type_preview.yml # MM-T3244 (nightly — seed_file_preview.ts)
multi_device/
device_a_start_call.yml # MM-T4830 (two-device calls)
device_b_join_call.yml # MM-T4831 (two-device calls)
user_a_sends_message.yml # MM-T3055
user_b_receives_message.yml # MM-T3056
timezone/
clock_display.yml # MM-T1325
scripts/
run_two_device.sh # Orchestrate two-device tests
run_timezone_test.sh # Timezone test with simctl timezone setup