name: NPM Release

on:
  workflow_dispatch:
    inputs:
      versionType:
        description: 'Version type (major, minor, patch)'
        required: true
        default: 'patch'
    branches:
      - master

jobs:
  npm-release:
    if: github.ref == 'refs/heads/master'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0 # fetch all history so that we can determine the version bump

      - name: Configure Git
        run: |
          git config --global user.name "${{ secrets.GIT_USER_NAME }}"
          git config --global user.email "${{ secrets.GIT_USER_EMAIL }}"

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '18'
          registry-url: 'https://registry.npmjs.org/'

      - name: Install dependencies
        run: npm install

      - name: Run Tests and Lint
        run: |
          npx playwright install --with-deps chromium
          npm run lint
          npm test

      - name: Bump version
        run: npm version ${{ github.event.inputs.versionType }} -m "Upgrade to %s"

      - name: Publish to npm
        run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

      - name: Push changes and tags
        run: |
          git config user.name "${{ secrets.GIT_USER_NAME }}"
          git config user.email "${{ secrets.GIT_USER_EMAIL }}"
          git push
          git push --tags
