name: CI

on:
  pull_request:
    branches:
      - main
  workflow_dispatch:

permissions: read-all

jobs:
  test:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'pull_request' }}
    strategy:
      matrix:
        node: [ 20, 21, 22 ]
    name: Node ${{ matrix.node }} test
    steps:
      - name: Git Checkout
        uses: actions/checkout@v4
      - name: Run linting rules and tests
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - name: Node Version
        run: node --version
      - name: NPM Install
        run: npm ci
      - name: NPM ESLint
        run: npm run lint
      - name: NPM Test
        run: npm run test

  auto-approve:
    runs-on: ubuntu-latest
    needs: [test]
    permissions:
      pull-requests: write
      issues: write
    steps:
    - name: Auto Approve PR
      uses: actions/github-script@v7
      with:
       script: |
        github.rest.pulls.createReview({
          owner: context.repo.owner,
          repo: context.repo.repo,
          pull_number: context.issue.number,
          event: "APPROVE"
        })