name: integration-tests-wsl

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.id }}
  cancel-in-progress: true

on:
  push:
    branches: ["main"]
    paths-ignore:
      - "**/*.md"
  pull_request:
    branches: ["main"]
    paths-ignore:
      - "**/*.md"

permissions:
  contents: read

env:
  TELEMETRY_ENABLED: false
  NODE_OPTIONS: "--max_old_space_size=4096"

jobs:
  example-counter-wsl:
    timeout-minutes: 20
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - name: Clone Reflex Examples Repo
        uses: actions/checkout@v4
        with:
          repository: reflex-dev/reflex-examples
          path: reflex-examples

      - uses: Vampire/setup-wsl@v5
        with:
          distribution: Ubuntu-24.04

      - name: Install packages
        shell: wsl-bash {0}
        run: |
          sudo apt-get update
          sudo apt-get install -y python3 python3-pip curl dos2unix zip unzip

      - name: Install Uv
        shell: wsl-bash {0}
        run: |
          curl -LsSf https://astral.sh/uv/install.sh | sh

      - name: Install reflex deps
        shell: wsl-bash {0}
        run: |
          /root/.local/bin/uv sync --link-mode=copy

      - name: Install requirements for counter example
        working-directory: ./reflex-examples/counter
        shell: wsl-bash {0}
        run: |
          /root/.local/bin/uv pip install -r requirements.txt --link-mode=copy
      - name: Check export --backend-only before init for counter example
        working-directory: ./reflex-examples/counter
        shell: wsl-bash {0}
        run: |
          export TELEMETRY_ENABLED=false
          /root/.local/bin/uv run reflex export --backend-only
      - name: Check run --backend-only before init for counter example
        shell: wsl-bash {0}
        run: |
          export TELEMETRY_ENABLED=false
          dos2unix scripts/integration.sh
          /root/.local/bin/uv run bash scripts/integration.sh ./reflex-examples/counter dev 8001 --backend-only --backend-port 8001
      - name: Init Website for counter example
        working-directory: ./reflex-examples/counter
        shell: wsl-bash {0}
        run: |
          export TELEMETRY_ENABLED=false
          /root/.local/bin/uv run reflex init --loglevel debug
      - name: Check export for counter example
        working-directory: ./reflex-examples/counter
        shell: wsl-bash {0}
        run: |
          export TELEMETRY_ENABLED=false
          /root/.local/bin/uv run reflex export --frontend-only --loglevel debug
      - name: Run Website and Check for errors
        shell: wsl-bash {0}
        run: |
          export TELEMETRY_ENABLED=false
          /root/.local/bin/uv run bash scripts/integration.sh ./reflex-examples/counter dev
