https://github.com/appium/appium-remote-debugger
Module for dealing with Remote Debugger protocol
https://github.com/appium/appium-remote-debugger
Last synced: 2 months ago
JSON representation
Module for dealing with Remote Debugger protocol
- Host: GitHub
- URL: https://github.com/appium/appium-remote-debugger
- Owner: appium
- License: apache-2.0
- Created: 2015-06-24T18:46:24.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2025-12-18T11:13:02.000Z (7 months ago)
- Last Synced: 2025-12-21T17:50:40.313Z (7 months ago)
- Language: JavaScript
- Size: 1.47 MB
- Stars: 42
- Watchers: 14
- Forks: 35
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# appium-remote-debugger
[](https://github.com/appium/appium-remote-debugger/actions/workflows/publish.js.yml)
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/](https://github.com/WebKit/webkit/tree/master/Source/JavaScriptCore/inspector/protocol).
There is good documentation for the closely related API from Chrome DevTools, to
be [found here](https://chromedevtools.github.io/devtools-protocol/).
## 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](https://github.com/SeleniumHQ/selenium/tree/trunk/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`](./.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](./docs/update-atoms.md)**.
## Test
```
npm test
npm run e2e-test
```