7 docs in /testing/ — institutional memory after 6+ regressions in
24-48h on the v6 theme. Read before any edit.
README.md — index + quickstart
THEMING.md — safe-edit checklist + layer/specificity tables
ERROR-PATTERNS.md — 12 cataloged patterns (Symptom/Cause/Diag/Fix/Prev)
HEADLESS-PROBE.md — 11 playwright recipes (md5 chain, darkPct,
ancestor bg sample, dropdown listItem probe)
ROLLBACK.md — 8 emergency revert recipes (overlay, branding,
encoding, full-from-repo, dev-clone-prod,
git-revert, pw-reset, bind-mount inode-swap)
SMOKE-TEST.md — manual + headless verify checklist
DEPLOY.md — dev → prod promotion workflow with backup +
chown root + restart inode-swap
Empty subdirs: snipUSER-Es/, recipes/, incidents/ (post-mortems land here).
Goal: stop reinventing the same fixes. Catalog every error class,
codify the recovery, build a skills folder for future ARRFLIX work.
1.9 KiB
1.9 KiB
testing/
Manual + automated verification + recovery for the ARRFLIX overlay (web-overrides/index.html) + branding.xml + system.xml. Read this folder before any theme edit, deployment, or recovery.
Index
| File | Purpose |
|---|---|
| THEMING.md | Safe-edit checklist + layer model + specificity rules (links to docs/31) |
| ERROR-PATTERNS.md | Catalog of every theme/deploy error so far + fixes |
| HEADLESS-PROBE.md | Playwright + DOM-probe recipes for verifying changes |
| ROLLBACK.md | Emergency revert procedures (overlay, branding, full prod) |
| SMOKE-TEST.md | Manual 4-step verify checklist before/after deploy |
| DEPLOY.md | Dev → prod promotion workflow (overlay swap + restart + verify) |
| snipUSER-Es/ | Reusable bash, sqlite, playwright, ssh snipUSER-Es |
| recipes/ | Step-by-step recipes for common tasks (apply theme variant, fix pw, etc) |
| incidents/ | Post-mortems for past + future bugs (referenced from docs/26, 28, 30, 31) |
Quickstart for "I want to edit the theme"
- Read
THEMING.md— pay attention to the layer model + L1/L2 paired rules - Edit
bin/inject-middle-theme.py. Keep it dev-only, scoped underbody.arrflix-themed python3 bin/inject-middle-theme.pyto regenerateweb-overrides/index.html- scp the regenerated file to dev's overlay path (NOT prod)
docker restart jellyfin-dev— bind-mount inode swap requires restart- Run
SMOKE-TEST.mdchecklist on dev - Hard-refresh the browser (Ctrl+Shift+R) — defeats Service Worker + HTTP cache
- If green: promote per
DEPLOY.md. If red: revert perROLLBACK.md
Why this exists
Five+ regressions in 24 hours during 2026-05-09 (docs/26 INC1-5, docs/28 INC7, docs/30 v6-stable). Each one was the same anti-pattern: an opaque CSS rule painted over the video. Combined with bind-mount inode + browser-cache + XML-parse-silent-failures + Cineplex CSS shadow specificity → debugging nightmare. This folder is the institutional memory.