Infrastructure: Fix native accessibility-state projection gaps on macOS and Win32
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 30/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- react-native, typescript
- Lĩnh vực
- accessibility, mobile-dev, testing
Hướng nghiên cứu
Start with the Button and TabList native-state cases in button.stories.tsx and tablist.stories.tsx, then review the merged focus plan and PR #4314 evidence. Reproduce the AX/UIA tree attributes on supported macOS Fabric and Win32 Paper runtimes before identifying the owning component or renderer. Done means native state and updates match the public contract, with truthful driver normalization, passing native assertions, a Win32 Input regression, and updated evidence; link any upstream blocker.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Goal
Resolve the native accessibility-state projection gaps documented by the delivered assertion/focus work, rather than treating behavior tests as native state conformance. Parent: #4275. Bug follow-up to #4255 and PR #4314.
Observed state - 2026-10-01
Current story callbacks explicitly skip two macOS native-state assertions:
- Button disabled state: the source records that RNmacOS 0.81.9 Fabric does not project
accessibilityState.disabledto AXEnabled. - TabList selected/disabled state: the source records missing AXSelected/AXEnabled projection.
The merged focus plan separately records Win32 TextInput announcing UIA IsEnabled=true when configured noneditable, nonfocusable, and accessibility-disabled.
These are native observation gaps, distinct from the verified focus exclusion, callback/selection ownership, and activation guards. This audit verified the retained skip/source evidence; it did not requalify those observations against a newer native runtime.
Reproduction
On the current supported native runtimes, inspect the real AX/UIA tree for the Button/TabList focus fixtures and disabled Input fixture, then compare enabled/selected state before and after prop/state changes. Record resolved fork versions, native tree attributes, helper identity, and actual application behavior.
Use the isolated Button and TabList native-state WDIO cases; their current macOS skip text is evidence to replace, not permission to fake the expected attributes in JavaScript.
Acceptance criteria
- Reproduce or disprove each documented gap on current macOS Fabric/Win32 Paper, with explicit native attribute and runtime evidence.
- Identify the owning component/renderer/upstream transport and implement or consume the correct native fix; preserve the intended distinction between editability, focusability, and disabled semantics.
- Native AXEnabled/AXSelected/UIA state reflects the declared public contract, including updates and selected-to-unselected transitions.
- Driver normalization remains truthful: unsupported native state is explicit, never synthesized from component-owned status text or defaulted to
false. - Remove the two macOS skips only after their real native assertions pass, and add an enabled-state regression for the affected Win32 Input contract.
- Physical activation, UIA Toggle/SelectionItem.Select, AX custom-action dispatch, and screen-reader behavior remain separately identified; state reads do not claim those actions were qualified.
- Update the focus/accessibility evidence and relevant tests/docs/changesets. If an upstream fix is required, link its issue/change and keep the blocked coverage explicit.
Evidence
- Button native disabled-state case
- TabList native selected/disabled-state case
- Executed evidence and remaining renderer limits
- Coordinate #4343/#4349 and #4214, without closing native-state coverage using React prop tests.
- Ngôn ngữ chính
- TypeScript
- Star
- 1.4k
- Fork
- 179
- Merge trung bình
- 2 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 30
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/fluentui-react-native
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
microsoft/fluentui-react-native#4174 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
microsoft/fluentui-react-native#4343 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
microsoft/fluentui-react-native#4344 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
microsoft/fluentui-react-native#4345 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
microsoft/fluentui-react-native#4347 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của microsoft/fluentui-react-native
Issue tương tự
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] remember() with special characters in namespace hangs until timeout instead of returning 400Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
MystenLabs/MemWal#1133 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug user-priority/P2
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Effect-TS/effect#8881 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày