name: Run E2E tests

on:
  pull_request:
    paths:
      - 'agenta-backend/**'
      - 'agenta-web/**'
      - 'docker-compose.yml'
      - 'docker-compose.*.yml'
  workflow_dispatch:
    inputs:
      debug:
        description: 'Run Docker logs step (true/false)'
        required: true
        default: 'false'

env:
  OPENAI_API_KEY: ${{ secrets.NEXT_PUBLIC_OPENAI_API_KEY }}

jobs:
  cypress:
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v4

      - name: Set Environment Variables
        run: |
          echo "NEXT_PUBLIC_OPENAI_API_KEY=${{ secrets.NEXT_PUBLIC_OPENAI_API_KEY }}" >> $GITHUB_ENV

      - name: Install Curl & Start Docker Compose
        env:
          NEXT_PUBLIC_OPENAI_API_KEY: ${{ secrets.NEXT_PUBLIC_OPENAI_API_KEY }}
        run: |
          sudo apt install curl -y
          OPENAI_API_KEY=${{ secrets.NEXT_PUBLIC_OPENAI_API_KEY }} ENVIRONMENT=github docker compose -f "docker-compose.test.yml" up -d --build

      - name: Restart Backend Service To Fetch Template(s)
        run: docker container restart agenta-backend-test

      - name: Wait for Backend Service
        run: curl http://localhost/api/health/

      - name: Know the Response of Organization & Container Templates
        run: |
          curl http://localhost/api/organizations/own/
          curl http://localhost/api/containers/templates/

      - name: Set Node.js 18
        uses: actions/setup-node@v4
        with:
          node-version: 18

      - name: Install Frontend Dependencies
        run: |
          cd agenta-web/ && npm install

      - name: Run Cypress
        env:
          NEXT_PUBLIC_OPENAI_API_KEY: ${{ secrets.NEXT_PUBLIC_OPENAI_API_KEY }}
        run: cd agenta-web/ && npm run test

      - name: Docker logs
        if: github.event_name == 'workflow_dispatch' && github.event.inputs.debug == 'true'
        run: docker ps -q | xargs -I {} docker logs {}
