name: Run E2E Tests on: workflow_run: workflows: - Run Tests types: - completed workflow_dispatch: jobs: e2e: name: E2E Tests if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.head_branch == 'main' || github.event.workflow_run.head_branch == 'refs/heads/main')) }} runs-on: ubuntu-latest container: mcr.microsoft.com/playwright/python:v1.55.0-jammy env: DATABASE_DRIVER: postgresql DATABASE_HOST: postgres DATABASE_PORT: '5432' DATABASE_NAME: calminer_ci DATABASE_USER: calminer DATABASE_PASSWORD: secret DATABASE_SCHEMA: public DATABASE_SUPERUSER: calminer DATABASE_SUPERUSER_PASSWORD: secret DATABASE_SUPERUSER_DB: calminer_ci DATABASE_URL: postgresql+psycopg2://calminer:secret@postgres:5432/calminer_ci services: postgres: image: postgres:16 env: POSTGRES_DB: calminer_ci POSTGRES_USER: calminer POSTGRES_PASSWORD: secret options: >- --health-cmd "pg_isready -U calminer -d calminer_ci" --health-interval 10s --health-timeout 5s --health-retries 10 steps: - name: Install Node.js runtime shell: bash run: | set -euo pipefail export DEBIAN_FRONTEND=noninteractive curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs - name: Checkout code uses: actions/checkout@v4 - name: Export PYTHONPATH shell: bash run: | set -euo pipefail echo "PYTHONPATH=${{ github.workspace }}" >> "$GITHUB_ENV" - name: Prepare Python environment uses: ./.gitea/actions/setup-python-env with: use-system-python: 'true' install-playwright: 'true' run-db-setup: 'true' - name: Run e2e tests shell: bash run: | set -euo pipefail mkdir -p artifacts/pytest pytest tests/e2e --junitxml=artifacts/pytest/e2e-results.xml - name: Upload pytest results if: always() uses: actions/upload-artifact@v3 with: name: e2e-pytest-results path: artifacts/pytest/ - name: Upload Playwright artifacts if: failure() uses: actions/upload-artifact@v3 with: name: playwright-artifacts path: playwright-report