name: integration-app-harness concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.id }} cancel-in-progress: true on: push: branches: ['main'] paths-ignore: - '**/*.md' pull_request: branches: ['main'] paths-ignore: - '**/*.md' permissions: contents: read jobs: integration-app-harness: timeout-minutes: 30 strategy: matrix: state_manager: ['redis', 'memory'] python-version: ['3.11.5', '3.12.0'] runs-on: ubuntu-latest services: # Label used to access the service container redis: image: ${{ matrix.state_manager == 'redis' && 'redis' || '' }} # Set health checks to wait until redis has started options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps port 6379 on service container to the host - 6379:6379 steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup_build_env with: python-version: ${{ matrix.python-version }} run-poetry-install: true create-venv-at-path: .venv - run: poetry run uv pip install pyvirtualdisplay pillow - name: Run app harness tests env: SCREENSHOT_DIR: /tmp/screenshots REDIS_URL: ${{ matrix.state_manager == 'redis' && 'redis://localhost:6379' || '' }} run: | poetry run pytest tests/integration - uses: actions/upload-artifact@v4 name: Upload failed test screenshots if: always() with: name: failed_test_screenshots path: /tmp/screenshots