name: Syrupy Benchmarks

on:
  push:
    branches:
      - main

permissions:
  # deployments permission to deploy GitHub pages website
  deployments: write
  # contents permission to update benchmark contents in gh-pages branch
  contents: write

env:
  VENV: .venv

jobs:
  benchmark:
    name: Benchmark
    runs-on: ubuntu-latest
    if: (!contains(github.event.head_commit.message, '[skip ci]'))
    steps:
      - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
      - name: Setup Environment
        uses: ./.github/actions/setup-env
      - name: Install project dependencies
        run: . script/bootstrap
      - name: Benchmark
        run: poetry run invoke benchmark
      - name: Publish Benchmark Results
        uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7
        with:
          tool: 'pytest'
          output-file-path: benchmarks.json
          github-token: ${{ secrets.GITHUB_TOKEN }}
          auto-push: true
