# Maestro Cloud — E2E for rebreak-native. # STATUS: TEMPLATE ONLY — not active. Requires User confirmation before enabling. # # Trigger: manual dispatch only (PR-trigger commented out — enable after User GO). # Requires: # - MAESTRO_CLOUD_API_KEY in GitHub Actions secrets (environment: staging) # - EAS_TOKEN in GitHub Actions secrets # - E2E_TEST_USER + E2E_TEST_PASSWORD in GitHub Actions secrets # - Maestro Cloud account configured at mobile.dev name: Maestro Cloud E2E (rebreak-native) on: workflow_dispatch: inputs: platform: description: "Target platform" required: true default: "ios" type: choice options: - ios - android # Uncomment to run on PRs — only after User approval: # pull_request: # branches: [main] # paths: # - "apps/rebreak-native/**" # - "apps/rebreak-native/.maestro/**" jobs: maestro-cloud: name: E2E (${{ inputs.platform || 'ios' }}) runs-on: ubuntu-latest environment: staging steps: - name: Check required secrets env: MAESTRO_CLOUD_API_KEY: ${{ secrets.MAESTRO_CLOUD_API_KEY }} EAS_TOKEN: ${{ secrets.EAS_TOKEN }} E2E_TEST_USER: ${{ secrets.E2E_TEST_USER }} E2E_TEST_PASSWORD: ${{ secrets.E2E_TEST_PASSWORD }} run: | missing=() [ -z "$MAESTRO_CLOUD_API_KEY" ] && missing+=("MAESTRO_CLOUD_API_KEY") [ -z "$EAS_TOKEN" ] && missing+=("EAS_TOKEN") [ -z "$E2E_TEST_USER" ] && missing+=("E2E_TEST_USER") [ -z "$E2E_TEST_PASSWORD" ] && missing+=("E2E_TEST_PASSWORD") if [ ${#missing[@]} -gt 0 ]; then echo "FATAL: Folgende Secrets fehlen in GitHub Actions (environment: staging):" printf ' - %s\n' "${missing[@]}" exit 1 fi echo "All required secrets present" - name: Checkout uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Install dependencies run: pnpm install --frozen-lockfile working-directory: apps/rebreak-native # Build app via EAS. # Profile "preview" must produce a .ipa (iOS) or .apk (Android). # eas.json in apps/rebreak-native/ muss "preview"-Profile definieren. - name: Setup EAS uses: expo/expo-github-action@v8 with: eas-version: latest token: ${{ secrets.EAS_TOKEN }} - name: EAS Build run: | eas build \ --platform ${{ inputs.platform || 'ios' }} \ --profile preview \ --non-interactive \ --output ./build-artifact working-directory: apps/rebreak-native - name: Install Maestro CLI run: curl -Ls "https://get.maestro.mobile.dev" | bash env: MAESTRO_VERSION: 1.39.0 - name: Add Maestro to PATH run: echo "$HOME/.maestro/bin" >> $GITHUB_PATH - name: Run Maestro Cloud run: | maestro cloud \ --apiKey "${{ secrets.MAESTRO_CLOUD_API_KEY }}" \ --app ./apps/rebreak-native/build-artifact \ --device "${{ inputs.platform || 'ios' }}" \ --env=E2E_TEST_USER="${{ secrets.E2E_TEST_USER }}" \ --env=E2E_TEST_PASSWORD="${{ secrets.E2E_TEST_PASSWORD }}" \ apps/rebreak-native/.maestro/