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.
74 lines
2.9 KiB
Markdown
74 lines
2.9 KiB
Markdown
# SMOKE-TEST — pre/post-deploy verify checklist
|
|
|
|
> Run this on dev BEFORE every prod promotion. Run again on prod AFTER deploy.
|
|
|
|
## Manual (5 min, browser)
|
|
|
|
1. **Login pristine** — open dev.arrflix.s8n.ru in a fresh incognito window. Hard-refresh.
|
|
- [ ] ARRFLIX red logo top-left
|
|
- [ ] No Movies/Series links visible (gated by auth)
|
|
- [ ] User+Password fields, red Sign In button, "Welcome to ARRFLIX" footer
|
|
- [ ] Background pure black, no #101010 stripe
|
|
|
|
2. **Login + home** — sign in as `test/123` (dev) or your account (prod). After login:
|
|
- [ ] Wordmark logo dead-center in header
|
|
- [ ] MOVIES + SERIES uppercase nav links left
|
|
- [ ] 🔍 search icon right
|
|
- [ ] No My Media row (.section0 hidden)
|
|
- [ ] Continue Watching / Next Up / Recently Added rows render
|
|
- [ ] No grey stripe at bottom of page when scrolled
|
|
|
|
3. **Movies / Series navigation** — click MOVIES.
|
|
- [ ] MOVIES link gets red glow + bold (variant E active state)
|
|
- [ ] No back arrow visible on header
|
|
- [ ] No duplicate "Movies" h3 title
|
|
- [ ] Library renders or shows spinner (Jellyfin viewContainer)
|
|
|
|
4. **Search** — click 🔍 icon.
|
|
- [ ] Search input has red bottom underline on focus (NOT cyan ring)
|
|
- [ ] Suggestions list red text on black
|
|
|
|
5. **Playback** — click any movie's Play button. Wait 10 seconds.
|
|
- [ ] Video frame visible (not black, not white, not grey washed out)
|
|
- [ ] OSD scrubber + play/pause buttons + settings icon click-able above video
|
|
- [ ] Header bar HIDDEN during playback
|
|
- [ ] Letterbox bars (top/bottom of video) are BLACK not white
|
|
- [ ] Seek with scrubber works
|
|
- [ ] Click settings → audio/subtitle dropdowns show red hairline ring on selected
|
|
|
|
6. **Browser tab favicon** — check tab.
|
|
- [ ] Red ARRFLIX "A" mark (not Jellyfin triangle, not wordmark)
|
|
|
|
## Headless (1 min, automated)
|
|
|
|
```bash
|
|
ssh user@nullstone 'docker run --rm --userns=host --network container:jellyfin-dev mcr.microsoft.com/playwright/python:v1.49.0-noble bash -c "pip install --quiet playwright==1.49.0 && python /tmp/smoke.py"'
|
|
```
|
|
|
|
(`/tmp/smoke.py` lives in testing/recipes/smoke-headless.py — TODO)
|
|
|
|
Expected diag output:
|
|
```
|
|
{
|
|
"loginRedSignIn": true,
|
|
"wordmarkCenter": true,
|
|
"myMediaHidden": true,
|
|
"darkPctOnVideoFrame": 0.10,
|
|
"osdControlsClickable": true,
|
|
"letterboxBlack": true,
|
|
"favIconAMark": true,
|
|
"selectorOutlineRed": true
|
|
}
|
|
```
|
|
|
|
If ANY false: rollback (testing/ROLLBACK.md) and check testing/ERROR-PATTERNS.md for the matching pattern.
|
|
|
|
## md5 chain check
|
|
|
|
```bash
|
|
ssh user@nullstone 'md5sum /opt/docker/jellyfin/web-overrides/index.html /opt/docker/jellyfin-dev/web-overrides/index-dev.html'
|
|
ssh user@nullstone 'docker exec jellyfin md5sum /jellyfin/jellyfin-web/index.html'
|
|
ssh user@nullstone 'docker exec jellyfin-dev md5sum /jellyfin/jellyfin-web/index.html'
|
|
```
|
|
|
|
Expected on dev-only deploy: prod ≠ dev (intentional). Container view = host file (else inode swap, restart). Once prod-promoted: all 4 should match.
|