Skip to content

Latest commit

 

History

History
70 lines (47 loc) · 13.7 KB

File metadata and controls

70 lines (47 loc) · 13.7 KB

Physical development-preview smoke test

Record the app commit, Switchify PC release, phone model/OS, and desktop platform for each run. Never paste pairing credentials or typed personal content into the record.

Layout edit mode checks

Start a connected remote in normal mode. Confirm section headings, cards, and remote controls are present while section edit buttons and editing-only restrictions are absent. Toggle Edit layout beside Surface, verify selected state/Done editing and section edit actions, then use Done editing to hide them. Scroll and confirm the toggle stays with the pinned selector. Repeat in portrait/landscape and large text on phone/tablet widths, checking wrapping and 48-point targets with TalkBack, VoiceOver and switch navigation. Forwarding and disconnected/recovering screens must omit the toggle. Reconnect or change PCs and confirm edit mode starts off.

Toggle without changing/sending live or draft typing content, executing PC input, or modifying saved layouts/preferences. Verify section editors retain their Save/Cancel/Reset behavior and focus return while the mode stays enabled. During repeat, drag, held modifiers or live Enter delivery, turn the mode on and confirm section edit actions remain disabled with explanations; Stop movement and recovery stay available.

Searchable action picker checks

Enable Edit layout, open a section editor, then tap an empty cell and confirm Choose action identifies the destination. Search mixed-case names, categories, and keywords; distinguish pointer movement from arrow keys. Select an unsupported action, confirm its explanation, immediate assignment and focus return, then Save and verify the runtime button stays disabled. Confirm no commands execute during selection. Test no matches, all actions placed, Close, scrim, Android Back and accessibility escape. A move-mode destination must move the button without opening the picker.

With the software keyboard open, both orientations, and 100%, 150%, and 200% text, scroll to all results and Close. Check TalkBack/VoiceOver focus containment and assignment announcements, Switch Access/Switch Control navigation, and focus restoration to the filled cell. Place monitor, movement/scroll, modifier, window and key actions on another surface; verify current capabilities/labels after reconnect, normal key commands outside live Typing, live Enter submission, and Stop movement on Typing and Window. Draft actions placed in PC keys must be disabled in live mode. Preserve active user typing/layout drafts by using an isolated simulator or a separate test installation.

Section layout editor checks

On Android and iOS, edit each visible section of Mouse, Typing, and Window independently at 100%, 150%, and 200% text, in both themes and orientations. Verify fixed section boundaries: Movement, Clicks and scroll, Pointer speed, monitors; Draft actions and PC keys; Modifiers, Windows, Shortcuts, monitors. Opening and saving untouched defaults must not change their responsive grids.

Drag buttons to empty and occupied cells. Drag whole rows and columns forwards and backwards using the handles, including tracks with empty cells. Check insertion indicators and both edge-scroll directions. Release outside, cancel, rotate, resize text, and background during a drag; none may commit the move. Insert rows and columns before/after and at the end, confirm occupied deletion, restore removed buttons, and verify already-placed actions are excluded while actions from other surfaces are offered. Draft actions must be absent on Mouse and Window.

Save one section, restart, and verify its exact grid plus all neighboring sections, cards, headings, help text and dynamic status. Reset restores only that section after Save; Cancel preserves its saved layout. Test saved geometry and horizontal scrolling on narrow screens. Hide/show Draft actions by changing typing mode; reconnect with fewer capabilities and return to the original PC; hidden section layouts must survive.

Repeat all editing without gestures using TalkBack, VoiceOver, Switch Access, and Switch Control. Confirm modal containment, descriptive cell/track labels, logical scanning, destination announcements, focus return, complete labels, and 48-point targets. Confirm editing sends no PC input, retains live typing text, and is unavailable during active repeat, drag, modifiers, or Enter delivery. Stop movement and typing recovery remain outside customization.

