# SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
#
# SPDX-License-Identifier: AGPL-3.0-only

name: Run tests & build

on:
  push:
    branches: [ develop ]
  pull_request:
    branches: [ develop ]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.job }}
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [ '18', '20' ] # Are you changing this? Don't forget to update the min. and recommended node version in getting-started.md!
        include:
          - node: '20'
            coverage: true
    name: Test and build with NodeJS ${{ matrix.node }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0

      - name: Setup node
        uses: ./.github/actions/setup-node
        with:
          NODEJS_VERSION: ${{ matrix.node }}

      - name: Build project
        run: yarn build
        shell: bash
        env:
          NODEJS_VERSION: ${{ matrix.node }}
          TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
          TURBO_API: ${{ vars.TURBO_API }}
          TURBO_TEAM: ${{ vars.TURBO_TEAM }}

      - name: Test Project
        run: yarn test:ci
        shell: bash
        env:
          NODEJS_VERSION: ${{ matrix.node }}
          TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
          TURBO_API: ${{ vars.TURBO_API }}
          TURBO_TEAM: ${{ vars.TURBO_TEAM }}

      - name: Upload backend coverage
        if: "${{ matrix.coverage == true }}"
        uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
        with:
          directory: backend/coverage
          flags: backend, unit-tests, backend-unit-tests

      - name: Upload frontend coverage
        if: "${{ matrix.coverage == true }}"
        uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
        with:
          directory: frontend/coverage
          flags: frontend, unit-tests, frontend-unit-tests
