name: Run code tests on Pull Request or Push

on:
  # Runs for pushes and pull requests,
  #  but don't run these when only some config is changed.
  push:
    branches:
      - main
    paths-ignore:
      - 'src/config/*'
  pull_request:
    branches:
      - main
    types:
      - opened
      - synchronize
      - reopened
      - ready_for_review
    paths-ignore:
      - 'src/config/**'
  workflow_dispatch:
    inputs:
      node_version:
        description: 'NodeJS version'
        required: true
        default: '22.x'

jobs:
  test:
    name: Run tests
    timeout-minutes: 5
    runs-on: ubuntu-latest
    steps:

      - name: Clone repository
        uses: actions/checkout@v4

      - name: Node setup
        uses: actions/setup-node@v4
        with:
          node-version: ${{ inputs.node_version || '22.x' }}
          cache: npm

      - name: Install npm dependencies
        run: npm ci

      - name: Deps
        run: cat package-lock.json

      - name: Lint code for code-style errors
        run: npm run lint

      - name: Check for compatibility issues
        run: npm run lint:bundle

      - name: Check NPM dependencies
        run: node tests/dependencies.js
