Resource
Device QA
Run this checklist against a production build and record the device, OS and browser version, display mode, date, tester, and any linked issue.
Required surfaces
- Recent Face ID iPhone in Safari.
- The same iPhone with the docs app installed to the Home Screen.
- Android Chrome on a current device or emulator.
- The same Android surface with the PWA installed.
- Desktop Chrome, Safari, and Firefox at a narrow viewport.
App frame and safe areas
- Top navigation clears the status and notch region in portrait and landscape.
- The bottom tab bar clears the home indicator and remains reachable.
- Content scrolls between fixed application chrome without moving the document unexpectedly.
- Browser and standalone heights both recover after rotation.
- No component assumes a named device or hard-coded phone dimension.
Overlays
- BottomSheet opens from touch and keyboard activation.
- Backdrop and Escape dismiss once, then focus returns to the trigger.
- Slow and fast downward swipes feel controlled without scrolling the page behind the sheet.
- Long sheet content scrolls without starting a dismissal gesture unexpectedly.
- ResponsiveDialog uses a sheet on narrow screens and a centered dialog on wide screens.
- Resizing an open ResponsiveDialog leaves one focus trap and preserves its open state.
- ActionSheet groups are clear, destructive actions are distinct, and Cancel is easy to reach.
Software keyboard
- Focus every field in the mobile form and BottomSheet form.
- The focused input remains visible when the keyboard opens.
- Pinned actions clear both the keyboard and bottom safe area.
- Closing the keyboard restores the layout without a jump or permanent blank space.
- Repeat the checks after rotating with a field focused.
Installation, updates, and lifecycle
- The install prompt appears only after the browser reports availability and the user chooses to install.
- Accepting, dismissing, and completing installation each leave the interface in the correct state.
- A waiting service worker displays one update prompt and never reloads without an explicit choice.
- Applying an update activates the waiting worker; deferring it keeps the current session usable.
- Offline feedback appears and clears as connectivity changes without blocking application content.
- Backgrounding and restoring the app do not duplicate listeners, prompts, or network work.
- Unsupported browsers and unregistered service workers fail quietly with an accurate state.
Accessibility and motion
- Tab and Shift+Tab remain inside open overlays.
- Titles and descriptions are announced for every overlay.
- Important controls have a visible focus ring and at least a 44px touch target.
- VoiceOver and TalkBack identify the active tab and every icon-only control.
- Reduce Motion removes nonessential transitions without hiding state changes.