What does a touch-driven case fail to prove about a flow that also accepts keyboard or pointer input?
answer
- One screen, more than one input path
- Hover and key repeat have no touch twin
- Gesture-only actions have no other route
- Carets behave differently from contacts
- Cover the joints, not a second suite
basics
~20 sOnly that the touch path works. Keyboard and pointer input arrive as different events - hover, secondary click, key repeat, an arrow-key caret - and reach code the touch path never runs, so gesture-only actions stay unexercised.
solid answer
~50 sA touch case proves one delivery path. Driven by an attached physical keyboard or an external pointing device, the same screen receives different events with semantics touch does not have: **hover** with no commitment, a **secondary click**, **key repeat**, arrow-key movement of a text caret, and a cursor that can leave a control mid-interaction. Anything implemented only in a touch handler — a hold-to-reveal menu, a drag-to-reorder, a swipe-only action — has no equivalent on those paths and simply cannot be performed. The answer is not to rerun the suite once per input path. Cover the **joints**: every action reachable *only* by a gesture, every text field where caret and selection behave differently from a contact, and one end-to-end journey a person could plausibly complete without touching the screen. That is a handful of cases, not a second suite.
code
pseudocode · 16 lines# alternative-path cases are a small named group, not a second suite
group "input:non-touch":
case "the sign-in journey completes without a screen contact":
focus_first_field()
type_text("standard-user")
move_focus(NEXT) # traversal by key, no contact
type_text("correct-password")
activate_focused_control()
assert home_screen.is_visible()
case "reordering is reachable without a drag gesture":
# the only touch route is hold-and-drag; assert an alternative exists
open_item_actions(first_row)
choose_action("Move down")
assert item_list.order == [second, first, third]go deeper
Be ready to say that a handheld screen can be driven by more than touch — an attached keyboard, an external pointing device, a voice layer — and that a touch case proves only the touch path.
Explain the capabilities that do not map across paths: hover without commitment, key repeat, a secondary click, caret movement by arrow keys, and multi-point gestures that have no single-cursor equivalent.
Show how you scope the coverage — the gesture-only actions, text entry, and one complete journey on the alternative path rather than a second full suite. Expect to be asked what you do when an action has no non-gesture route at all.
Own the decision about which input paths the product commits to supporting, and make that commitment testable. Without a stated position the suite either over-covers at real cost or leaves entire delivery paths with no evidence behind them.
## One screen, several delivery paths A handheld screen designed for fingers is rarely driven only by fingers. An attached physical keyboard, an external pointing device, a device-owned voice-control layer and a hardware controller can all drive the same application, and each delivers input through a different mechanism with different semantics. A case written for touch exercises exactly one of them. Whatever the others reach — different handlers, different event shapes, different sequences of focus and commitment — has no evidence behind it at all. Voice deserves a specific note: a voice-control layer generally works by activating the control a person names aloud, so a control whose spoken name does not match what it displays is effectively unreachable on that path, however well it responds to a finger. ## What each path can express | Capability | Touch | Attached keyboard | External pointer | |---|---|---|---| | Point at a target without committing | no | no — focus is the nearest thing | yes, as hover | | Secondary action on an item | press and hold | a modifier or dedicated key | secondary click | | Continuous movement of a target | drag with a contact | rarely expressible | drag with a held button | | Repeat an action while held | rarely | key repeat | no | | Precise caret placement in text | contact plus handles | arrow keys with modifiers | click and drag | | Two-point interaction such as pinch | yes | no | usually no | Read that table for the cells that say *no*. Those are the joints. Hover has no touch equivalent, so hover-dependent behaviour gets zero incidental coverage from a touch suite. Multi-point gestures have no keyboard equivalent, so anything behind a pinch is unreachable from a keyboard unless the product offers another route. Key repeat has no touch equivalent, so a control a person is expected to hold down behaves differently on each path. ## The gesture-only trap The commonest and costliest finding here is not a broken case; it is an action with **no route except a gesture**. Archive by dragging the row. Reorder by holding and dragging. Reveal an option by pressing and holding. Each of those is fine as *a* route. As the *only* route it means the action cannot be performed at all by someone driving the screen another way, and no amount of testing on the touch path will surface it. When you find one, write the case anyway. Its assertion is that a non-gesture route exists and works, and it stays red until one does. A case that states an intended behaviour and fails is more useful than no case, because it names the gap where people are already looking. ## Text entry is where the difference bites Text fields are the richest source of path-specific behaviour, and the one most often assumed covered because contacting the field worked: - **Caret placement**: a contact places the caret and handles refine it; a keyboard moves it by arrow keys and modifiers; a pointer clicks and drags a selection. - **Selection**: extending a selection with held modifiers has no direct touch equivalent, and a field that implements only handle-based selection loses it entirely. - **Key repeat**: a held key deletes repeatedly and can outrun a field's validation or its change notifications in a way a series of contacts never does. - **Commit semantics**: a keyboard commonly commits a field with a dedicated key, which may reach a different handler than the on-screen action key. - **Movement between fields**, which touch skips altogether because every field is contacted directly. One case that fills a form on the alternative path and asserts the same result catches most of this at almost no cost. ## Choosing the handful of cases 1. Inventory the actions reachable **only** through a gesture. Every one is a candidate defect before it is a candidate case. 2. Take **one journey end to end** on the alternative path — reach the form, fill it, submit it, land on the result — rather than sprinkling single-step checks that prove nothing about the sequence. 3. Cover **text entry** on the alternative path, for the reasons above. 4. Add a **hover** case only where hover carries product meaning, such as a preview or a reveal, because that behaviour has no other coverage whatsoever. 5. Keep those cases in **their own named group**, so a run on hardware without those inputs skips them with an explicit reason rather than failing for the wrong cause. Typically that is five to ten cases against a suite of hundreds, and it covers what differs between the delivery paths instead of re-proving everything they share. ## What this is not This is a coverage question about input delivery, and it stops short of two neighbouring disciplines. Whether a control can be operated at all without a pointing device, and how an assistive layer describes and announces a screen to someone who cannot see it, are separate concerns with their own criteria and their own cases. Borrow their vocabulary where it helps, but do not fold their audits into a case whose job is narrower: given that the product accepts more than one input path, which cases exercise the paths a touch case never touches.
- The product's only route to reorder a list is hold-and-drag. Is that a case or a defect?Write the case and raise the defect. On a flow the product claims to support through more than one input path, an action reachable only by a gesture is unperformable for anyone on the other paths. The case's value is that it states the expectation — a non-gesture route exists — and stays red until there is one.
- Why not simply run the whole suite a second time through a different input path?Because most cases would prove the same thing twice at full cost. Nearly every step is activate-a-control, which all paths perform; the differences concentrate in a few places, namely gesture-only actions, hover-dependent behaviour and text entry. A handful of targeted cases plus one end-to-end journey covers the difference for a fraction of the run time.
- How would you keep those cases from failing on hardware that has no keyboard or pointer attached?Put them in a named group with an explicit precondition, so a run without those inputs skips the group and records why. A skip that names its reason is honest reporting; a case that fails because the input device is absent teaches the team to ignore red, which is far more expensive.
saying these in an interview costs you the question
- Assumes any control a finger reaches a pointer reaches too
- Reruns the entire suite once per input path
- Treats hover as equivalent to a brief contact
- Ignores text entry because contacting the field worked
- Calls a gesture-only action covered because touch passes