npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@navaiguidetest/ios

v0.0.9

Published

Appium iOS integration for NavAIGuide, enabling powerful mobile automation and testing capabilities.

Downloads

6

Readme

🤖 NavAIGuide-iOS

Explore how to build iOS powered AI Agents with NavAIGuide-iOS.

💻 Getting Started

Prerequisites

  • Follow through the base pre-requisites.
  • macOS with Xcode 15.
  • iOS device, simulators not supported
  • Apple Developer Free Account.
  • Go Build Tools (currently required as a dependency to go-ios)
  • Appium Server with XCUITest Driver

Steps

1. ⚡️ Install NavAIGuide-iOS

You can use npm, yarn, or pnpm to install NavAIGuide

npm:

  npm install @navaiguide/core && npm install @navaiguide/ios

Yarn:

  yarn add @navaiguide/core && yarn add @navaiguide/ios

2. Go-iOS Setup

Go-iOS is required in order for NavAIGuide to list the apps, and start a pre-installed WDA Runner on the target device. If your device is running iOS 17, support for waking up the WDA Runner is still experimental and npm packages aren't available for go-ios. Because of that, we need to install the latest from the ios-17 branch and build an executable manually, which requires installing the go build tools.

# Install the go build tools on macOS
brew install go

Once installed, you can run this utility script to build go-ios. This will copy the go-ios executable in the ./packages/ios/bin directory, which is needed to run the next steps.

# Build the go-ios executable
npx run build-go-ios

3. Appium

Install the Appium server globally:

npm install -g appium

Launching appium from terminal should result in a similar output:

Install and run appium-doctor for diagnosing and fixing any iOS configuration issues:

npm install -g @appium/doctor
appium-doctor --ios

Install the Appium XCUITest Driver:

appium driver install xcuitest

This step will also clone the Appium WebDriverAgent (WDA) Xcode project required at next step. Check that the Xcode project exists at ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent

4. Enable Developer Settings & UI Automation

If haven't done already, enable Developer Mode on your target device. Ig required reboot your phone.

Proceed next enabling UI Automation from Settings/Developer. This will allow the WDA Runner to command your device and execute XCUITests.

4. WDA Building and Signing

Next step is to build and sign the Appium WDA project through Xcode.

cd '~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent'
open 'WebDriverAgent.xcodeproj'
  1. Select WebDriverAgentRunner from the target section.
  2. Click on Signing & Capabilities.
  3. Check the Automatically manage signing checkbox.
  4. Choose your Team in the Team dropdown.
  5. From Bundle Identifier replace the value with a bundle identifier of your choice. For ex : com.<YOUR-ORG>.wda.runner

Building the WDA project from Xcode is optional if you already have a prebuilt IPA, but it must be re-signed with your Apple developer account’s certificate. See Daniel Paulus' wda-signer on instructions on how to do.

Next, to deploy and run the WDA runner on the target real device:

xcodebuild build-for-testing test-without-building -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=<YOUR_DEVICE_UDID>'

This step is only required once, as we will later use go-ios to wake up a previously installed WDA Runner in your device.

You can find your connected device UDID with go-ios.

./go-ios list

If the xcodebuild is successful, you should expect a WDA Runner app being installed, and your device entering into UI Automation mode (indicated by a watermark in your screen). You can anytime exit of UI Automation mode holding Volume Up and Down at the same time.

npm run run-wda -- --WDA_BUNDLE_ID=com.example.bundleid --WDA_TEST_RUNNER_BUNDLE_ID=com.example.testrunner --DEVICE_UDID=12345

What's what?

Go-iOS: A set of tools written in golang that allow you to control iOS devices on Linux and Windows. Most notably it includes the capability of starting and killing Apps and running UI-tests on iOS devices. It is using a reverse engineered version of the DTX Message Framework.

WebDriverAgent (WDA): To automate tasks on an iOS device, installing WebDriverAgent (WDA) is required. WDA, initially a Facebook project and now maintained by Appium, acts as the core for all iOS automation tools and services. iOS's strict security prevents direct input simulations or screenshot captures via public APIs or shell commands. WebDriverAgent circumvents these limitations by launching an HTTP server on the device, turning XCUITest framework functions into accessible REST calls.

UI Automation Mode: This is the state triggered on the target device when running UI Automation XCUITests. It must be enabled through the Developer Settings before installing the WDA Runner App.

Webdriverio: WebDriverIO is an open-source testing utility for Node.js that enables developers to automate testing for web applications. In the context of UI automation, especially for iOS applications, WebDriverIO can be used alongside Appium, a mobile application automation framework. Appium serves as a bridge between WebDriverIO tests and the iOS platform, allowing tests written in WebDriverIO to interact with iOS applications as if a real user were using them. This integration supports the automation of both native and hybrid iOS apps.

Appium: Appium is an open-source, cross-platform test automation tool used for automating native, mobile web, and hybrid applications on iOS and Android platforms. Appium uses the WebDriver protocol to interact with iOS and Android applications. For iOS, it primarily relies on Apple's XCUITest framework (for iOS 9.3 and above), and for older versions, it used the UIAutomation framework. XCUITest is part of XCTest and is Apple's official UI testing framework, which Appium leverages to perform actions on the iOS UI.