# This workflow is provided via the organization template repository # # https://github.com/nextcloud/.github # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization # # SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors # SPDX-License-Identifier: MIT name: Node tests on: pull_request: schedule: - cron: "5 2 * * *" permissions: contents: read concurrency: group: node-tests-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: changes: runs-on: ubuntu-latest-low permissions: contents: read pull-requests: read outputs: src: ${{ steps.changes.outputs.src}} steps: - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 id: changes continue-on-error: true with: filters: | src: - '.github/workflows/**' - '**/__tests__/**' - '**/__mocks__/**' - 'apps/*/src/**' - 'apps/*/appinfo/info.xml' - 'core/src/**' - 'package.json' - '**/package-lock.json' - 'tsconfig.json' - '**.js' - '**.ts' - '**.vue' test: runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.src != 'false' steps: - name: Checkout uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Read package.json node and npm engines version uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 id: versions with: fallbackNode: '^24' fallbackNpm: '^11.3' - name: Set up node ${{ steps.versions.outputs.nodeVersion }} uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: ${{ steps.versions.outputs.nodeVersion }} - name: Set up npm ${{ steps.versions.outputs.npmVersion }} run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}' - name: Install dependencies env: CYPRESS_INSTALL_BINARY: 0 run: | npm ci # - name: Test # run: npm run test --if-present - name: Test and process coverage run: npm run test:coverage - name: Collect coverage uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1 with: files: ./coverage/lcov.info,./coverage/legacy/lcov.info summary: permissions: contents: none runs-on: ubuntu-latest-low needs: [changes, test] if: always() name: node-test-summary steps: - name: Summary status run: if ${{ needs.changes.outputs.src != 'false' && needs.test.result != 'success' }}; then exit 1; fi