70 lines
1.8 KiB
YAML
70 lines
1.8 KiB
YAML
when:
|
|
- event: [push, pull_request]
|
|
branch: [dev, main, master]
|
|
|
|
steps:
|
|
- name: deps
|
|
image: python:3.13-slim
|
|
volumes:
|
|
- /tmp/uv-cache:/root/.cache/uv
|
|
environment:
|
|
UV_CACHE_DIR: /root/.cache/uv
|
|
commands:
|
|
- pip install uv
|
|
- uv sync --no-dev --group lints --group tests --group types
|
|
|
|
- name: lint
|
|
image: python:3.13-slim
|
|
volumes:
|
|
- /tmp/uv-cache:/root/.cache/uv
|
|
environment:
|
|
UV_CACHE_DIR: /root/.cache/uv
|
|
depends_on: [deps]
|
|
commands:
|
|
- pip install uv
|
|
- uv sync --no-dev --group lints --group tests --group types
|
|
- uv run ruff check .
|
|
- uv run ruff format --check .
|
|
- uv run isort --check-only .
|
|
|
|
- name: type
|
|
image: python:3.13-slim
|
|
volumes:
|
|
- /tmp/uv-cache:/root/.cache/uv
|
|
environment:
|
|
UV_CACHE_DIR: /root/.cache/uv
|
|
depends_on: [deps]
|
|
commands:
|
|
- pip install uv
|
|
- uv sync --no-dev --group lints --group tests --group types
|
|
- uv run mypy .
|
|
|
|
- name: test-unit
|
|
image: python:3.13-slim
|
|
volumes:
|
|
- /tmp/uv-cache:/root/.cache/uv
|
|
environment:
|
|
UV_CACHE_DIR: /root/.cache/uv
|
|
depends_on: [deps]
|
|
commands:
|
|
- pip install uv
|
|
- uv sync --no-dev --group lints --group tests --group types
|
|
- uv run pytest tests/unit/ --no-cov
|
|
|
|
# E2E tests require a running server and Playwright browser.
|
|
# They are kept separate because they need the full dev dependency set
|
|
# and a longer-lived test environment.
|
|
- name: test-e2e
|
|
image: mcr.microsoft.com/playwright/python:v1.51.0
|
|
volumes:
|
|
- /tmp/uv-cache:/root/.cache/uv
|
|
environment:
|
|
UV_CACHE_DIR: /root/.cache/uv
|
|
depends_on: [deps]
|
|
commands:
|
|
- pip install uv
|
|
- uv sync --no-dev --group lints --group tests --group types
|
|
- uv run blog &
|
|
- sleep 5
|
|
- uv run pytest tests/e2e/ -v
|