name: UI Tests CI

on:
  pull_request:

  workflow_dispatch:

env:
  # Make the git branch for a PR available to our Fastfile
  MX_GIT_BRANCH: ${{ github.event.pull_request.head.ref }}

jobs:
  tests:
    name: UI Tests
    runs-on: macos-15
    
    concurrency:
      # Only allow a single run of this workflow on each branch, automatically cancelling older runs.
      group: ui-tests-${{ github.head_ref }}
      cancel-in-progress: true

    steps:
      - uses: actions/checkout@v4
        with:
            submodules: 'true'

      # Common cache
      # Note: GH actions do not support yaml anchor yet. We need to duplicate this for every job
      - uses: actions/cache@v4
        with:
          path: Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-
      - uses: actions/cache@v4
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gems-

      # Make sure we use the latest version of MatrixSDK
      - name: Reset MatrixSDK pod
        run: rm -rf Pods/MatrixSDK

      # Common setup
      # Note: GH actions do not support yaml anchor yet. We need to duplicate this for every job
      - name: Brew bundle
        run: brew bundle
      - name: Bundle install
        run: |
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3

      # Main step
      - name: UI tests
        run: bundle exec fastlane uitest

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          flags: uitests
