name: E2E Tests

on:
  push:
    branches:
      - main
      - develop
  pull_request:
    branches:
      - main
      - develop

jobs:
  testOnPR:
    if: ${{ github.event_name == 'pull_request' }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Copy test environment variables
        run: |
          cp example.env .env
          sed -i 's/8080/8180/g' .env

      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Cache dependencies
        id: cache
        uses: actions/cache@v3
        with:
          path: '**/node_modules'
          key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}

      - name: Install dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: yarn install --immutable

      - name: Install Playwright Browsers
        run: npx playwright install chromium --with-deps

      - name: Run dev server
        run: yarn start --port 8180 & # Refer to O3-1994

      - name: Run E2E tests
        run: yarn playwright test

      - name: Upload Report
        uses: actions/upload-artifact@v3
        if: always()
        with:
          name: playwright-report
          path: playwright-report/
          retention-days: 30

#   testOnPush:
#     if: ${{ github.event_name == 'push' }}
#     timeout-minutes: 60
#     runs-on: ubuntu-latest
#     steps:
#       - name: Checkout repo
#         uses: actions/checkout@v3

#       - name: Copy test environment variables
#         run: |
#           cp example.env .env
#           sed -i 's/8080/8180/g' .env

#       - name: Setup node
#         uses: actions/setup-node@v3
#         with:
#           node-version: 18

#       - name: Cache dependencies
#         id: cache
#         uses: actions/cache@v3
#         with:
#           path: '**/node_modules'
#           key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}

#       - name: Install dependencies
#         if: steps.cache.outputs.cache-hit != 'true'
#         run: yarn install --immutable

#       - name: Install Playwright Browsers
#         run: npx playwright install chromium --with-deps

#       - name: Run db and web containers
#         run: |
#           cd e2e/support
#           docker-compose up -d

#       - name: Wait for OpenMRS instance to start
#         run: while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:9000/openmrs/login.htm)" != "200" ]]; do sleep 10; done

#       - name: Run dev server
#         run: yarn start --backend "http://localhost:9000" --port 8180 & # Refer to O3-1994

#       - name: Run E2E tests
#         run: yarn playwright test

#       - name: Upload report
#         uses: actions/upload-artifact@v3
#         if: always()
#         with:
#           name: playwright-report
#           path: playwright-report/
#           retention-days: 30
