---
name: Test Effectiveness Tracking

'on':
  schedule:
    - cron: '0 0 * * 0'  # Weekly on Sunday
  workflow_dispatch:  # Allow manual runs

permissions:
  contents: write
  issues: write
  pull-requests: read
  actions: read

jobs:
  track-effectiveness:
    name: Analyze Test Effectiveness
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8  # v5.0.0
        with:
          persist-credentials: true

      - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065  # v5.6.0
        with:
          python-version: '3.11'

      - name: Analyze test effectiveness
        env:
          GH_TOKEN: ${{ github.token }}
        run: |
          python scripts/track-test-effectiveness.py

      - name: Upload metrics
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02  # v4.6.2
        with:
          name: test-effectiveness-metrics
          path: .metrics/

      - name: Create issue if tests are ineffective
        env:
          GH_TOKEN: ${{ github.token }}
        run: |
          # Check if we need to create an issue
          if grep -q "⚠️" .metrics/test-effectiveness-report.md; then
            # Check if issue already exists
            existing=$(gh issue list --label "test-effectiveness" --state open --json number --jq '.[0].number')

            if [ -z "$existing" ]; then
              gh issue create \
                --title "Test Effectiveness Review Needed" \
                --body-file .metrics/test-effectiveness-report.md \
                --label "test-effectiveness,maintenance"
            else
              # Update existing issue
              gh issue comment $existing --body-file .metrics/test-effectiveness-report.md
            fi
          fi

      - name: Commit metrics if changed
        run: |
          git config --local user.email "github-actions[bot]@users.noreply.github.com"
          git config --local user.name "github-actions[bot]"

          if [[ -n $(git status -s .metrics/) ]]; then
            git add .metrics/
            git commit -m "chore: Update test effectiveness metrics [skip ci]"
            git push
          fi
