This matrix is the minimum validation target before release packaging.
- Docker runtime long folder names can push the chevron into the Version column if app width reflow/gap guards regress.
- Nested parent folders can hide direct members if direct-row recovery drifts from runtime membership state.
- Mobile compact settings controls can pick up browser/theme button chrome (iPhone Safari) and render ghost box artifacts.
- Mobile folder action sheet can clip at viewport edges on iPhone if safe-area bounds are not enforced.
- Refresh/resize/font-load bursts can trigger width recalculation thrash if reflow debounce contracts regress.
| Surface | Required checks |
|---|---|
| Docker tab | Long-name row, short-name row, dropdown alignment, Version gap, nested parent expand/collapse |
| VMs tab | Nested expand/collapse parity, status rendering, compact viewport behavior |
| Dashboard widgets | Nested folder expansion and quick-action visibility without overflow clipping |
| Settings basic/advanced | Mobile compact row controls, folder action sheet bounds, no ghost boxes |
| Platform | Browser | Required |
|---|---|---|
| Desktop | Chrome (latest) | Yes |
| Desktop | Firefox (latest) | Yes |
| Desktop | Safari/WebKit | Yes |
| Mobile | iPhone Safari | Yes |
| Mobile | Android Chrome | Yes |
The required fixture suite loads the shipped Docker runtime, settings chrome, folder editor, import, privacy, and request modules against stable local HTML and API fixtures. It does not require a running Unraid server, so UI regressions fail consistently on pull requests and release builds.
Run the default Chromium pass locally:
npm ci --ignore-scripts
npx playwright install chromium
npm run test:browser-fixturesRun the same suite across every required desktop engine:
FVPLUS_FIXTURE_BROWSERS=chromium,firefox,webkit npm run test:browser-fixturesJSON results and failure screenshots are written to tmp/fixture-browser-artifacts/.
- Run
node --test tests/*.mjs. - Run
npm run test:browser-fixtures. - Run
bash scripts/release_guard.sh. - Run
bash scripts/install_smoke.sh. - Run
bash scripts/browser_smoke.shwith runtime URLs configured. - Manually confirm iPhone settings rows and the folder action sheet are artifact-free.