Fix UI searches continuing past their timeout - #254
Merged
Merged
Conversation
Stop scans and retries at the shared timeout without claiming partial absence or uniqueness. Preserve timeout diagnostics and missing-dialog details. Refs #253 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
sbroenne
enabled auto-merge (squash)
September 30, 2026 16:16
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Several auxiliary UIA traversals still make multiple provider calls without deadline checks, allowing searches to continue after timeout.
Review effort: Balanced
Findings: 5
Open (5)
What changed in this PR
Introduces shared deadlines across UI searches, retries, and tree traversal while improving timeout diagnostics and documentation.
Changes:
- Stops retries and bounded traversal when deadlines expire.
- Preserves timeout diagnostics and distinguishes unfinished searches.
- Adds unit and integration coverage for deadline behavior.
| File | Description |
|---|---|
FEATURES.md |
Documents timeout semantics. |
UIAutomationDiagnostics.cs |
Clarifies timeout configuration. |
BoundedSearchTraversal.cs |
Adds traversal deadline checks. |
UIAutomationService.Find.cs |
Applies shared deadlines and diagnostics. |
UIAutomationService.Tree.cs |
Shares deadlines across wait scans. |
UIFindTool.cs |
Documents find timeout behavior. |
UIWaitTool.cs |
Documents wait timeout behavior. |
BoundedSearchTraversalTests.cs |
Tests traversal interruption. |
FindDeadlineTests.cs |
Tests retry and diagnostic semantics. |
UIAutomationAdvancedSearchTests.cs |
Updates deadline integration expectations. |
UIFindToolIntegrationTests.cs |
Tests queued-search expiration. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Bound modal lookup, matching, framework discovery, child conversion and element identity reads. Preserve normalized dialog diagnostics and isolate node-budget tests from elapsed time. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Closes #253.
ui_findand appear/disappear wait retries and accessibility-tree scans.timeoutMs=0as one node-bounded scan without a time deadline; document that Windows accessibility calls already running can still overrun the budget.This addresses confirmed timeout-policy problems. It does not establish why the originally reported Install button was missed.
Validation
timeoutMs=0so they test the 2,000-node limit independently of machine speed.Full Windows integration validation runs through the pull request workflow.