name: Unit tests

on:
  push:
    branches: [master]
  pull_request:

jobs:
  test:
    runs-on: github-ubuntu-latest-s
    permissions:
      id-token: write
      contents: read

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - name: Setup Node.js
        uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #v6.4.0
        with:
          node-version: "24"
          cache: "npm"

      - name: Configure NPM with Repox
        uses: SonarSource/ci-github-actions/config-npm@v1

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Check dist/ is up-to-date
        run: |
          if ! git diff --exit-code dist/ || [ -n "$(git status --porcelain dist/)" ]; then
            echo "::error::dist/ is out of date. Run 'npm run build' and commit the changes."
            git status --short dist/
            exit 1
          fi

      - name: Run tests
        run: npm test
