[Testing] Rework Catalyst Test Runner to use startup arguments instead of UI navigation #30286
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.
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Problem
The Catalyst Test Runner was using brittle UI navigation to reach specific tests:
This approach had several issues:
Solution
Implemented startup argument support for Catalyst Test Runner to pass the test name directly at app launch, eliminating UI navigation entirely.
Changes Made
1. Added ProcessArguments support to AppiumCatalystApp
2. Enhanced test host app to read startup arguments
3. Updated _IssuesUITest for Catalyst-specific behavior
Flow Comparison
Before (UI Navigation):
After (Startup Arguments):
Benefits
🚀 Performance: Eliminates UI navigation overhead for every test
🛡️ Reliability: Removes timing-dependent keyboard interactions
🔄 Consistency: Aligns Catalyst with iOS ProcessArguments approach
🔧 Maintainability: Cleaner test lifecycle with reset-at-start pattern
📱 Backward Compatible: Only affects Mac Catalyst, other platforms unchanged
Testing
Validated the complete flow with unit tests covering:
Fixes #30285.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.