QA: self-hosting and operations e2e #90
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#90
Loading…
Reference in New Issue
Block a user
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?
Context
M8's promises (wizard, backup, update) are operational paths — they regress silently without tests.
Scope
Automate: wizard e2e (fresh stack → configured instance), update simulation (deploy version N fixture data, upgrade to N+1 image, verify migrations + content intact), backup/restore roundtrip as a compose-level test (distinct from the drill: runs on every release candidate), degraded-readyz scenarios; wire into the release workflow as the pre-approval gate.
Acceptance criteria
Technical notes
Dependencies
Depends on #80, #83, #89.
Size: ~1.5 days
Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add
deanden), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.Implemented in
a9e901c(pipeline green; proven on the real releasev0.1.2).deploy/release-qa.sh— the automated operations QA, wired into the release workflow as the second job (ops-qa): a release candidate is approvable only when both jobs of its release run are green — that is the documented pre-approval gate (the approval itself remains theprod-vX.Y.Z-*tag push, per #89).What it proves, per candidate, in a throwaway plain-docker environment (unique prefix, trap teardown, no bind mounts — the CI job talks to the host daemon):
SETUP_ADMIN_*-preseeded fixture content (pond + page through the real API), then swaps the api to the candidate against the same database: migrations auto-apply (migrations: okasserted), login works, the fixture content is intact. Theseed_fixture/assert_fixturepair is the documented update-fixture contract: a migration story extends exactly those two functions (write on N-1, read on N) — noted in the script header and deployment.md.degradedwith warn-level checks, never 503.The wizard e2e (fresh stack → configured instance) already runs on every CI build against a freshly provisioned stack since #81 — the suite deliberately does not duplicate it.
Acceptance criteria
v0.1.2:Build release images✓ andRelease-candidate operations QA✓ (update simulation v0.1.1 → v0.1.2), then and only then the gate tag deployed Prod (now on v0.1.2, readyzok).ALTER TABLE pages DROP COLUMN title CASCADEbetween N-1 and N) made the suite fail loudly (FAILED — fixture page unreadable); the manipulation was a temporary copy, nothing committed.