Run the matrix on a physical Android phone and iPhone against current Switchify PC on both Windows and macOS:

  1. Install a native development build; confirm Expo Go is not offered as a supported path.
    • On a fresh install, confirm Meet Switchify Remote appears before any Bluetooth prompt. Open Get Switchify PC, move forward and back, choose Not now, and confirm the idle PCs screen appears without a prompt. Restart and confirm setup does not reappear.
    • Repeat with an upgrade that already has a saved PC. Confirm setup appears once while the pairing remains saved, then choose Allow Bluetooth and confirm discovery begins only after the native prompt is handled.
  2. Clear app data and repeat setup. Choose Allow Bluetooth, deny access once, verify the platform-appropriate explanation, then grant access from Settings and discover the desktop. Also test Bluetooth off, unsupported hardware where available, and a forced scan failure.
  3. Pair and verify the six-digit code on both devices. Reject a second request and confirm the mobile error is sanitized.
  4. Disconnect and reconnect from Saved PCs, select and clear a default PC, then press Unpair. Confirm Cancel, Android Back, and outside dismissal preserve the pairing. Confirm Unpair removes it and re-pairing is required.
    • While Remote is idle and connected, quit Switchify PC, use its Disconnect action, disable Bluetooth, and move the phone out of range. Confirm connected controls disappear within nine seconds, attempt 1 is announced once, and the existing automatic retries either restore the correct PC or end in the sanitized failure state.
    • Repeat while sending a non-sensitive fixture command. Confirm a failed native write shows reconnection immediately, while one deliberately dropped response remains connected when the active health check succeeds.
    • Confirm a new pairing shows the phone model rather than a generic Remote name. Change Remote name while connected and confirm both desktop platforms update without re-pairing. Change it while offline, reconnect, and confirm the new name appears. Restart the PC application and confirm the name persists.
    • On the OPD2403 against Windows, complete at least 20 connections and reconnects. Confirm controls become ready every time. Simulate one dropped pointer-profile response and confirm the app shows "Restoring controls" before controls appear without another reconnect.
  5. Exercise eight-way movement, all clicks, both scroll directions, drag cleanup, speed limits, and monitor movement. Start movement and scroll repeats, then stop each with Stop movement, another Remote control, and an Android physical switch. Repeat with a held navigation key: confirm it repeats at the desktop's configured cadence after the initial delay, that the control is labelled Stop repeating, and that the same three stops end it. Confirm a key that cannot repeat, such as Escape, still reaches the PC when it stops a repeat. Repeat after backgrounding, reconnecting, and replacing the active Remote session. Confirm the PC stops before the Android switch-capture state clears.
  6. Exercise live typing, backspace/replacement, stream recovery, draft persistence/send/clear, and every displayed PC key using non-sensitive fixture text. Send repeated live lines with both software Return and the visible Enter control; confirm each sends one Enter, clears only after success, and restores the text field and software keyboard. Simulate a failed Enter and confirm the text remains focused for Retry Enter without duplicate text or backspaces.
  7. Exercise held modifiers, shortcuts, app switching, task view, desktop, minimize, maximize, and close. Confirm labels follow Windows/macOS conventions.
    • On Android, open Forwarding and confirm profile choices remain available while stopped. Confirm mapped switches and the overflow notice appear only after forwarding starts and disappear after manual, hold-to-stop, configuration-change, and inactivity stops.
  8. With VoiceOver/TalkBack and Switch Control/Switch Access, traverse every destination at maximum text size in portrait and landscape. Confirm selected, disabled, busy, error, and pairing states are announced.
    • Test a 320–428 point phone at 100%, 150%, and 200% text in light and dark appearance. Confirm headers stack, labels remain complete, action grids reduce columns, and the last control scrolls clear of the tab bar and system gesture area. On Android, repeat with gesture and three-button navigation and confirm PCs, Remote, and Settings are never clipped. On iOS, repeat with the home indicator visible.
    • Rename a paired PC to a long fixture name. Confirm the Remote status, PC card, and Unpair control wrap without truncation.
    • Open each Surface, Opening surface, and Hold to stop selector. Confirm only the selector is a scan stop while closed; while open, only the modal options and Close are scanned. Confirm selection, Close, Android back, scrim dismissal, and VoiceOver escape restore focus to the selector.
    • Scroll Mouse, Typing, Window, and Android Forwarding past the Remote title. Confirm the Surface selector pins below the top safe area, the controls blur only while passing behind it, and the fixed PC switcher remains above the tab bar. Confirm pinning adds no scan stop, focus move, or announcement.
    • On each connected control screen, confirm Scroll to top appears only after the selector pins, remains above the PC switcher at phone and tablet widths, and leaves the last control unobscured. Activate it twice quickly and confirm only one return occurs. Confirm it announces "Top of Remote" once, disappears at the top, cancels cleanly when the user interrupts the scroll, and jumps without animation under Reduce Motion. Confirm it is absent from disconnected, recovering, and unavailable states.
    • On Android 12 or later, confirm the pinned backdrop visibly blurs the moving controls without slowing pointer repeat, typing, or Forwarding. On Android 11, confirm the themed fallback remains legible and responsive. On iOS, enable Reduce Transparency and confirm the pinned backdrop becomes opaque without changing its size or focus order.
    • Repeat on a tablet at normal and maximum text size. Confirm two-column and two-pane layouts collapse when enlarged text needs the width.
  9. While repeat, drag, modifiers, and a text stream are active, background and terminate the app, disconnect Bluetooth, and quit Switchify PC. Confirm the desktop returns to neutral input state each time.
  10. Export diagnostics and verify that no typed content, token, authentication proof, nonce, or verification code appears.

