Add backdoor support for Appium UI tests #57
Draft
+340
−1
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 implements backdoor support in Plugin.Maui.UITestHelpers.Appium, enabling UI tests to invoke app methods directly without going through the UI, similar to Xamarin.UITest's backdoor functionality.
Overview
Backdoors allow tests to call methods in the app under test directly, which is useful for:
Implementation
The implementation follows the existing architectural patterns in the codebase:
Core Interface
IBackdoorSupportedApp
interface withInvoke()
andInvoke<T>()
methodsExtension Methods
app.Invoke(string methodName, params object[] args)
for simple invocationsapp.Invoke<T>(string methodName, params object[] args)
for typed return valuesScreenshotSupportedAppExtensions
andLogsSupportedAppExtensions
Command Implementation
AppiumBackdoorActions
command group using Appium'sExecuteScript
withmobile: backdoor
Integration
AppiumApp
to implementIBackdoorSupportedApp
and register the new command groupUsage
Documentation
BACKDOOR_USAGE.md
App-Side Requirements
Apps need to implement a handler for the
mobile: backdoor
script execution to respond to backdoor calls. The documentation provides examples of how to set this up in a .NET MAUI application.Fixes #26.
💡 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.