integration_app_harness.yml 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. name: integration-app-harness
  2. concurrency:
  3. group: ${{ github.workflow }}-${{ github.event.pull_request.id }}
  4. cancel-in-progress: true
  5. on:
  6. push:
  7. branches: ["main"]
  8. paths-ignore:
  9. - "**/*.md"
  10. pull_request:
  11. branches: ["main"]
  12. paths-ignore:
  13. - "**/*.md"
  14. env:
  15. APP_HARNESS_HEADLESS: 1
  16. permissions:
  17. contents: read
  18. jobs:
  19. integration-app-harness:
  20. timeout-minutes: 30
  21. strategy:
  22. matrix:
  23. state_manager: ["redis", "memory"]
  24. python-version: ["3.11", "3.12", "3.13"]
  25. split_index: [1, 2]
  26. fail-fast: false
  27. runs-on: ubuntu-22.04
  28. services:
  29. # Label used to access the service container
  30. redis:
  31. image: ${{ matrix.state_manager == 'redis' && 'redis' || '' }}
  32. # Set health checks to wait until redis has started
  33. options: >-
  34. --health-cmd "redis-cli ping"
  35. --health-interval 10s
  36. --health-timeout 5s
  37. --health-retries 5
  38. ports:
  39. # Maps port 6379 on service container to the host
  40. - 6379:6379
  41. steps:
  42. - uses: actions/checkout@v4
  43. - uses: ./.github/actions/setup_build_env
  44. with:
  45. python-version: ${{ matrix.python-version }}
  46. run-uv-sync: true
  47. - name: Run app harness tests
  48. env:
  49. REDIS_URL: ${{ matrix.state_manager == 'redis' && 'redis://localhost:6379' || '' }}
  50. run: |
  51. uv run playwright install chromium
  52. uv run pytest tests/integration --retries 3 --maxfail=5 --splits 2 --group ${{matrix.split_index}}