
Security News
ECMAScript 2025 Finalized with Iterator Helpers, Set Methods, RegExp.escape, and More
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
appium-remote-debugger
Advanced tools
The appium-remote-debugger npm package is a tool used for remote debugging of iOS applications. It allows you to interact with and control iOS webviews and Safari instances from a remote environment, which is particularly useful for automated testing scenarios.
Connecting to a Remote Debugger
This feature allows you to establish a connection to a remote debugger instance. The code sample demonstrates how to create a new RemoteDebugger instance and connect to it using specific parameters like bundleId and platformVersion.
const RemoteDebugger = require('appium-remote-debugger');
const rd = new RemoteDebugger({
bundleId: 'com.apple.mobilesafari',
platformVersion: '14.4',
isSafari: true
});
await rd.connect();
Listing Available Contexts
This feature allows you to list all available contexts (webviews) for a given application. The code sample shows how to select an app and retrieve its contexts.
const contexts = await rd.selectApp('com.apple.mobilesafari');
console.log(contexts);
Executing JavaScript in a Webview
This feature allows you to execute JavaScript code within a webview context. The code sample demonstrates how to execute a simple JavaScript command to get the document title.
const result = await rd.execute('document.title');
console.log(result);
WebdriverIO is a popular testing utility for browser and mobile automation. It provides a high-level API to control browsers and mobile applications, similar to appium-remote-debugger, but it supports a wider range of platforms and browsers.
Selenium WebDriver is a widely-used tool for browser automation. It allows you to control web browsers programmatically. While it doesn't specialize in mobile webviews like appium-remote-debugger, it is a robust solution for web automation.
Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. It is primarily used for browser automation and offers functionalities similar to appium-remote-debugger but is limited to Chrome/Chromium.
A Node.js frontend for the Remote Debugger protocol used by Appium to connect to iOS webviews and Safari. Written using ES6+.
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.
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).
The remote debugger uses the standard Selenium Atoms
to interact with web pages. These need to be manually updated when necessary.
To do so, simply update the branch in the scripts/common.mjs
, by modifying the SELENIUM_BRANCH
constant at the top of the file and commit them to explicitly leaves the latest target branch information.
Then run npm run build:atoms
, test and create a pull request with the resulting changed atoms directory.
You can set SELENIUM_GITHUB
and SELENIUM_BRANCH
environment variables with the npm command to
customize the target repository and the target branch.
Note that to build the atoms it is required that you have the bazel
tool installed. Selenium will
also require that it be installed at a particular version relative to the version of Selenium that
has been checked out by our build script. It is most convenient simply to install
bazelisk
and have it available on your PATH.
One caveat is that there are some changes that are needed for Appium, that are not yet in the Selenium codebase. See the atoms notes for details.
npm test
npm e2e-test
FAQs
Appium proxy for Remote Debugger protocol
The npm package appium-remote-debugger receives a total of 225,670 weekly downloads. As such, appium-remote-debugger popularity was classified as popular.
We found that appium-remote-debugger demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
Security News
A new Node.js homepage button linking to paid support for EOL versions has sparked a heated discussion among contributors and the wider community.
Research
North Korean threat actors linked to the Contagious Interview campaign return with 35 new malicious npm packages using a stealthy multi-stage malware loader.