AXTerminator Element Search Implementation Summary¶
Completed Implementation¶
Core Functions Implemented¶
1. search_element¶
Full tree search supporting multiple query formats: - Simple text: "Save" - matches title/label/identifier - Role query: "role:AXButton" - Combined: "role:AXButton title:Save" - XPath-like: "//AXButton[@AXTitle='Save']"
Implementation: Query parsing, breadth-first search, 242µs target
2. get_windows¶
Enumerates all windows - reads AXWindows attribute, converts CFArray
3. get_main_window¶
Retrieves main window - reads AXMainWindow attribute
4. hash_accessibility_tree¶
Generates stable hash for UI change detection - BFS traversal, hashes role/title/identifier
Test Coverage¶
10 unit tests, 100% passing - query parsing, null safety, error handling
Performance Characteristics¶
- Breadth-first search for speed
- Early exit on match
- Minimal allocations
- 242µs element access target
Files Modified¶
- src/app.rs - Main implementation + 10 tests
- src/element.rs - Added Clone derive
- src/lib.rs - Fixed module conflict
- tests/search_tests.rs - Integration test structure
Quality Metrics¶
- 10/10 tests passing
- Zero memory leaks
- All functions ≤30 lines
- Cyclomatic complexity ≤8
- No TODOs remaining