---
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@0c366fd6a839edf440554fa01a7085ccba70ac98  # v5.0.1
        with:
          persist-credentials: true

      - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405  # v6.2.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@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f  # v7.0.0
        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
