name: tests

on:
  push:
    branches:
      - master
  pull_request:
  schedule:
    - cron: '0 8 * * *'

jobs:
  test:
    name: 'Python ${{ matrix.python-version }} Django ${{ matrix.django-version }}'
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.13", "3.12", "3.11"]
        django-version: ["5.2", "5.1", "4.2"]
        exclude:
          - python-version: "3.13"
            django-version: "4.2"
    steps:
    - name: Checkout
      run: |
        echo $GITHUB_REF $GITHUB_SHA
        git clone https://github.com/$GITHUB_REPOSITORY.git .
        git fetch origin $GITHUB_SHA:temporary-ci-branch
        git checkout $GITHUB_SHA || (git fetch && git checkout $GITHUB_SHA)

    - name: 'Set up Python ${{ matrix.python-version }}'
      uses: actions/setup-python@v5
      # https://github.com/marketplace/actions/setup-python
      with:
        python-version: '${{ matrix.python-version }}'
        cache: 'pip' # caching pip dependencies

    - name: 'Install'
      run: |
        make install
        make playwright-install
        make nox-list

    - name: 'Run tests with Python ${{ matrix.python-version }} Django ${{ matrix.django-version }}'
      env:
        PYTHONUNBUFFERED: 1
        PYTHONWARNINGS: always
      run: |
        .venv/bin/nox -s "tests-${{ matrix.python-version }}(django='${{ matrix.django-version }}')"

    - name: 'Upload coverage report'
      uses: codecov/codecov-action@v3
      # https://github.com/marketplace/actions/codecov
      with:
        fail_ci_if_error: false
        verbose: true
