CI: a plain uv run after uv sync --no-group e2e installs the browser group again #1135
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#1135
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What exists today
pyproject.toml:127-128sets[tool.uv] default-groups = ["dev", "e2e"], and thee2egroup (pyproject.toml:120-123) isplaywrightandpytest-playwright. Several jobs sync without it and then call plainuv run, which syncs the environment to the default groups before running (uv's documented behaviour unless--no-syncorUV_NO_SYNCis set):.forgejo/workflows/ci.yml:257(unit),:365(Checks),:552(PostgreSQL):uv sync --locked ... --no-group e2e, thenuv runat:262,:369,:555and after..forgejo/workflows/every-python.yml:107then:112..forgejo/workflows/dependencies.yml:92then:101.The saved log
ci-Database tests on PostgreSQL-5958.log(run of 2026-10-23) shows it: the sync installs 82 packages (line 260), then the firstuv rundownloadsplaywright (45.5MiB)(line 343) and reportsInstalled 7 packages in 178ms(line 348), 1.2 s after the sync ended; pytest then listsplaywright-0.9.0andbase-url-2.1.0among its plugins (line 356).The candidate's premise that the unit jobs never need the group is wrong.
tests/test_documents.py:611-676(fake_playwright, used by the tests at:689-736) doesimport playwright.sync_apiwithout animportorskip, so the unit suite passes today only because the re-sync puts Playwright back. The comment atci.yml:255-256andevery-python.yml:105-106("Playwright is 136 MB of tool this job never starts") describes a saving that has not happened sincedefault-groupsand plainuv runmet.What would change
--no-group e2eon the sync and setUV_NO_SYNC: "1"in the job'senv:(oruv run --no-syncon each call), so later steps use the environment the sync built. None of these jobs imports Playwright.ci.ymltest,every-python.yml): say what is true. Either drop--no-group e2eand fix the comment, or sync--no-group e2e --extra chromium(thechromiumextra isplaywrightalone,pyproject.toml:96) withUV_NO_SYNC: "1", which keeps the package the unit tests import and leaves thepytest-playwrightplugin out of every unit worker. The second is tidier; it needs one unit run to confirm nothing intests/e2e/conftest.pybreaks collection without the plugin (the e2e tests are deselected by the default-m).What it saves or protects
small: about 45 MB of download and 1 to 2 s per job in Checks, PostgreSQL and the monthly Dependencies job, and comments that stop saying something false
Accessibility
none
Decisions
--extra chromium? Recommended:--no-group e2e --extra chromiumplusUV_NO_SYNC, after one green run; fall back to dropping--no-group e2eif collection needs the plugin.tests/e2e/conftest.py:33setsDJANGO_ALLOW_ASYNC_UNSAFE=trueat import, and that conftest is imported when the unit suite collectstests/e2e, so the whole unit suite runs with Django's async-safety guard off. Worth a separate look.Found by the efficiency and reliability audit of 2026-10-30 (finding C1; index postulo/postulo#1108). Checked against
mainatdaee30b15(2026-10-30).