name: CI on: push: branches: - main - next pull_request: branches: - main - next permissions: contents: read jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-node@v4 with: node-version: 20 cache: "npm" - name: Cache node_modules uses: actions/cache@v4 with: path: | node_modules */*/node_modules key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install Dependencies run: npm ci timeout-minutes: 2 - name: Run Tests run: | npm run test:coverage -- --coverageThreshold '{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}' --detectOpenHandles --forceExit env: NODE_ENV: test CI: true FORCE_COLOR: 1 timeout-minutes: 15 - name: Upload Test Results if: always() uses: actions/upload-artifact@v4 with: name: test-results-node path: | test-results coverage junit.xml retention-days: 30