xcmonkey is a tool for doing randomised UI testing of iOS apps.

Requirements

brew install facebook/fb/idb-companion
pip3.6 install fb-idb

Installation

gem install xcmonkey

Usage

Test

$ xcmonkey test --udid "413EA256-CFFB-4312-94A6-12592BEE4CBA" --bundle-id "com.apple.mobilesafari"
12:44:19.343: Device info: iPhone 14 Pro | 413EA256-CFFB-4312-94A6-12592BEE4CBA | Booted | simulator | iOS 16.2 | x86_64 | /tmp/idb/413EA256-CFFB-4312-94A6-12592BEE4CBA_companion.sock

12:44:22.550: App info: com.apple.mobilesafari | MobileSafari | system | x86_64, arm64 | Running | Not Debuggable | pid=43398

12:44:23.203: Tap: {
  "x": 53,
  "y": 749
}

12:44:23.511: Swipe: {
  "x": 196,
  "y": 426
} => {
  "x": 143,
  "y": 447
}

12:44:24.355: Tap: {
  "x": 143,
  "y": 323
}

Describe point

$ xcmonkey describe -x 125 -y 760 --udid "413EA256-CFFB-4312-94A6-12592BEE4CBA"
12:41:03.840: Device info: iPhone 14 Pro | 413EA256-CFFB-4312-94A6-12592BEE4CBA | Booted | simulator | iOS 16.2 | x86_64 | /tmp/idb/413EA256-CFFB-4312-94A6-12592BEE4CBA_companion.sock

12:41:05.342: x:125 y:760 point info: {
  "AXFrame": "{{120, 759}, {64, 64}}",
  "AXUniqueId": "Safari",
  "frame": {
    "y": 759,
    "x": 120,
    "width": 64,
    "height": 64
  },
  "role_description": "button",
  "AXLabel": "Safari",
  "content_required": false,
  "type": "Button",
  "title": null,
  "help": "Double tap to open",
  "custom_actions": [
    "Edit mode",
    "Today",
    "App Library"
  ],
  "AXValue": "",
  "enabled": true,
  "role": "AXButton",
  "subrole": null
}

Code of Conduct

Help us keep xcmonkey open and inclusive. Please read and follow our Code of Conduct.

License

This project is licensed under the terms of the MIT license. See the LICENSE file.