MCPcopy Index your code
hub / github.com/appium/appium-remote-debugger

github.com/appium/appium-remote-debugger @v15.10.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release v15.10.8 ↗ · + Follow
2,009 symbols 5,285 edges 95 files 82 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

appium-remote-debugger

Release

A Node.js frontend for the Remote Debugger protocol used by Appium to connect to iOS webviews and Safari. Written using ES6+.

Safari's version of the WebKit API

Safari implements a wonky version of the WebKit API. It is not documented. The JSON version of the protocol is documented in the WebKit source code, in Source/JavaScriptCore/inspector/protocol/.

There is good documentation for the closely related API from Chrome DevTools, to be found here.

API

This is an event emitter, which emits a RemoteDebugger.EVENT_PAGE_CHANGE event when there has been a change to the page. This should be caught and handled as the calling code wishes. It also emits a RemoteDebugger.EVENT_DISCONNECT event when the server disconnects the last application connected.

The steps to using the RemoteDebugger involve instantiating an object, then running connect and selectApp. After this the instance will be listening for events from the server (i.e., the webview or browser).

Selenium "atoms"

The remote debugger uses the standard Selenium JavaScript atoms to interact with web pages.

To refresh the bundled atoms/ output, use the Update Selenium Atoms manual workflow (.github/workflows/update-atoms.yml) in the GitHub Actions tab, or build locally. Full steps, inputs, and tooling are documented in docs/update-atoms.md.

Test

npm test
npm run e2e-test

Extension points exported contracts — how you extend this code

PendingPageTargetDetails (Interface)
* Details about a pending page target notification.
lib/rpc/rpc-client.ts
AppInfo (Interface)
(no doc)
lib/types.ts
ScreenshotCaptureOptions (Interface)
(no doc)
lib/mixins/screenshot.ts
PagesToTargets (Interface)
* Pages to targets mapping with optional provisional target info and lock.
lib/rpc/rpc-client.ts
AppPage (Interface)
(no doc)
lib/types.ts
PageReadinessDetector (Interface)
* Detector for determining when a page is ready.
lib/rpc/rpc-client.ts
App (Interface)
(no doc)
lib/types.ts
WebInspectorMessage (Interface)
* Interface for WebInspector message structure from the shim service.
lib/rpc/rpc-client-real-device-shim.ts

Core symbols most depended-on inside this repo

U
called by 101
atoms/type.js
U
called by 101
atoms/submit.js
U
called by 101
atoms/clear.js
S
called by 101
atoms/click.js
V
called by 100
atoms/get_attribute_value.js
V
called by 100
atoms/is_displayed.js
V
called by 100
atoms/get_top_left_coordinates.js
V
called by 100
atoms/is_selected.js

Shape

Function 1,884
Method 82
Interface 23
Class 20

Languages

TypeScript100%

Modules by API surface

atoms/click.js130 symbols
atoms/clear.js115 symbols
atoms/submit.js114 symbols
atoms/type.js113 symbols
atoms/get_text.js76 symbols
atoms/frame_by_id_or_name.js69 symbols
atoms/is_displayed.js67 symbols
atoms/get_top_left_coordinates.js65 symbols
atoms/find_elements.js64 symbols
atoms/find_element_fragment.js64 symbols
atoms/find_element.js55 symbols
atoms/get_size.js52 symbols

For agents

$ claude mcp add appium-remote-debugger \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact