Skip to content

Desktop testing: enforce session input policy - #4468

Merged
Jason Morse (JasonVMo) merged 10 commits into
mainfrom
user/jasonvmo/input-selection-3
Nov 8, 2026
Merged

Jason Morse (JasonVMo) merged 10 commits into
mainfrom
user/jasonvmo/input-selection-3

Conversation

@JasonVMo

@JasonVMo Jason Morse (JasonVMo) commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Platforms Impacted

  • iOS
  • macOS
  • win32 (Office)
  • windows
  • android

Description of changes

Builds on merged #4466 and now targets main.

  • Enforce immutable accessible, physical, or compatibility input policy per WebDriver session, including raw routes and agent actions.
  • Record input-mechanism receipts and attribute them to declared Jasmine and Storybook cases.
  • Add strict native clear behavior and named accessibility actions; reject WDIO setValue before its clear step in accessible sessions.
  • Update package and native protocol documentation and add patch changesets.
  • Isolate mocked native-input tests from CI's operator input mask without changing production enforcement.
  • Pin the contract-test proxy to its fixed loopback driver and reject absolute/network-path request targets.

Serialized --input all and managed macOS CI lanes remain follow-up work.

Verification

On main-integrated commit 7475d87c1:

  • Passed: yarn clean-lage-cache && yarn lage buildci (178 tasks).
  • Passed: yarn format, yarn lint, and yarn build in packages/agentic/storybook-desktop.
  • Passed: yarn test wdioRunner --runInBand in Storybook desktop (1 passed, including absolute/network-path rejection).
  • Passed: yarn test --runInBand in Storybook desktop (318 passed, 2 skipped).
  • Passed at e93f977fc, with driver code unchanged since: yarn change:check; desktop-driver yarn format, yarn lint, and yarn build; FURN_DESKTOP_DRIVER_DISABLED_INPUT_FEATURES=keyboard,physicalClick,wheel yarn test NativeDesktopHost.input --runInBand (4 passed; 2 failed before the fixture fix); and FURN_DESKTOP_DRIVER_DISABLED_INPUT_FEATURES=keyboard,physicalClick,wheel yarn test --runInBand (876 passed, 61 skipped).
  • Failed: yarn lage test-links --verbose --grouped on the main-integrated tree, exclusively from GitHub HTTP 504 responses; no 404 or missing local link was reported. Hosted transient failures will be retried after the current run finishes.

Historical native evidence at 9d3e11516: FURN_NATIVE_DRIVER_TEST=1 yarn test --runInBand in desktop-driver passed (894 passed, 43 skipped; ad hoc signing). That is not native qualification of the newer head. Local Windows/Win32 native qualification and stable-signing macOS TCC continuity were not run.

At 7475d87c1, CodeQL (including the separate alert check) passes. All platform and Storybook jobs passed in run 42468751459, including macOS Paper and both Win32 input lanes. Only the link job and its dependent aggregate remain failed. Repeated retries hit GitHub HTTP 504s; the latest failed downloading Ruby before checking links. Monitoring continues at 30-minute intervals, without changing valid links or relaxing checks.

Before After
Input selection relied on host masks and click mode, with no case-level delivery receipts; setValue could clear before a rejected keyboard write. Sessions enforce their requested policy before dispatch, cases report delivered mechanisms, and accessible setValue rejects before clearing.

Pull request checklist

This PR has considered (when applicable):

  • Automated Tests
  • Documentation and examples
  • Keyboard Accessibility
  • Voiceover
  • Internationalization and Right-to-left Layouts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Finish part 1 of the input-lane work started in f5a90cd. Cases declare
how they run with desktopIt, and a run selects the cases that apply to its
input lane, platform and scope and accounts for everything it excludes.

desktop-driver
- Add pure case selection and click-mode resolution, and move the
  requirement preflight and click-mode helpers here.
- Add the authoring/input leaf export so config-loading code can import
  scope helpers from source without the authoring index.

desktop-test
- Report the lane: a lane run is incomplete when it has skipped or
  undeclared-unsupported results, an empty selection or nothing executed.
- Add the Jasmine adapter (desktop-test/jasmine) with desktopIt and
  desktopDescribe, plus config-level test scopes and --input.

storybook-desktop
- Add --input accessible|physical to storybook test, driver and smoke.
  The lane comes from the flag, DESKTOP_INPUT or the attached driver.
- Select cases before they run, resolve declared gaps, assess each
  cohort, and reject direct input calls in declared cases at extraction.
- Fail closed when an accessible lane attaches to a driver that does not
  mask keyboard, physical click and wheel input.

native-core and apps/E2E
- Migrate the native-core Callout and FocusZone tests and
  ButtonV1.spec.win.ts to desktopIt.

Update the package references and add patch changesets.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace remaining component story runtime skips with desktopIt requirements, platform scopes and declared gaps. Carry the Win32 preview fixes from #4431 and split accessible and advisory physical Storybook CI lanes without changing aggregate PR requirements.

Co-authored-by: Srividya Ramaswamy <sriramas@microsoft.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Integrate merged phase 1 (#4464) and the package-version release without rewriting phase 2 history.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolve the runtime contract and update the Win32 preview test for connection epochs and selection sequences.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Bundle size report

Tree-shaken, minified production esbuild bundles with React and React Native runtimes externalized.

Scenario Modules-Mac (Δ) Modules-Win (Δ) Size-Mac (Δ) Size-Win (Δ)
components-button 79 (+1) 80 (+1) 72.78k (-842b) 72.71k (-842b)
components-catalog 228 (+1) 229 (+1) 228.46k (-855b) 228.38k (-855b)
design-themed-root 55 (+4) 56 (+4) 56.26k (+998b) 56.18k (+998b)
design-color-lib 6 (+0) 6 (+0) 6.27k (+0b) 6.27k (+0b)
design-theme-state-legacy-source 49 (+1) 50 (+1) 52.96k (-841b) 52.89k (-841b)
design-legacy-theme 42 (+0) 42 (+0) 39.11k (+0b) 42.91k (+0b)
design-legacy-theme-from-flex 58 (+4) 58 (+4) 60.70k (+824b) 64.51k (+822b)
design-fluent-light-theme 7 (+0) 7 (+0) 18.74k (+0b) 22.59k (+0b)
design-fluent-theme 35 (+0) 35 (+0) 27.46k (+4b) 31.25k (-1b)
design-fluent-hc-theme 32 (+0) 32 (+0) 27.34k (+0b) 31.13k (+0b)
design-flex-theme 29 (-4) 29 (-4) 14.30k (-9.07k) 14.29k (-9.07k)
design-flex-cool-theme 26 (New) 26 (New) 12.51k (New) 12.50k (New)
design-flex-warm-theme 26 (-7) 26 (-7) 12.28k (-11.15k) 12.27k (-11.15k)

The job is advisory: size changes are reported but do not fail the pull request. Bundle or analysis errors still fail.


View bundle-size workflow run

Base automatically changed from user/jasonvmo/input-selection-2 to main November 8, 2026 09:16
@JasonVMo
Jason Morse (JasonVMo) enabled auto-merge (squash) November 8, 2026 09:16
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@JasonVMo
Jason Morse (JasonVMo) merged commit ac20660 into main Nov 8, 2026
61 of 67 checks passed
@JasonVMo
Jason Morse (JasonVMo) deleted the user/jasonvmo/input-selection-3 branch November 8, 2026 21:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants