Fix UIAutomation not ending properly on macOS #56
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.
This PR addresses an issue where UIAutomation processes continue running on macOS after tests finish, which is particularly problematic when the test agent is not recreated between runs.
Problem
The issue stems from the appium-mac2-driver not properly cleaning up UIAutomation processes when the driver session ends. While the base
AppiumApp.Dispose()
method calls_driver?.Dispose()
, this is insufficient for macOS as it leaves UIAutomation processes running in the background.Solution
Added platform-specific cleanup for macOS by:
AppiumApp.Dispose()
virtual to allow platform-specific overridesAppiumCatalystApp.Dispose()
override that performs explicit cleanup:macos: terminateApp
script (consistent with existing patterns inAppiumLifecycleActions
)_driver.Quit()
base.Dispose()
is always called in a finally blockImplementation Details
The implementation follows existing codebase patterns:
macos: terminateApp
script pattern asAppiumLifecycleActions.CloseApp()
Testing
Created comprehensive test scenarios that validate the disposal logic works correctly in all conditions:
Fixes #23.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.