name: UI Tests

on:
  workflow_dispatch:
  
  schedule:
    - cron:  '0 0 * * 1-5'

jobs:
  tests:
    name: Tests
    runs-on: macos-12

    concurrency:
      # When running on develop, use the sha to allow all runs of this workflow to run concurrently.
      # Otherwise only allow a single run of this workflow on each branch, automatically cancelling older runs.
      group: ${{ github.ref == 'refs/heads/develop' && format('ui-tests-develop-{0}', github.sha) || format('ui-tests-{0}', github.ref) }}
      cancel-in-progress: true

    steps:
      - uses: actions/checkout@v3
        with:
          lfs: true

      - name: Brew bundle
        run:
          brew update && brew bundle && brew upgrade swiftformat

      - uses: actions/cache@v3
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gems-

      - name: Bundle install
        run: |
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3
      
      - name: Run tests
        run: bundle exec fastlane ui_tests
      
      - name: Archive artifacts
        uses: actions/upload-artifact@v3
        if: always()
        with:
          name: test-output
          path: fastlane/test_output
          retention-days: 7
          if-no-files-found: ignore

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          flags: uitests