name: Node

on:
  pull_request:
  push:
    branches-ignore: ["dependabot/**"]

permissions:
  contents: read # to fetch code (actions/checkout)

env:
  NODE_VERSION: 20.x

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    name: test
    steps:
      - name: Checkout
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Use Node.js ${{ env.NODE_VERSION }}
        uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
        with:
          node-version: ${{ env.NODE_VERSION }}

      - name: Cache
        uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test
