name: Run Python Tests permissions: contents: read # ----------------- # --- Triggers ---- # ----------------- # This section defines when the workflow will run. on: # Run on every push to the 'main' branch push: branches: [ "main", "33-frontend-looks-like-logged-in-even-after-token-expires" ] # Also run on every pull request that targets the 'main' branch pull_request: branches: [ "main" ] # ----------------- # ------ Jobs ----- # ----------------- # A workflow is made up of one or more jobs that can run in parallel or sequentially. jobs: # A descriptive name for your job build-and-test: # Specifies the virtual machine to run the job on. 'ubuntu-latest' is a common and cost-effective choice. runs-on: ubuntu-latest # 1) Start a MariaDB service container for tests services: mariadb: image: mariadb:11.4 env: MARIADB_ROOT_PASSWORD: rootpw MARIADB_DATABASE: group_project_test MARIADB_USER: appuser MARIADB_PASSWORD: apppass ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping -h 127.0.0.1 -u root -prootpw --silent" --health-interval=5s --health-timeout=2s --health-retries=20 # 2) Expose DB connection settings to steps so your app picks them up env: MARIADB_HOST: 127.0.0.1 MARIADB_PORT: "3306" MARIADB_DB: group_project_test MARIADB_USER: appuser MARIADB_PASSWORD: apppass # Optional: enable SQL echo logs in CI for debugging # SQL_ECHO: "1" # ----------------- # ----- Steps ----- # ----------------- # A sequence of tasks that will be executed as part of the job. steps: # Step 1: Check out your repository's code # This action allows the workflow to access your code. - name: Check out repository code uses: actions/checkout@v4 # Step 2: Set up the Python environment # This action installs a specific version of Python on the runner. - name: Set up Python 3.11 uses: actions/setup-python@v5 with: python-version: '3.11' # Use the Python version that matches your project # Step 3: Install project dependencies (from repo root) - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt # Step 4: Apply DB migrations before running tests - name: Run Alembic migrations run: | alembic upgrade head working-directory: ./7project/backend # Step 5: Run your tests! # Executes the pytest command to run your test suite. - name: Run tests with pytest run: pytest working-directory: ./7project/backend