The Complete QA Guide for Remote and D-Pad Navigation
A route-based QA system for initial focus, directional movement, region changes, overlays, async updates, Back behavior, and exact origin restoration.
In short: Model every TV screen as a focus graph, then test initial focus, each directional edge, region transitions, overlays, dynamic updates, Back, and restoration. Record the exact start target, key, expected destination, actual destination, and state. Randomly pressing arrows can reveal discomfort, but it cannot prove navigation quality.
Remote navigation is a contract between visual geometry and application state. A target can look nearby yet be unreachable; a route can work until a filter removes the remembered card; Back can close a screen but return focus to nowhere.
Inventory screens, regions, and focusable targets
Divide each screen into regions: sidebar, header, filters, Continue Watching, results grid, detail panel, action row, episode list, recommendations, and dialog. For every region, record:
- focusable target types;
- intended entry and exit anchors;
- scroll ownership;
- behavior at each directional edge;
- whether targets can appear, disappear, or become disabled;
- the element that should regain focus after a temporary layer closes.
This inventory prevents the spatial engine from deciding every route from geometry alone. It also exposes hidden controls that are technically focusable but visually absent.
Verify initial focus in every entry state
Test fresh page entry, deep link, restored session, return from detail, return from a dialog, empty results, and error. Initial focus should be visible, safe, actionable, and appropriate to the viewer's likely task. It should not land on a destructive action, disabled target, skeleton card, or off-screen node.
Use the decision method in choosing initial TV focus and record why the selected target wins over alternatives.
Test every directional edge once
For each focusable target, press Up, Down, Left, and Right separately from a known state. Record the expected and actual destination. Do not hold the key during baseline testing, because key repeat can hide an incorrect intermediate hop.
| Start | Input | Expected | Actual | State | Result |
|---|---|---|---|---|---|
| Last filter | Down | Result-band anchor | Target | Results loaded | Pass/fail |
| First grid card | Left | Sidebar entry | Target | Default | Pass/fail |
| Dialog cancel | Back | Opener | Target | Modal open | Pass/fail |
After single-step coverage, repeat fast presses and reversals to detect queued animation, skipped targets, and stale geometry.
Define edge behavior instead of accepting accidents
At the end of a row or grid, the design may stop, wrap, enter another region, or reveal more content. Each option can be valid in context, but the result must match visual expectation and be consistent. The grid-edge decision guide helps document those rules.
Test incomplete final rows, one-item rows, partially visible cards, and content added after loading. Verify that a boundary never sends focus to an unrelated distant control merely because its rectangle is mathematically closest.
Cover transitions between regions
Region changes cause many perceived freezes. Test sidebar to content and back, filters to result header, grid to detail panel, action row to episodes, one recommendation row to the next, and header to the first meaningful content.
Each transition needs an explicit anchor and a reverse route. If Right enters results from a filter, Left should return to a sensible filter or region memory rather than trap the viewer. When a region scrolls, ensure the destination becomes fully visible before another input is processed.
Test overlays as temporary focus graphs
Open dropdowns, keyboards, confirmation dialogs, variant pickers, and error dialogs from every supported origin. Verify initial focus, containment, directional order, scroll, activation, cancellation with Back, and restoration to the opener.
An intentional modal contains focus; an accidental trap has no valid completion or cancellation route. Also test what happens if the opener disappears while the overlay is open.
Repeat routes after data and layout mutations
Run the graph after loading completes, a filter changes results, a favorite toggles, an item becomes unavailable, progress updates, a row expands, or an error resolves. These mutations often invalidate cached rectangles or element references.
The expected fallback should be deterministic: exact origin when it remains valid, otherwise the nearest meaningful sibling or stable region anchor. Never reset to the page's first target without a documented reason.
Verify Back as layered navigation
Back should normally close the current temporary layer, leave a detail level, or return to the previous page state in that order. It should preserve query, filters, scroll, row offset, and originating item when those states still apply. The focus restoration guide turns that expectation into an origin token and fallback rule.
Test Back from a focused variant, an episode, a scrolled recommendation row, a keyboard, and each dialog action. Also test repeated Back presses slowly so the first transition completes before the next begins.
Test disabled, empty, and failure states
Disabled controls must not become unexplained dead ends. Empty regions need a reachable message and valid next action. Errors must leave Back or recovery available. Loading surfaces must not steal focus, and completion must not reset a valid target.
Capture evidence that engineering can replay
For every failure, provide device and build, screen and data state, start target, exact key sequence, expected target, actual target, focus screenshot or recording, and reproducibility. A focus overlay or target identifier is valuable when available, but it does not replace the visible outcome.
Maintain a route ledger by journey and rerun high-risk edges after changes to layout, virtualization, data loading, or navigation code. Platform guidance such as the Android TV quality criteria should be combined with the product's documented navigation contract.
Common mistakes and limitations
- Testing only the happy path from the first card.
- Holding an arrow key instead of verifying individual hops.
- Ignoring reverse routes between regions.
- Treating mouse clicks as remote evidence.
- Skipping Back and focus restoration.
- Testing before data loads but not after it mutates.
- Reporting “focus freezes” without start state and key sequence.
Frequently asked questions
Must every focusable target have four neighbours?
No. A direction may intentionally stop at a boundary. The important requirement is that the boundary is visible, consistent, and does not trap the overall task.
Should spatial navigation always follow nearest geometry?
No. Geometry is useful within regular regions, but explicit routes are often needed between regions, around overlays, and after dynamic layout changes.
Can automated tests replace remote testing?
They can protect deterministic routes and state restoration, but representative hardware and human review remain necessary for visible focus, viewing-distance clarity, remote timing, and display behavior.
Your next step
Sources
- Android TV App Quality Guidelines
- W3C: Understanding Focus Order
- W3C: Understanding Focus Visible
- WAI-ARIA APG: Developing a Keyboard Interface
- Norva Features