Expand automated test coverage in CI #5
Labels
No labels
area/ai
area/backend
area/frontend
area/infra
area/scheduler
area/wled
good-first-issue
priority/high
priority/low
priority/medium
type/bug
type/chore
type/ci-cd
type/docs
type/feature
type/qa
v1.0.0
v1.1.0
v1.2.0
v2.0.0
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Iris-WLED#5
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?
Goal
Make CI exercise everything it should. Today's pipeline lints and builds the frontend and runs backend pytest, but several existing test suites and safety checks are never run in CI.
Gaps to close
GET /api/v1/healthreturns 200 (matches the M0 exit criterion).pip-audit(backend) andnpm audit(frontend) as a CI job.Acceptance criteria
pip-audit+npm auditrun (non-blocking or blocking, decided in review)Depends on: CI migration to Forgejo Actions.
Context from #41 (merged): the docker-e2e job now runs the Playwright happy-path suite in CI and passes — the E2E-in-CI item on this issue's list is effectively delivered. Getting there required rewiring the job for the Forgejo runner (container-name networking instead of host ports;
docker cpinstead of bind mounts; idempotent cleanup of the reused docker host).Two non-blocking hardening/optimization follow-ups discovered while doing it, good to fold into this issue's scope:
--ipc=hoston the Playwright container — Chromium ran fine on the default 64MB/dev/shmthis time, but that's the #1 flakiness source for Playwright-in-Docker. Adding--ipc=host(per Playwright's Docker docs) is cheap insurance against intermittent hangs. (I have the one-line diff ready.)linux/arm64multi-arch build under QEMU. Consider building onlylinux/amd64on PRs and reserving the arm64/multi-arch validation for pushes tomain/ tags (pairs with #3/#64). Would cut PR feedback time dramatically.iris/pw/iris-netnames with pre-run cleanup — fine for serialized PR CI, but if runs ever overlap on the shared runner host they'd collide. Run-scoped names would make it robust.Also: the other items still open here (Vitest already runs, pip-audit/npm-audit now gating-clean, migration check) — worth reconciling this checklist against what #41 already turned on.
Audited against
.forgejo/workflows/on 2026-09-01 — all four acceptance criteria are met.ci.yml→ Frontend lint, test & build → Unit tests (Vitest)ci.yml→ Docker build, health smoke & E2E → Run E2E (Playwright), from a sibling container on the job network, image tag derived frompackage-lock.json(#38/#39)/api/v1/healthagainst the booted image and dumpingdocker logson failureaudit.yml—pip-audit+npm audit --audit-level=high, weekly +workflow_dispatchci.yml→ dedicated Alembic migration check job:alembic upgrade headon a fresh DB, thenalembic checkfor un-generated model changesThe one deviation from the original text is deliberate: this issue said audits should run "as a CI job", and they now run in a separate scheduled workflow instead. That was decided in #81 — on this Forgejo runner
continue-on-error: truedoes not stop a failing job from marking the whole runfailure, so an advisory audit insideci.ymlreddened every PR and would have blocked #56 outright. This issue's acceptance criterion allowed for it: "non-blocking or blocking, decided in review." It was reviewed and decided.The remaining unchecked line is the explicitly optional one — coverage thresholds, hadolint, trivy. None of those are acceptance criteria, and I'd rather they be their own issue if wanted than keep this one open.
Closing as done.