name: Browser Lane

on:
  workflow_dispatch:
  schedule:
    - cron: '43 4 * * 1-5'

permissions:
  actions: read
  contents: read

jobs:
  browser:
    if: ${{ github.event_name != 'schedule' || vars.TENANTATLAS_ENABLE_BROWSER_SCHEDULE == '1' }}
    runs-on: ubuntu-latest
    env:
      SAIL_TTY: 'false'

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.4'
          coverage: none
          tools: composer:v2

      - name: Install platform dependencies
        run: |
          cd apps/platform
          if [[ ! -f .env ]]; then
            cp .env.example .env
          fi
          composer install --no-interaction --prefer-dist --optimize-autoloader

      - name: Boot Sail
        run: |
          cd apps/platform
          ./vendor/bin/sail up -d
          ./vendor/bin/sail artisan key:generate --force --no-interaction

      - name: Resolve Browser context
        id: context
        run: |
          if [[ "${{ github.event_name }}" == "schedule" ]]; then
            echo "workflow_id=browser-scheduled" >> "$GITHUB_OUTPUT"
            echo "trigger_class=scheduled" >> "$GITHUB_OUTPUT"
          else
            echo "workflow_id=browser-manual" >> "$GITHUB_OUTPUT"
            echo "trigger_class=manual" >> "$GITHUB_OUTPUT"
          fi

      - name: Run Browser lane
        run: ./scripts/platform-test-lane browser --workflow-id=${{ steps.context.outputs.workflow_id }} --trigger-class=${{ steps.context.outputs.trigger_class }}

      - name: Refresh Browser report
        if: always()
        env:
          TENANTATLAS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
        run: ./scripts/platform-test-report browser --workflow-id=${{ steps.context.outputs.workflow_id }} --trigger-class=${{ steps.context.outputs.trigger_class }} --fetch-latest-history

      - name: Stage Browser artifacts
        if: always()
        run: ./scripts/platform-test-artifacts browser .gitea-artifacts/browser --workflow-id=${{ steps.context.outputs.workflow_id }} --trigger-class=${{ steps.context.outputs.trigger_class }}

      - name: Upload Browser artifacts
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: browser-artifacts
          path: .gitea-artifacts/browser
          if-no-files-found: error

      - name: Stop Sail
        if: always()
        run: |
          cd apps/platform
          ./vendor/bin/sail stop
