55 branches : [main]
66 pull_request :
77
8- # Cancel in-flight runs for the same branch so a new push doesn't queue
9- # behind an older one.
108concurrency :
119 group : tests-${{ github.ref }}
1210 cancel-in-progress : true
@@ -20,30 +18,30 @@ jobs:
2018 fail-fast : false
2119 matrix :
2220 os : [ubuntu-latest, macos-latest, windows-latest]
23- python-version : ["3.12", "3.13"]
21+ python-version : ["3.10", "3.11", "3.12", "3.13"]
22+ exclude :
23+ - os : macos-latest
24+ python-version : " 3.10"
25+ - os : macos-latest
26+ python-version : " 3.11"
27+ - os : windows-latest
28+ python-version : " 3.10"
29+ - os : windows-latest
30+ python-version : " 3.11"
2431
2532 steps :
2633 - name : Checkout repository
2734 uses : actions/checkout@v4
2835
29- # ── uv + Python ────────────────────────────────────────────────────────
3036 - name : Set up uv
3137 uses : astral-sh/setup-uv@v5
3238 with :
3339 python-version : ${{ matrix.python-version }}
34- # Cache the uv download / build cache between runs.
3540 enable-cache : true
3641
37- # ── Dependencies ───────────────────────────────────────────────────────
38- # uv sync installs the project + all dependency groups (including dev,
39- # which pulls in playwright).
4042 - name : Install dependencies
4143 run : uv sync
4244
43- # ── Playwright browsers ────────────────────────────────────────────────
44- # Visual regression tests (test_visual.py) use headless Chromium.
45- # They skip gracefully when no baselines exist, but the browser must be
46- # present so the playwright fixture doesn't error on setup.
4745 - name : Install Playwright browsers (Linux)
4846 if : runner.os == 'Linux'
4947 run : uv run playwright install chromium --with-deps
5250 if : runner.os != 'Linux'
5351 run : uv run playwright install chromium
5452
55- # ── Test suite ─────────────────────────────────────────────────────────
5653 - name : Run tests
5754 run : uv run pytest tests/ -v --tb=short
5855
56+ minimum-deps :
57+ name : Minimum deps (Python 3.10 / ubuntu)
58+ runs-on : ubuntu-latest
59+
60+ steps :
61+ - name : Checkout repository
62+ uses : actions/checkout@v4
63+
64+ - name : Set up uv
65+ uses : astral-sh/setup-uv@v5
66+ with :
67+ python-version : " 3.10"
68+ enable-cache : true
69+
70+ - name : Install dependencies at minimum versions
71+ run : uv sync --resolution lowest-direct
72+
73+ - name : Show installed versions
74+ run : uv run pip list --format=columns
75+
76+ - name : Install Playwright browsers
77+ run : uv run playwright install chromium --with-deps
78+
79+ - name : Run tests
80+ run : uv run pytest tests/ -v --tb=short
0 commit comments