The development-preview PR remains draft until all four platform pairings are recorded successfully.

Movement width regression

On Android and iOS, check a saved three-column Movement grid at large text in portrait and landscape. When Mouse sections stack, Movement must use the available content width so its last column is visible when the grid fits. Narrow screens must still allow horizontal scrolling without changing saved rows, columns, or actions. At normal text size on wide screens, retain the two-pane arrangement.

Fit-to-width grids and icon editing toggle

The edit toggle is icon-only: a pencil labeled Edit layout, then a checkmark labeled Done editing with selected state. It stays beside Surface on one toolbar row; selector text may wrap vertically. Section edit actions still appear only in edit mode.

Saved grids and editor cells divide the available viewport width across the saved columns. Compact numbered row/column handles retain full accessible position labels and drag/tap hints. Labels scale and wrap into taller rows; icons and selected indicators stack above/below text. All targets remain at least 48 points. Horizontal scrolling is reserved for viewports too small for those targets, with an overflow indicator. No saved geometry changes.

Verify three-column/four-row Movement layouts including Scroll up, Scroll down, and Enter on 320–430-point phone widths at 100%, 150%, and 200% text, portrait/landscape, and iOS maximum Dynamic Type. Check all columns, numbered handles, drag destinations, tap moves, and bottom editor actions; the right column must not clip when minimum targets fit. Test the genuine overflow fallback below that threshold. Cancel any drag on rotation/text/viewport changes.

Remote scanning

With a compatible Windows or macOS PC, assign remote slots in PC settings and select Switchify scanning in Remote Forwarding. Start with one Select switch in automatic mode, then test three slots in manual mode. Check row escape, icon menus, scroll repetition, confirmed drag and shared colour/timing. Verify local mapped keys do nothing while Remote owns scanning, but PC Escape stops it. Check hold action labels on PC. Confirm cancellation and switch replacement never click on release and keep the session running; confirm holds shorter than the Forwarding hold-to-stop deliver their release and the PC offers hold actions, and that reaching the hold-to-stop stops forwarding without clicking; confirm no idle stop occurs while scanning waits; confirm navigation away, backgrounding and disconnect never click on release and always release an active drag. Changing PC assignments applies to a live session; reload profiles only to refresh the labels shown in Remote. Reconnect must require explicit Start. Use a disposable target application for real-input checks; keep these checks separate from automated tests.