name: Tests
on:
    pull_request: {}
    push:
        branches: [develop, master]
    merge_group:
        types: [checks_requested]
    repository_dispatch:
        types: [element-web-notify]
env:
    # These must be set for fetchdep.sh to get the right branch
    REPOSITORY: ${{ github.repository }}
    PR_NUMBER: ${{ github.event.pull_request.number }}
jobs:
    jest:
        name: Jest
        runs-on: ubuntu-latest
        steps:
            - name: Checkout code
              uses: actions/checkout@v4

            - name: Yarn cache
              uses: actions/setup-node@v4
              with:
                  cache: "yarn"

            - name: Install Dependencies
              run: "./scripts/layered.sh"

            - name: Get number of CPU cores
              id: cpu-cores
              uses: SimenB/github-actions-cpu-cores@97ba232459a8e02ff6121db9362b09661c875ab8 # v2

            - name: Run tests with coverage
              run: "yarn coverage --ci --max-workers ${{ steps.cpu-cores.outputs.count }}"

            - name: Upload Artifact
              uses: actions/upload-artifact@v4
              with:
                  name: coverage
                  path: |
                      coverage
                      !coverage/lcov-report

    skip_sonar:
        name: Skip SonarCloud in merge queue
        if: github.event_name == 'merge_group'
        runs-on: ubuntu-latest
        needs: jest
        steps:
            - name: Skip SonarCloud
              uses: Sibz/github-status-action@071b5370da85afbb16637d6eed8524a06bc2053e # v1
              with:
                  authToken: ${{ secrets.GITHUB_TOKEN }}
                  state: success
                  description: SonarCloud skipped
                  context: SonarCloud Code Analysis
                  sha: ${{ github.sha }}
                  target_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}