name: Run UI Tests
on:
  workflow_dispatch:
  schedule:
      - cron: '0 12 * * *'
jobs:
  build-for-ui-test-mac-os:
    if: github.repository == 'JetBrains/ideavim'
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Java
        uses: actions/setup-java@v4
        with:
          distribution: zulu
          java-version: 17
      - name: Setup FFmpeg
        run: brew install ffmpeg
#      - name: Setup Gradle
#        uses: gradle/gradle-build-action@v2.4.2
      - name: Build Plugin
        run: gradle :buildPlugin
      - name: Run Idea
        run: |
          mkdir -p build/reports
          gradle --no-configuration-cache runIdeForUiTests > build/reports/idea.log &
      - name: Wait for Idea started
        uses: jtalk/url-health-check-action@v3
        with:
          url: http://127.0.0.1:8082
          max-attempts: 20
          retry-delay: 10s
      - name: Tests
        run: gradle :tests:ui-ij-tests:testUi
      - name: Move video
        if: always()
        run: mv tests/ui-ij-tests/video build/reports
      - name: Move sandbox logs
        if: always()
        run: mv build/idea-sandbox/IC-2024.1.2/log_runIdeForUiTests idea-sandbox-log
      - name: Save report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ui-test-fails-report-mac
          path: |
            build/reports
            tests/ui-ij-tests/build/reports
            idea-sandbox-log
#  build-for-ui-test-linux:
#    runs-on: ubuntu-latest
#    steps:
#      - uses: actions/checkout@v2
#      - name: Setup Java
#        uses: actions/setup-java@v2.1.0
#        with:
#          distribution: zulu
#          java-version: 11
#      - name: Build Plugin
#        run: gradle :buildPlugin
#      - name: Run Idea
#        run: |
#          export DISPLAY=:99.0
#          Xvfb -ac :99 -screen 0 1920x1080x16 &
#          mkdir -p build/reports
#          gradle :runIdeForUiTests #> build/reports/idea.log
#      - name: Wait for Idea started
#        uses: jtalk/url-health-check-action@1.5
#        with:
#          url: http://127.0.0.1:8082
#          max-attempts: 15
#          retry-delay: 30s
#      - name: Tests
#        run: gradle :testUi
#      - name: Save fails report
#        if: ${{ failure() }}
#        uses: actions/upload-artifact@v2
#        with:
#          name: ui-test-fails-report-linux
#          path: |
#            ui-test-example/build/reports