name: Tests

on:
  push:
    branches:
      - master
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]
    branches:
      - master

jobs:
  tests:
    runs-on: ${{ matrix.os }}
    if: github.event.pull_request.draft == false

    strategy:
      matrix:
        os: [ubuntu-latest]
        node: [12, 14, 16]

    steps:
      - name: Check out repository
        uses: actions/checkout@v3

      - uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}

      - name: Update NPM to latest
        run: npm install npm@latest -g

      - name: Print Node.js and NPM version
        run: |
          node -v
          npm -v

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        timeout-minutes: 5
        run: npm test
