Skip to content

Fix native Space scrolling in focus oracle#2073

Open
chubes4 wants to merge 1 commit into
mainfrom
fix/2068-native-space-focus-scroll
Open

Fix native Space scrolling in focus oracle#2073
chubes4 wants to merge 1 commit into
mainfrom
fix/2068-native-space-focus-scroll

Conversation

@chubes4

@chubes4 chubes4 commented Jul 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • distinguish Chromium's native Space page-down behavior from application-caused focused-element concealment
  • suppress browser-focused-element-hidden only when bounded transition evidence proves an uncanceled generated document Space action retained focus on the same initially visible link and the element geometry moved exactly with the viewport
  • retain serious findings for focus loss, inert/hidden content, application movement, explicit script scrolling, and genuinely offscreen targets

Browser Semantic

On a focused normal link, Chromium does not activate the link for Space. It scrolls the document down by roughly one viewport while retaining focus, which moves the link's viewport-relative box offscreen. Buttons instead activate on Space without page scrolling, and links activate on Enter.

Suppression Predicate

The collector records bounded key-transition context only for canonical generated document keyboard actions ending in Space. Suppression requires all of the following:

  • canonical generated action identity with no descriptor or selector target
  • completed, uncanceled Space key dispatch with no synchronous application scroll
  • a visible, rendered, non-inert link at Space keydown
  • the same active element after stabilization
  • positive vertical viewport movement with no horizontal movement
  • unchanged target dimensions and target box movement equal and opposite to the viewport scroll delta
  • a still-rendered, non-inert target after the action

A bounded scan diagnostic records the action ID, normalized locator, scroll delta, and active-element continuity. Finding fingerprints remain unchanged because suppression context is not fingerprint input. Replay uses the same action instrumentation and predicate, including unrecorded minimization scans.

False-Negative Safeguards

  • Enter link activation and button Space activation do not enter the suppression path.
  • Synchronous script scrolling marks the transition as application-produced.
  • Opacity concealment, geometry changes, inert transitions, and focus loss fail the predicate and remain serious findings.
  • Existing dialog focus, tab order, focus restoration, inaccessible target, capability, and artifact-bound behavior remains covered by the focused and adversarial suites.

Tests

Passing:

  • npm run build
  • npm run test:browser-accessibility-oracles (32 tests)
  • npm run test:adversarial-runtime (16 tests)
  • npm run test:redaction
  • npm run test:runtime-command-artifact-bounds
  • npm run test:schema-parity
  • npm run test:runtime-contract-package-exports

Coverage includes desktop 1280x900 and mobile 390x844 Tab+Space behavior, replay, Enter activation, button Space activation, application concealment, inert focus loss, explicit script scrolling, and genuinely offscreen focus.

Unrelated Baselines

  • npm run test:public-api-contract fails because the expected dist module list omits the already-exported browser-accessibility.js; this PR does not modify the export or contract test files.
  • npm run check passes production-boundary enforcement and the initial smoke commands, then stops at the pre-existing command-registry-smoke assertion that wordpress.collect-workload-result should mention an output schema ID; this PR does not modify command registry files.

Fixes #2068

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.

Focus oracle flags native Space scrolling as hidden-focus failure

1 participant