legacy-arrflix/testing/SMOKE-TEST.md
s8n d9d6bdba64 testing/ folder: theme-edit guides + error catalog + headless recipes
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.
2026-05-10 00:47:20 +01:00

2.9 KiB

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)

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

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.