name: Publish npm package
run-name: Publish ${{ inputs.package }}
on:
    workflow_dispatch:
        inputs:
            package:
                description: Which package to release
                required: true
                type: choice
                options:
                    - playwright-common
                    - shared-components
                    - module-api

concurrency: release
jobs:
    publish:
        name: "Publish"
        runs-on: ubuntu-latest
        permissions:
            contents: write
            id-token: write

        steps:
            - name: 🧮 Checkout code
              uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
              with:
                  persist-credentials: false

            - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
            - name: 🔧 Set up node environment
              uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
              with:
                  cache: "pnpm"
                  node-version-file: ".node-version"
                  registry-url: "https://registry.npmjs.org"

            # Ensure npm 11.5.1 or later is installed
            - name: Update npm
              run: npm install -g npm@latest

            - name: 🛠️ Install dependencies
              run: pnpm install --frozen-lockfile

            - name: 🚀 Publish to npm
              working-directory: packages/${{ inputs.package }}
              run: npm publish --access public --provenance
