name: Node CI

on: [push, pull_request]

jobs:
  ubuntu-test:
    name: Test on node ${{ matrix.node-version }} and Ubuntu
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        node-version: [16.x, 18.x, 20.x]
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: node -v
    - run: npm -v
    - run: npm ci
    - run: npm test

  mac-and-windows-test:
    name: Test on node latest and ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest, macos-latest]
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: 20.x
        cache: 'npm'
    - run: node -v
    - run: npm -v
    - run: npm ci
    - run: npm test
