name: Run Tests on: [push] jobs: tests: name: ${{ matrix.target }} tests 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 strategy: fail-fast: false matrix: target: [unit, e2e, lint] 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=/workspace/allucanget/calminer" >> "$GITHUB_ENV" # - name: Cache pip dependencies # uses: actions/cache@v4 # with: # path: ~/.cache/pip # key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt', 'requirements-test.txt') }} # restore-keys: | # ${{ runner.os }}-pip- - name: Prepare Python environment uses: ./.gitea/actions/setup-python-env with: install-playwright: ${{ matrix.target == 'e2e' }} use-system-python: 'true' run-db-setup: ${{ matrix.target != 'lint' }} - name: Run tests run: | if [ "${{ matrix.target }}" = "unit" ]; then pytest tests/unit elif [ "${{ matrix.target }}" = "lint" ]; then ruff check . else pytest tests/e2e fi