# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Playground Frontend Test

on:
  push:
    paths:
      - 'playground/frontend/**'
    branches: ['**']
  pull_request:
    paths:
      - 'playground/frontend/**'
    branches: ['**']
  workflow_dispatch:

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.number || github.event.pull_request.head.label || github.sha || github.head_ref || github.ref }}-${{ github.event.schedule || github.event.comment.id || github.event.sender.login}}'
  cancel-in-progress: true

env:
  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
  GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}

jobs:
  playground_frontend_test:
    name: Playground Frontend Test
    runs-on: ubuntu-latest

    env:
      FLUTTER_VERSION: '3.10.4'

    steps:
      - uses: actions/checkout@v4

      - name: 'Cache Flutter Dependencies'
        uses: actions/cache@v4
        with:
          path: /opt/hostedtoolcache/flutter
          key: ${{ runner.OS }}-flutter-install-cache-${{ env.FLUTTER_VERSION }}
          restore-keys: ${{ runner.OS }}-flutter-install-cache

      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
          channel: 'stable'

      - name: 'Install Dependencies'
        working-directory: playground/frontend
        run: |
          cd playground_components && flutter pub get && cd ..
          cd playground_components_dev && flutter pub get && cd ..
          flutter pub get

#      - name: 'Formatting'
#        run: dart format --output=none --set-exit-if-changed .

#      - name: 'Analyze playground_components'
#        working-directory: playground/frontend/playground_components
#        run: dart analyze --fatal-infos

#      - name: 'Analyze playground_components_dev'
#        working-directory: playground/frontend/playground_components_dev
#        run: dart analyze --fatal-infos

#      - name: 'Analyze playground'
#        working-directory: playground/frontend
#        run: dart analyze --fatal-infos lib test

      - name: 'Test playground_components'
        working-directory: playground/frontend/playground_components
        run: flutter test

      - name: 'Test playground'
        working-directory: playground/frontend
        run: flutter test

      - uses: nanasess/setup-chromedriver@v2

      - name: 'Integration tests'
        run: |
          chromedriver --port=4444 &
          ./gradlew :playground:frontend:integrationTest -PdeviceId=web-server
