name: Run Tests on Branches

on:
  push:
    branches-ignore:
    - 'main'

jobs:
  detect-changes:
    name: Detect Changes
    runs-on: ubuntu-latest
    outputs:
      backend: ${{ steps.filter.outputs.backend }}
      frontend: ${{ steps.filter.outputs.frontend }}
      frontend-mobile: ${{ steps.filter.outputs.frontend-mobile }}
    steps:
    - uses: actions/checkout@v4
    - uses: dorny/paths-filter@v3
      id: filter
      with:
        filters: |
          backend:
            - 'apps/backend/**'
            - 'packages/**'
          frontend:
            - 'apps/frontend/**'
            - 'packages/**'
          frontend-mobile:
            - 'apps/frontend-mobile/**'
            - 'packages/**'

  test-backend:
    name: Backend Tests
    needs: detect-changes
    if: needs.detect-changes.outputs.backend == 'true'
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v4

    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '24'
        cache: 'npm'

    - name: Install Dependencies
      run: npm ci

    - name: Run Backend Tests
      run: npm test --workspace=farma-clic-backend -- --ci

  test-frontend:
    name: Frontend Tests
    needs: detect-changes
    if: needs.detect-changes.outputs.frontend == 'true'
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v4

    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '24'
        cache: 'npm'

    - name: Install Dependencies
      run: npm ci

    - name: Run Frontend Tests
      run: npm test --workspace=farma-clic-frontend -- --run --reporter=basic

  test-frontend-mobile:
    name: Frontend Mobile Tests
    needs: detect-changes
    if: needs.detect-changes.outputs.frontend-mobile == 'true'
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v4

    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '24'
        cache: 'npm'

    - name: Install Dependencies
      run: npm ci

    - name: Run Frontend Mobile Tests
      run: npm test --workspace=frontend-mobile -- --ci
      continue-on-error: true
