TESTING: sections 14 (overlay completion) + 15 (child frame completion) README: patch series listing, overlay/child frame architecture, textDidChange flag, focus restoration, new limitations
145 lines
6.1 KiB
Plaintext
145 lines
6.1 KiB
Plaintext
VoiceOver Accessibility Patch Series — Testing Evidence
|
|
=======================================================
|
|
|
|
Tester: Martin Sukany
|
|
Date: 2026-02-28
|
|
|
|
Environment
|
|
-----------
|
|
Host: CM2D4G-A9635005 (macOS)
|
|
Base: emacs master (upstream HEAD at time of test)
|
|
|
|
1. Patch Application
|
|
--------------------
|
|
PASS — All 8 patches applied cleanly via git-am:
|
|
0001 ns: add accessibility base classes and text extraction
|
|
0002 ns: implement buffer accessibility element (core protocol)
|
|
0003 ns: add buffer notification dispatch and mode-line element
|
|
0004 ns: add interactive span elements for Tab navigation
|
|
0005 ns: integrate accessibility with EmacsView and redisplay
|
|
0006 doc: add VoiceOver accessibility section to macOS appendix
|
|
0007 ns: announce overlay completion candidates for VoiceOver
|
|
0008 ns: announce child frame completion candidates for VoiceOver
|
|
|
|
No conflicts, no warnings.
|
|
|
|
2. Build
|
|
--------
|
|
PASS — Full NS (Cocoa) build completed successfully:
|
|
./autogen.sh OK
|
|
./configure --with-ns OK
|
|
make -j12 OK
|
|
make install OK
|
|
|
|
No warnings related to accessibility code.
|
|
|
|
3. Basic Launch
|
|
---------------
|
|
PASS — emacs -Q starts without errors or warnings.
|
|
|
|
4. Zoom Cursor Tracking
|
|
------------------------
|
|
PASS — UAZoomChangeFocus integration working correctly:
|
|
- Typing in buffer: cursor tracked, Zoom follows OK
|
|
- M-x: Zoom moves focus to minibuffer OK
|
|
- M-x list- TAB M-v: switches to *Completions* buffer,
|
|
TAB cycles focus across completion candidates OK
|
|
- C-x 2, C-x 2, C-x 3 (multiple splits), then C-x o
|
|
cycling: Zoom focus correctly follows between windows OK
|
|
|
|
5. Documentation
|
|
----------------
|
|
PASS — Texinfo node accessible via C-h i g (emacs)VoiceOver Accessibility.
|
|
Node correctly linked from macOS appendix menu.
|
|
|
|
6. VoiceOver — Basic Navigation
|
|
--------------------------------
|
|
PASS — VoiceOver active (Cmd+F5):
|
|
- Buffer name announced correctly on focus OK
|
|
- Typing: each character announced as typed OK
|
|
- Arrow keys / C-n / C-p: line-by-line navigation,
|
|
current line announced OK
|
|
- Word navigation: reads full current word OK
|
|
- M-x: switches to minibuffer, announces "minibuffer" OK
|
|
|
|
7. VoiceOver — Completions
|
|
---------------------------
|
|
PASS — Completion buffer interaction:
|
|
- M-x list-* then M-v to switch to *Completions*:
|
|
buffer content read correctly OK
|
|
- TAB cycling in *Completions*: announces only the
|
|
current candidate (interactive span focus) OK
|
|
|
|
8. VoiceOver — Window Switching
|
|
--------------------------------
|
|
PASS — Multiple windows (C-x 2, C-x 3, C-x o cycling):
|
|
- Announces current buffer name and content on switch OK
|
|
- Begins reading buffer content automatically OK
|
|
- User action (typing, navigation) correctly interrupts
|
|
reading and announces new action instead OK
|
|
- Notification priority/preemption working as designed OK
|
|
|
|
9. VoiceOver — Full Buffer Reading
|
|
-----------------------------------
|
|
PASS — VO+A reads entire buffer including off-screen content.
|
|
- Cursor synchronization between Emacs and VoiceOver
|
|
virtual cursor working correctly OK
|
|
|
|
10. VoiceOver — Accessibility Tree
|
|
-----------------------------------
|
|
PASS — Virtual element tree dynamically maintained:
|
|
- New AX element created for each open buffer OK
|
|
- Minibuffer element present and readable OK
|
|
- Mode-line elements present per buffer, readable via
|
|
VoiceOver virtual navigation OK
|
|
- Tree correctly updates when windows are split/closed OK
|
|
|
|
11. VoiceOver — Selection
|
|
--------------------------
|
|
PASS — C-SPC + cursor movement:
|
|
- Announces "selected" with region feedback OK
|
|
|
|
12. VoiceOver — Org-mode Invisible Text
|
|
----------------------------------------
|
|
PASS — Org-mode folding (Tab on headings):
|
|
- Folded: hidden text NOT read by VoiceOver OK
|
|
- Unfolded: full content read correctly OK
|
|
- Invisible text filtering (TEXT_PROP_MEANS_INVISIBLE)
|
|
working as designed OK
|
|
|
|
13. ERT — ns-accessibility-enabled Variable
|
|
--------------------------------------------
|
|
PASS — Ran 1 test, 1 result as expected:
|
|
- ns-accessibility-enabled is bound OK
|
|
- ns-accessibility-enabled defaults to t OK
|
|
(ERT 1/1 passed, 2026-02-28 11:45:55 CET)
|
|
|
|
14. VoiceOver — Overlay Completion (Patch 0007)
|
|
------------------------------------------------
|
|
PASS — Vertico minibuffer overlay completion:
|
|
- Vertico candidates announced on C-n / C-p navigation OK
|
|
- Selected candidate face detected (vertico-current) OK
|
|
- Deduplication: same candidate not re-announced OK
|
|
- Zoom tracks selected candidate in minibuffer
|
|
(overlayZoomRect / overlayZoomActive lifecycle) OK
|
|
- overlayZoomActive cleared on text input OK
|
|
- hl-line-mode compatibility: cursor movement in dired
|
|
and read-only buffers correctly announces lines
|
|
(textDidChange flag decouples modiff branch from
|
|
cursor-move branch) OK
|
|
|
|
15. VoiceOver — Child Frame Completion (Patch 0008)
|
|
----------------------------------------------------
|
|
PASS — Corfu child frame completion:
|
|
- Corfu popup candidates announced via VoiceOver OK
|
|
- Selected candidate face detected (corfu-current) OK
|
|
- Zoom tracks selected candidate in child frame
|
|
(direct UAZoomChangeFocus) OK
|
|
- No Emacs freeze (re-entrance guard before child frame
|
|
dispatch, buffer switch with unbind_to on all paths) OK
|
|
- Focus restored to parent buffer after corfu closes
|
|
(childFrameCompletionActive flag + FOR_EACH_FRAME
|
|
visibility check + FocusedUIElementChanged) OK
|
|
- Non-completion child frames skipped (10KB buffer limit) OK
|
|
- specpdl_ref type used correctly (not ptrdiff_t) OK
|