appium-xcuitest-driver 4.12.0 → 4.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,14 +5,17 @@
5
5
 
6
6
  [![Release](https://github.com/appium/appium-xcuitest-driver/actions/workflows/publish.js.yml/badge.svg)](https://github.com/appium/appium-xcuitest-driver/actions/workflows/publish.js.yml)
7
7
 
8
- Appium XCUITest Driver is a combined solution, which allows to perform automated black-box testing of iOS and tvOS native applications and WebKit web views.
8
+ Appium XCUITest Driver is a combined solution, which allows performing automated black-box testing of iOS and tvOS native applications and WebKit web views.
9
9
  The native testing is based on Apple's [XCTest](https://developer.apple.com/documentation/xctest) framework and the fork of Facebook's [WebDriverAgent](https://github.com/appium/WebDriverAgent) server (the [original](https://github.com/facebookarchive/WebDriverAgent) project is not supported anymore).
10
10
  Web views communication is done via [Webkit remote debugger protocol](https://github.com/appium/appium-remote-debugger). Real devices communication is ensured by [appium-ios-device](https://github.com/appium/appium-ios-device) library.
11
11
  Simulators communication is ensured by [appium-ios-simulator](https://github.com/appium/appium-ios-simulator) library.
12
12
 
13
13
  In the native mode the driver operates in scope of [WebDriver W3C protocol](https://w3c.github.io/webdriver) with several platform-specific extensions. Web views communication only supports the obsolete [JWP protocol](https://webdriver.io/docs/api/jsonwp.html).
14
14
 
15
- *Note*: Issue tracking for this repo has been disabled. Please use the [main Appium issue tracker](https://github.com/appium/appium/issues) instead.
15
+ > **Note**
16
+ >
17
+ > Since version 4.0.0 XCUITest driver has dropped the support of Appium 1, and is only compatible to Appium 2.
18
+ > Use the `appium driver install xcuitest` command to add it to your Appium 2 dist.
16
19
 
17
20
 
18
21
  ## Requirements
@@ -20,27 +23,45 @@ In the native mode the driver operates in scope of [WebDriver W3C protocol](http
20
23
  On top of standard Appium requirements XCUITest driver also expects the following prerequisites:
21
24
 
22
25
  - Only macOS is supported as the host platform
23
- - Xcode and developer tools must be installed. Note, that usually some time is needed for the Appium team to pick up with the support of the most recent Xcode versions, especially beta ones.
26
+ - Xcode and developer tools must be installed. Note, that usually some time is needed for the Appium team to pick up with the support of the most recent Xcode versions, especially beta ones (check [Xcode version support](#xcode-version-support) section below).
24
27
  - Connected real devices must be trusted, added to your developer profile and configured properly along with WebDriverAgent signing. Read [Real devices](#real-devices) section _carefully_ to set them up properly before running your tests.
25
28
  - Starting from iOS/iPadOS version iOS/iPadOS 16 real devices require enabling of _Developer Mode_ option in _Settings -> Privacy & Security_
26
- - The minimum supported Xcode SDK version for the current driver snapshot is *10.2 (iOS 12.2)*. Consider using earlier releases of the driver (see [Xcode version support](#xcode-version-support) section below) if it is necessary to test older iOS versions on real devices. Also, it is highly recommended to always use the same major version of Xcode SDK, which was used to build the particular iOS/tvOS version on your real device under test (for example Xcode 11 for iOS 13, Xcode 12 for iOS 14, etc).
29
+ - Consider using earlier releases of the driver (check [Xcode version support](#xcode-version-support) section below) if it is necessary to test iOS versions older than the current iOS major version minus one on real devices. Also, it is highly recommended to always use the same major version of Xcode SDK, which was used to build the particular iOS/tvOS version on your real device under test (for example Xcode 11 for iOS 13, Xcode 12 for iOS 14, etc).
27
30
  - Web views must be debuggable in order to test them. If it is not possible to connect to your web view(s) using [Safari remote debugger](https://appletoolbox.com/use-web-inspector-debug-mobile-safari/) then XCUITest won't be able to connect to them as well.
28
31
  - Since version 3.33.0 (included into Appium 1.20.0+) of XCUITest driver the [Carthage](https://github.com/Carthage/Carthage) dependency *is not needed anymore*. Prior to that version it was required and could be installed using [brew](https://brew.sh/): `brew install carthage`.
29
32
 
33
+
30
34
  ## Optional dependencies
31
35
 
32
36
  - [xcpretty](https://github.com/supermarin/xcpretty) tool could be used to make Xcode output easier to read. It could be installed using `gem install xcpretty` command.
33
37
  - For test video recording we use [ffmpeg](https://ffmpeg.org/). It could be installed using [brew](https://brew.sh/): `brew install ffmpeg`
34
38
  - [IDB](https://github.com/facebook/idb), [go-ios](https://github.com/danielpaulus/go-ios) and [tidevice](https://github.com/alibaba/taobao-iphone-device) could be used to improve some real device/Simulator interactions
35
39
  - [WIX AppleSimulatorUtils](https://github.com/wix/AppleSimulatorUtils) could be used to improve some Simulator interactions
40
+ - [py-ios-device](https://github.com/YueChen-C/py-ios-device) is required in several `mobile:` extensions and to improve the general testing experience for _real_ iOS devices
36
41
 
37
42
 
38
43
  ## Xcode version support
39
44
 
40
- * module versions below `2.96.0` only supports XCode 8 and newer
41
- * module version `2.96.0` and above only supports XCode 9 and newer
42
- * module version `3.0.0` and above only supports Xcode 10 and newer
43
- * module version `3.32.0` and above only supports Xcode 10.2 and newer
45
+ Apple constantly works on various updates/improvements to XCTest framework. Thus, some major and even minor iOS releases might partially break the backward compatibility, so we need to implement multiple branches to support the legacy and the current implementations in [WebDriverAgent](https://github.com/appium/WebDriverAgent). Eventually we just drop the support of legacy XCTest implementations in order to simplify the client code and to have access to the recent platform features. The general aim is to support the _current major_ platform version and the _previous major_ one.
46
+
47
+ Minimum XCUITest driver version | Minimum required Xcode version
48
+ --- | ---
49
+ 2.96.0 | Xcode 9
50
+ 3.0.0 | Xcode 10
51
+ 3.32.0 | Xcode 10.2
52
+ 3.56.0 | Xcode 11
53
+ 4.2.0 | Xcode 12
54
+
55
+ It could be that after a new Xcode SDK is released we figure out a part or even the whole functionality that [WebDriverAgent](https://github.com/appium/WebDriverAgent) currently provides does not work anymore and needs to be updated. The below table contains the driver versions mapping for the cases where we had known compatibility issues with newly released SDKs and addressed them. Basically, version numbers in this table mean that all XCUITest driver versions _below_ the one in the first column _won't support_ Xcode SDK equal or above the version in the second column and the only way to make your test working after Xcode update would be to also *bump the driver version*.
56
+
57
+ Minimum XCUITest driver version | Tested for compatibility with Xcode version
58
+ --- | ---
59
+ 4.7.4 | Xcode 14-beta.3
60
+
61
+
62
+ ## tvOS Support
63
+
64
+ Read the [tvOS support](docs/ios/ios-tvos.md) article to get more details on how to automate testing for this platform.
44
65
 
45
66
 
46
67
  ## Real devices
@@ -54,7 +75,7 @@ See [real device configuration documentation](docs/real-device-config.md).
54
75
  - After many failures on real devices it could transition to a state where connections are no longer being accepted. To possibly remedy this issue reboot the device. Read https://github.com/facebook/WebDriverAgent/issues/507 for more details.
55
76
  - iPhone/iPad real devices show overlay, which has `Automation Running Hold both volume buttons to stop` text, since iOS/iPadOS 15. This is a known limitation of XCTest framework. This limitation does not affect screenshooting APIs though (e.g. the overlay is not visible on taken screenshots).
56
77
  - iPhone/iPad real devices [require passcode or touch id](https://github.com/appium/appium/issues/15898#issuecomment-927340411) when they start a XCTest session since iOS/iPadOS 15. Disabling passcode/touch id in the device preference allows to workaround the behaviour above.
57
- - OpenSSL v3 breaks secured communication with real devices. It can cause a [Failed to receive any data within the timeout](https://github.com/appium/appium/issues/16399) error in [appium-ios-device](https://github.com/appium/appium-ios-device). Please read [this issue](https://github.com/appium/appium-ios-device/pull/88#discussion_r825315862) for more details.
78
+ - OpenSSL v3 breaks secure communication with real devices. It can cause a [Failed to receive any data within the timeout](https://github.com/appium/appium/issues/16399) error in [appium-ios-device](https://github.com/appium/appium-ios-device). Please read [this issue](https://github.com/appium/appium-ios-device/pull/88#discussion_r825315862) for more details.
58
79
  - Please make sure your environment has Open SSL v1 for NodeJS environment, or prepare an OpenSSL v3 build by patching `OPENSSL_TLS_SECURITY_LEVEL=1`. (e.g. [an article](https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html))
59
80
  - This configuration is only necessary for XCUITest driver v4.3.0 or lower.
60
81
 
@@ -98,7 +119,7 @@ Usage: `appium --driver-args='{"xcuitest": {[argName]: [argValue]}}'`
98
119
 
99
120
  |Argument|Default|Description|Example|
100
121
  |----|-------|-----------|-------|
101
- |`"wdaLocalPort"`|8100| Local port used for communication with ios-web-driver-agent|`--driver-args='{"xcuitest": {"wdaLocalPort": 8100}}'`|
122
+ | wdaLocalPort | 8100 | Local port used for communication with ios-web-driver-agent | `--driver-args='{"xcuitest": {"wdaLocalPort": 8100}}'` |
102
123
 
103
124
  ## Capabilities
104
125
 
@@ -248,7 +269,7 @@ XCUITest driver supports the following element attributes:
248
269
  Name | Description | Example
249
270
  --- | --- | ---
250
271
  name | Could contain either element's [identifier](https://developer.apple.com/documentation/xctest/xcuielementattributes/1500981-identifier?language=objc) or its [label](https://developer.apple.com/documentation/xctest/xcuielementattributes/1500692-label?language=objc), depending on which one is available first. Could also be `null`. It is recommended to prefer the usage of [accessibilityIdentifier](https://developer.apple.com/documentation/uikit/uiaccessibilityidentification/1623132-accessibilityidentifier) over [accessibilityLabel](https://developer.apple.com/documentation/objectivec/nsobject/1615181-accessibilitylabel) for automation purposes, since the `identifier` property is supposed to stay constant under different locales and does not affect accessibility services such as VoiceOver. | 'hello'
251
- label | Element's [label](https://developer.apple.com/documentation/xctest/xcuielementattributes/1500692-label?language=objc) value. Could be `null` | 'hello'
272
+ label | Element's [label](https://developer.apple.com/documentation/xctest/xcuielementattributes/1500692-label?language=objc) value. Could be `null`. Since XCUITest driver 4.7.3 (WebDriverAgent 4.8.0), the behavior of this value was better aligned with XCTest, so it could include line breaks (`\n`). Before this version, line breaks were replaced by spaces. | 'hello', 'hello\nworld'
252
273
  type | Element's [type](https://developer.apple.com/documentation/xctest/xcuielementattributes/1500614-elementtype?language=objc) name | 'XCUIElementTypeButton'
253
274
  visible | Whether the element is visible. This value is not available in the "vanilla" XCTest and is read directly from the accessibility layer | 'false'
254
275
  focused | Whether the element is [focused](https://developer.apple.com/documentation/xctest/xcuielementattributes/1627636-hasfocus?language=objc). *Only available for tvOS* | 'true'
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-xcuitest-driver",
3
- "version": "4.12.0",
3
+ "version": "4.12.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-xcuitest-driver",
9
- "version": "4.12.0",
9
+ "version": "4.12.1",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@babel/runtime": "^7.0.0",
@@ -43,7 +43,7 @@
43
43
  "@babel/preset-env": "^7.18.10",
44
44
  "@babel/register": "^7.18.9",
45
45
  "@semantic-release/git": "^10.0.1",
46
- "axios": "^0.x",
46
+ "axios": "^1.x",
47
47
  "babel-plugin-source-map-support": "^2.2.0",
48
48
  "chai": "^4.1.2",
49
49
  "chai-as-promised": "^7.1.1",
@@ -109,6 +109,15 @@
109
109
  "npm": ">=8"
110
110
  }
111
111
  },
112
+ "node_modules/@appium/base-driver/node_modules/axios": {
113
+ "version": "0.27.2",
114
+ "extraneous": true,
115
+ "license": "MIT",
116
+ "dependencies": {
117
+ "follow-redirects": "^1.14.9",
118
+ "form-data": "^4.0.0"
119
+ }
120
+ },
112
121
  "node_modules/@appium/base-plugin": {
113
122
  "version": "1.10.3",
114
123
  "extraneous": true,
@@ -236,6 +245,37 @@
236
245
  "npm": ">=8"
237
246
  }
238
247
  },
248
+ "node_modules/@appium/support/node_modules/axios": {
249
+ "version": "0.27.2",
250
+ "license": "MIT",
251
+ "dependencies": {
252
+ "follow-redirects": "^1.14.9",
253
+ "form-data": "^4.0.0"
254
+ }
255
+ },
256
+ "node_modules/@appium/support/node_modules/lru-cache": {
257
+ "version": "6.0.0",
258
+ "license": "ISC",
259
+ "dependencies": {
260
+ "yallist": "^4.0.0"
261
+ },
262
+ "engines": {
263
+ "node": ">=10"
264
+ }
265
+ },
266
+ "node_modules/@appium/support/node_modules/semver": {
267
+ "version": "7.3.7",
268
+ "license": "ISC",
269
+ "dependencies": {
270
+ "lru-cache": "^6.0.0"
271
+ },
272
+ "bin": {
273
+ "semver": "bin/semver.js"
274
+ },
275
+ "engines": {
276
+ "node": ">=10"
277
+ }
278
+ },
239
279
  "node_modules/@appium/support/node_modules/teen_process": {
240
280
  "version": "1.16.0",
241
281
  "engines": [
@@ -992,7 +1032,7 @@
992
1032
  }
993
1033
  },
994
1034
  "node_modules/@types/node": {
995
- "version": "18.7.23",
1035
+ "version": "18.8.2",
996
1036
  "license": "MIT"
997
1037
  },
998
1038
  "node_modules/@types/normalize-package-data": {
@@ -1290,6 +1330,14 @@
1290
1330
  "appium": "^2.0.0-beta.40"
1291
1331
  }
1292
1332
  },
1333
+ "node_modules/appium-webdriveragent/node_modules/axios": {
1334
+ "version": "0.27.2",
1335
+ "license": "MIT",
1336
+ "dependencies": {
1337
+ "follow-redirects": "^1.14.9",
1338
+ "form-data": "^4.0.0"
1339
+ }
1340
+ },
1293
1341
  "node_modules/appium-xcode": {
1294
1342
  "version": "4.0.2",
1295
1343
  "license": "Apache-2.0",
@@ -1432,14 +1480,6 @@
1432
1480
  "version": "0.4.0",
1433
1481
  "license": "MIT"
1434
1482
  },
1435
- "node_modules/axios": {
1436
- "version": "0.27.2",
1437
- "license": "MIT",
1438
- "dependencies": {
1439
- "follow-redirects": "^1.14.9",
1440
- "form-data": "^4.0.0"
1441
- }
1442
- },
1443
1483
  "node_modules/balanced-match": {
1444
1484
  "version": "1.0.2",
1445
1485
  "license": "MIT"
@@ -3335,7 +3375,7 @@
3335
3375
  }
3336
3376
  },
3337
3377
  "node_modules/marked": {
3338
- "version": "4.1.0",
3378
+ "version": "4.1.1",
3339
3379
  "extraneous": true,
3340
3380
  "license": "MIT",
3341
3381
  "bin": {
@@ -4330,7 +4370,7 @@
4330
4370
  "license": "ISC"
4331
4371
  },
4332
4372
  "node_modules/semver": {
4333
- "version": "7.3.7",
4373
+ "version": "7.3.8",
4334
4374
  "license": "ISC",
4335
4375
  "dependencies": {
4336
4376
  "lru-cache": "^6.0.0"
@@ -5188,6 +5228,16 @@
5188
5228
  "source-map-support": "0.5.21",
5189
5229
  "type-fest": "2.19.0",
5190
5230
  "validate.js": "0.13.1"
5231
+ },
5232
+ "dependencies": {
5233
+ "axios": {
5234
+ "version": "0.27.2",
5235
+ "extraneous": true,
5236
+ "requires": {
5237
+ "follow-redirects": "^1.14.9",
5238
+ "form-data": "^4.0.0"
5239
+ }
5240
+ }
5191
5241
  }
5192
5242
  },
5193
5243
  "@appium/base-plugin": {
@@ -5295,6 +5345,25 @@
5295
5345
  "yauzl": "2.10.0"
5296
5346
  },
5297
5347
  "dependencies": {
5348
+ "axios": {
5349
+ "version": "0.27.2",
5350
+ "requires": {
5351
+ "follow-redirects": "^1.14.9",
5352
+ "form-data": "^4.0.0"
5353
+ }
5354
+ },
5355
+ "lru-cache": {
5356
+ "version": "6.0.0",
5357
+ "requires": {
5358
+ "yallist": "^4.0.0"
5359
+ }
5360
+ },
5361
+ "semver": {
5362
+ "version": "7.3.7",
5363
+ "requires": {
5364
+ "lru-cache": "^6.0.0"
5365
+ }
5366
+ },
5298
5367
  "teen_process": {
5299
5368
  "version": "1.16.0",
5300
5369
  "requires": {
@@ -5817,7 +5886,7 @@
5817
5886
  }
5818
5887
  },
5819
5888
  "@types/node": {
5820
- "version": "18.7.23"
5889
+ "version": "18.8.2"
5821
5890
  },
5822
5891
  "@types/normalize-package-data": {
5823
5892
  "version": "2.4.1"
@@ -6019,6 +6088,15 @@
6019
6088
  "node-simctl": "^7.0.1",
6020
6089
  "source-map-support": "^0.x",
6021
6090
  "teen_process": "^2.0.0"
6091
+ },
6092
+ "dependencies": {
6093
+ "axios": {
6094
+ "version": "0.27.2",
6095
+ "requires": {
6096
+ "follow-redirects": "^1.14.9",
6097
+ "form-data": "^4.0.0"
6098
+ }
6099
+ }
6022
6100
  }
6023
6101
  },
6024
6102
  "appium-xcode": {
@@ -6129,13 +6207,6 @@
6129
6207
  "asynckit": {
6130
6208
  "version": "0.4.0"
6131
6209
  },
6132
- "axios": {
6133
- "version": "0.27.2",
6134
- "requires": {
6135
- "follow-redirects": "^1.14.9",
6136
- "form-data": "^4.0.0"
6137
- }
6138
- },
6139
6210
  "balanced-match": {
6140
6211
  "version": "1.0.2"
6141
6212
  },
@@ -7350,7 +7421,7 @@
7350
7421
  "requires": {}
7351
7422
  },
7352
7423
  "marked": {
7353
- "version": "4.1.0",
7424
+ "version": "4.1.1",
7354
7425
  "extraneous": true
7355
7426
  },
7356
7427
  "mdurl": {
@@ -7980,7 +8051,7 @@
7980
8051
  "version": "1.2.4"
7981
8052
  },
7982
8053
  "semver": {
7983
- "version": "7.3.7",
8054
+ "version": "7.3.8",
7984
8055
  "requires": {
7985
8056
  "lru-cache": "^6.0.0"
7986
8057
  },
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "4.12.0",
11
+ "version": "4.12.1",
12
12
  "author": "Appium Contributors",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {
@@ -133,7 +133,7 @@
133
133
  "@babel/preset-env": "^7.18.10",
134
134
  "@babel/register": "^7.18.9",
135
135
  "@semantic-release/git": "^10.0.1",
136
- "axios": "^0.x",
136
+ "axios": "^1.x",
137
137
  "babel-plugin-source-map-support": "^2.2.0",
138
138
  "chai": "^4.1.2",
139
139
  "chai-as-promised": "^7.1.1",