name: Node CI

on:
  push:
    branches:
    - master
  pull_request:
    branches:
    - '**'

jobs:
  tests:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v4

    - name: Setup Nodejs
      uses: actions/setup-node@v4
      with:
        node-version-file: '.nvmrc'

    - name: Install dependencies
      run: npm ci

    - name: Verify No Uncommitted Changes
      run: make validate-no-uncommitted-package-lock-changes

    - name: Lint
      run: npm run lint

    - name: Test
      run: npm run test

    - name: Run Coverage
      uses: codecov/codecov-action@v5
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        fail_ci_if_error: true
