Files
astrolabe/docs/manual-verification.md
T

2.4 KiB

Manual Verification Checklist

A standing memo, not a milestone. These are the things automated tests can't cover — they need a real browser, a real install, or a human eye. Run the relevant sections before a release, or after any change to the app shell, PWA config, routing, theming, or focus/keyboard behavior. Tests stay green ≠ these pass.

Offline & installable (PWA)

  • First load online, then go offline (DevTools → Network → Offline) and reload — the app boots, fonts render (no system-font fallback), a previously-opened snippet still renders.
  • Install as a standalone app (desktop install button / Android "Add to Home screen") — it installs, launches in its own window, and shows the astrolabe icon (not a generic glyph).
  • Android adaptive icon (maskable) fills the OS shape without clipping the mark.
  • Service-worker update flow: ship a new build, reload — the update-available prompt appears and applying it loads the new version (registerType: 'prompt').
  • iOS home-screen icon — known residual: the manifest ships SVG only; iOS wants a PNG apple-touch-icon, so the iOS home-screen icon may fall back.

Keyboard & accessibility

  • Full keyboard-only run-through: create/select/edit a snippet, open and dismiss each modal, drive the pane toggle strip and both resize handles, reach Datasets.
  • Focus is never orphaned or trapped: modals trap focus and return it to the opener on close; hiding a pane from the strip keeps focus on the toggle.
  • Visible focus ring on every interactive control, in both themes.
  • Text and UI contrast pass AA in light and dark.

Routing & view-state

  • Reload restores the view from the URL hash (#snippet-<id>, #datasets/…).
  • Browser Back/Forward moves through view-state as expected.

Theming

  • Light⇄dark flip repaints the whole app — chrome, Monaco, and the chart.
  • No placeholder styling or raw hexes leak through on any surface.

Reduced motion & feedback

  • With prefers-reduced-motion, toasts and transitions honor it (no large motion).
  • Toasts stack, auto-dismiss, and fade as specified; the live-preview busy indicator appears for slow (>~1s) renders and clears after.

Visual sweep of the M6 surfaces

  • Library search / sort / empty states, the storage monitor, About & Donate modals, and the busy indicator all look deliberate and behave per spec.