*xcmonkey* is a tool for doing randomised UI testing of iOS apps.
## Requirements
```bash
brew install facebook/fb/idb-companion
pip3.6 install fb-idb
```
## Installation
```bash
gem install xcmonkey
```
## Usage
### Test
```bash
$ 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
```bash
$ 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](CODE_OF_CONDUCT.md).
## License
This project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file.