feat: Add WebSocket-based log broadcast support for Android and iOS #170
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.
List of changes
Implements WebSocket-based real-time log streaming for Android (logcat) and iOS (syslog) via Appium server endpoints, matching the Java client API surface from PR#858 and PR#871.
Core Infrastructure:
StringWebSocketClientusingSystem.Net.WebSockets.ClientWebSocketfor async message handlingICanHandleMessages<T>,ICanHandleErrors,ICanHandleConnects,ICanHandleDisconnectsAndroid Support:
IListensToLogcatMessagesinterface andAndroidDriverimplementationStartLogcatBroadcast(),AddLogcatMessagesListener(),StopLogcatBroadcast(), etc.LogcatBroadcastTests.cswith 5 comprehensive test casesiOS Support:
IListensToSyslogMessagesinterface andIOSDriverimplementationStartSyslogBroadcast(),AddSyslogMessagesListener(),StopSyslogBroadcast(), etc.Types of changes
Documentation
This can be done by navigating to the documentation section on http://appium.io selecting the appropriate command/endpoint and clicking the 'Edit this doc' link to update the C# example
Integration tests
Details
Android logcat streaming:
iOS syslog streaming:
Integration Tests for Android:
Added comprehensive test suite in
test/integration/Android/Session/LogcatBroadcastTests.cs:VerifyLogcatListenerCanBeAssigned- Validates listeners receive messages and connections workCanStartAndStopLogcatBroadcast- Tests basic start/stop operationsCanStartLogcatBroadcastWithCustomHost- Tests custom host/port configurationCanAddAndRemoveMultipleListeners- Validates multiple listeners and removal functionalityCanHandleErrorsGracefully- Tests error handling behaviorTests follow the pattern from Java client (PR appium#858) and use SemaphoreSlim for async coordination.
Requirements:
Technical notes:
mobile: startLogsBroadcastandmobile: stopLogsBroadcastextension commandsws://{host}:{port}/ws/session/{sessionId}/appium/device/{logcat|syslog}Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.