ci: gate pull requests on the end-to-end suite #176
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-web#176
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "%!s()"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
.forgejo/workflows/ci.ymlruns the full lint / type-check / content-style / migration / build /vitest gate but has no end-to-end step. The only thing enforcing the e2e suite is the developer's
pre-pushhook, which means it is enforced against whatever browser that machine happens to have —today, the locally installed Firefox — and not enforced at all on a squash-merge commit.
Add the suite to the existing
cijob.Add after the
Test (vitest)step, in the SAME jobWhy one job and not a matrix
Compute is billed per hour and every ephemeral runner VM rounds up to roughly one VM-hour even for
a two-minute job (ADR 0021). At the
M - Mediumflavor plus its 40 GB boot volume that is about0.57 SEK per job. So a job that grows from four minutes to seven costs exactly the same, while a
second job — a browser matrix, a shard, a separate e2e workflow — costs another 0.57 SEK on every
push and consumes one of the four concurrent-runner slots. Parallelism belongs in Playwright's
workers, inside this job. Do not add
--shard.The same arithmetic is why firefox runs on the
push: mainevent: the job is already running, theextra engine is free, and pull requests stay fast.
Prerequisites
The browsers must already be in the
gitborg-runnerGlance image before this merges. The installstep above is idempotent and self-heals if the image drifts, but merging it against an unbaked
image wires a hard per-run dependency on Google's Chrome-for-Testing bucket and Microsoft's
Playwright CDN into the required status check for
main— roughly 500 MB and 2.5–4 minutes onevery pull request.
Also verify
actions/upload-artifact@v4resolves through the instance'sDEFAULT_ACTIONS_URL(
data.forgejo.org). If the EU mirror does not carry it, print the JUnit summary to the job loginstead rather than reaching for github.com.
Acceptance
cicijob wall clock grows by less than two minutes