appium-xcuitest-driver 10.14.5 → 10.14.7

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.
Files changed (280) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/lib/commands/active-app-info.d.ts +4 -3
  3. package/build/lib/commands/active-app-info.d.ts.map +1 -1
  4. package/build/lib/commands/active-app-info.js +2 -3
  5. package/build/lib/commands/active-app-info.js.map +1 -1
  6. package/build/lib/commands/app-strings.d.ts +6 -7
  7. package/build/lib/commands/app-strings.d.ts.map +1 -1
  8. package/build/lib/commands/app-strings.js +3 -8
  9. package/build/lib/commands/app-strings.js.map +1 -1
  10. package/build/lib/commands/audit.d.ts +5 -33
  11. package/build/lib/commands/audit.d.ts.map +1 -1
  12. package/build/lib/commands/audit.js +3 -16
  13. package/build/lib/commands/audit.js.map +1 -1
  14. package/build/lib/commands/device-info.d.ts +13 -0
  15. package/build/lib/commands/device-info.d.ts.map +1 -0
  16. package/build/lib/commands/{deviceInfo.js → device-info.js} +3 -8
  17. package/build/lib/commands/device-info.js.map +1 -0
  18. package/build/lib/commands/keychains.d.ts +2 -2
  19. package/build/lib/commands/keychains.d.ts.map +1 -1
  20. package/build/lib/commands/keychains.js +1 -4
  21. package/build/lib/commands/keychains.js.map +1 -1
  22. package/build/lib/commands/localization.d.ts +7 -6
  23. package/build/lib/commands/localization.d.ts.map +1 -1
  24. package/build/lib/commands/localization.js +7 -8
  25. package/build/lib/commands/localization.js.map +1 -1
  26. package/build/lib/commands/types.d.ts +22 -0
  27. package/build/lib/commands/types.d.ts.map +1 -1
  28. package/build/lib/driver.d.ts +1 -1
  29. package/build/lib/driver.d.ts.map +1 -1
  30. package/build/lib/driver.js +1 -1
  31. package/build/lib/driver.js.map +1 -1
  32. package/build/lib/index.d.ts +5 -0
  33. package/build/lib/index.d.ts.map +1 -0
  34. package/build/{index.js → lib/index.js} +2 -2
  35. package/build/lib/index.js.map +1 -0
  36. package/build/test/functional/basic/alert-e2e-specs.d.ts +2 -0
  37. package/build/test/functional/basic/alert-e2e-specs.d.ts.map +1 -0
  38. package/build/test/functional/basic/alert-e2e-specs.js +129 -0
  39. package/build/test/functional/basic/alert-e2e-specs.js.map +1 -0
  40. package/build/test/functional/basic/basic-e2e-specs.d.ts +2 -0
  41. package/build/test/functional/basic/basic-e2e-specs.d.ts.map +1 -0
  42. package/build/test/functional/basic/basic-e2e-specs.js +268 -0
  43. package/build/test/functional/basic/basic-e2e-specs.js.map +1 -0
  44. package/build/test/functional/basic/element-e2e-specs.d.ts +2 -0
  45. package/build/test/functional/basic/element-e2e-specs.d.ts.map +1 -0
  46. package/build/test/functional/basic/element-e2e-specs.js +354 -0
  47. package/build/test/functional/basic/element-e2e-specs.js.map +1 -0
  48. package/build/test/functional/basic/find-e2e-specs.d.ts +2 -0
  49. package/build/test/functional/basic/find-e2e-specs.d.ts.map +1 -0
  50. package/build/test/functional/basic/find-e2e-specs.js +434 -0
  51. package/build/test/functional/basic/find-e2e-specs.js.map +1 -0
  52. package/build/test/functional/basic/gesture-e2e-specs.d.ts +2 -0
  53. package/build/test/functional/basic/gesture-e2e-specs.d.ts.map +1 -0
  54. package/build/test/functional/basic/gesture-e2e-specs.js +211 -0
  55. package/build/test/functional/basic/gesture-e2e-specs.js.map +1 -0
  56. package/build/test/functional/desired.d.ts +26 -0
  57. package/build/test/functional/desired.d.ts.map +1 -0
  58. package/build/test/functional/desired.js +124 -0
  59. package/build/test/functional/desired.js.map +1 -0
  60. package/build/test/functional/device/accessibility-e2e-specs.d.ts +2 -0
  61. package/build/test/functional/device/accessibility-e2e-specs.d.ts.map +1 -0
  62. package/build/test/functional/device/accessibility-e2e-specs.js +117 -0
  63. package/build/test/functional/device/accessibility-e2e-specs.js.map +1 -0
  64. package/build/test/functional/device/file-movement-e2e-specs.d.ts +2 -0
  65. package/build/test/functional/device/file-movement-e2e-specs.d.ts.map +1 -0
  66. package/build/test/functional/device/file-movement-e2e-specs.js +141 -0
  67. package/build/test/functional/device/file-movement-e2e-specs.js.map +1 -0
  68. package/build/test/functional/device/otherApps-e2e-specs.d.ts +2 -0
  69. package/build/test/functional/device/otherApps-e2e-specs.d.ts.map +1 -0
  70. package/build/test/functional/device/otherApps-e2e-specs.js +66 -0
  71. package/build/test/functional/device/otherApps-e2e-specs.js.map +1 -0
  72. package/build/test/functional/device/passwords-e2e-specs.d.ts +2 -0
  73. package/build/test/functional/device/passwords-e2e-specs.d.ts.map +1 -0
  74. package/build/test/functional/device/passwords-e2e-specs.js +91 -0
  75. package/build/test/functional/device/passwords-e2e-specs.js.map +1 -0
  76. package/build/test/functional/device/performance-e2e-specs.d.ts +2 -0
  77. package/build/test/functional/device/performance-e2e-specs.d.ts.map +1 -0
  78. package/build/test/functional/device/performance-e2e-specs.js +72 -0
  79. package/build/test/functional/device/performance-e2e-specs.js.map +1 -0
  80. package/build/test/functional/driver/driver-e2e-specs.d.ts +2 -0
  81. package/build/test/functional/driver/driver-e2e-specs.d.ts.map +1 -0
  82. package/build/test/functional/driver/driver-e2e-specs.js +296 -0
  83. package/build/test/functional/driver/driver-e2e-specs.js.map +1 -0
  84. package/build/test/functional/helpers/element.d.ts +4 -0
  85. package/build/test/functional/helpers/element.d.ts.map +1 -0
  86. package/build/test/functional/helpers/element.js +8 -0
  87. package/build/test/functional/helpers/element.js.map +1 -0
  88. package/build/test/functional/helpers/ports.d.ts +6 -0
  89. package/build/test/functional/helpers/ports.d.ts.map +1 -0
  90. package/build/test/functional/helpers/ports.js +29 -0
  91. package/build/test/functional/helpers/ports.js.map +1 -0
  92. package/build/test/functional/helpers/session.d.ts +7 -0
  93. package/build/test/functional/helpers/session.d.ts.map +1 -0
  94. package/build/test/functional/helpers/session.js +39 -0
  95. package/build/test/functional/helpers/session.js.map +1 -0
  96. package/build/test/functional/helpers/simulator.d.ts +12 -0
  97. package/build/test/functional/helpers/simulator.d.ts.map +1 -0
  98. package/build/test/functional/helpers/simulator.js +51 -0
  99. package/build/test/functional/helpers/simulator.js.map +1 -0
  100. package/build/test/functional/long/typing-stress-e2e-specs.d.ts +2 -0
  101. package/build/test/functional/long/typing-stress-e2e-specs.d.ts.map +1 -0
  102. package/build/test/functional/long/typing-stress-e2e-specs.js +84 -0
  103. package/build/test/functional/long/typing-stress-e2e-specs.js.map +1 -0
  104. package/build/test/functional/tv/tvos-e2e-specs.d.ts +2 -0
  105. package/build/test/functional/tv/tvos-e2e-specs.d.ts.map +1 -0
  106. package/build/test/functional/tv/tvos-e2e-specs.js +83 -0
  107. package/build/test/functional/tv/tvos-e2e-specs.js.map +1 -0
  108. package/build/test/functional/web/helpers.d.ts +28 -0
  109. package/build/test/functional/web/helpers.d.ts.map +1 -0
  110. package/build/test/functional/web/helpers.js +137 -0
  111. package/build/test/functional/web/helpers.js.map +1 -0
  112. package/build/test/functional/web/safari-alerts-e2e-specs.d.ts +2 -0
  113. package/build/test/functional/web/safari-alerts-e2e-specs.d.ts.map +1 -0
  114. package/build/test/functional/web/safari-alerts-e2e-specs.js +109 -0
  115. package/build/test/functional/web/safari-alerts-e2e-specs.js.map +1 -0
  116. package/build/test/functional/web/safari-basic-e2e-specs.d.ts +2 -0
  117. package/build/test/functional/web/safari-basic-e2e-specs.d.ts.map +1 -0
  118. package/build/test/functional/web/safari-basic-e2e-specs.js +425 -0
  119. package/build/test/functional/web/safari-basic-e2e-specs.js.map +1 -0
  120. package/build/test/functional/web/safari-execute-e2e-specs.d.ts +2 -0
  121. package/build/test/functional/web/safari-execute-e2e-specs.d.ts.map +1 -0
  122. package/build/test/functional/web/safari-execute-e2e-specs.js +167 -0
  123. package/build/test/functional/web/safari-execute-e2e-specs.js.map +1 -0
  124. package/build/test/functional/web/safari-nativewebtap-e2e-specs.d.ts +2 -0
  125. package/build/test/functional/web/safari-nativewebtap-e2e-specs.d.ts.map +1 -0
  126. package/build/test/functional/web/safari-nativewebtap-e2e-specs.js +323 -0
  127. package/build/test/functional/web/safari-nativewebtap-e2e-specs.js.map +1 -0
  128. package/build/test/functional/web/safari-ssl-e2e-specs.d.ts +2 -0
  129. package/build/test/functional/web/safari-ssl-e2e-specs.d.ts.map +1 -0
  130. package/build/test/functional/web/safari-ssl-e2e-specs.js +131 -0
  131. package/build/test/functional/web/safari-ssl-e2e-specs.js.map +1 -0
  132. package/build/test/functional/web/safari-window-e2e-specs.d.ts +2 -0
  133. package/build/test/functional/web/safari-window-e2e-specs.d.ts.map +1 -0
  134. package/build/test/functional/web/safari-window-e2e-specs.js +263 -0
  135. package/build/test/functional/web/safari-window-e2e-specs.js.map +1 -0
  136. package/build/test/setup.d.ts +19 -0
  137. package/build/test/setup.d.ts.map +1 -0
  138. package/build/test/setup.js +117 -0
  139. package/build/test/setup.js.map +1 -0
  140. package/build/test/unit/app-infos-cache-specs.d.ts +2 -0
  141. package/build/test/unit/app-infos-cache-specs.d.ts.map +1 -0
  142. package/build/test/unit/app-infos-cache-specs.js +101 -0
  143. package/build/test/unit/app-infos-cache-specs.js.map +1 -0
  144. package/build/test/unit/app-utils-specs.d.ts +2 -0
  145. package/build/test/unit/app-utils-specs.d.ts.map +1 -0
  146. package/build/test/unit/app-utils-specs.js +131 -0
  147. package/build/test/unit/app-utils-specs.js.map +1 -0
  148. package/build/test/unit/commands/activeAppInfo-specs.d.ts +2 -0
  149. package/build/test/unit/commands/activeAppInfo-specs.d.ts.map +1 -0
  150. package/build/test/unit/commands/activeAppInfo-specs.js +74 -0
  151. package/build/test/unit/commands/activeAppInfo-specs.js.map +1 -0
  152. package/build/test/unit/commands/alert-specs.d.ts +2 -0
  153. package/build/test/unit/commands/alert-specs.d.ts.map +1 -0
  154. package/build/test/unit/commands/alert-specs.js +111 -0
  155. package/build/test/unit/commands/alert-specs.js.map +1 -0
  156. package/build/test/unit/commands/context-specs.d.ts +2 -0
  157. package/build/test/unit/commands/context-specs.d.ts.map +1 -0
  158. package/build/test/unit/commands/context-specs.js +119 -0
  159. package/build/test/unit/commands/context-specs.js.map +1 -0
  160. package/build/test/unit/commands/deviceinfo-specs.d.ts +2 -0
  161. package/build/test/unit/commands/deviceinfo-specs.d.ts.map +1 -0
  162. package/build/test/unit/commands/deviceinfo-specs.js +67 -0
  163. package/build/test/unit/commands/deviceinfo-specs.js.map +1 -0
  164. package/build/test/unit/commands/element-specs.d.ts +2 -0
  165. package/build/test/unit/commands/element-specs.d.ts.map +1 -0
  166. package/build/test/unit/commands/element-specs.js +419 -0
  167. package/build/test/unit/commands/element-specs.js.map +1 -0
  168. package/build/test/unit/commands/file-movement-specs.d.ts +2 -0
  169. package/build/test/unit/commands/file-movement-specs.d.ts.map +1 -0
  170. package/build/test/unit/commands/file-movement-specs.js +81 -0
  171. package/build/test/unit/commands/file-movement-specs.js.map +1 -0
  172. package/build/test/unit/commands/find-specs.d.ts +2 -0
  173. package/build/test/unit/commands/find-specs.d.ts.map +1 -0
  174. package/build/test/unit/commands/find-specs.js +106 -0
  175. package/build/test/unit/commands/find-specs.js.map +1 -0
  176. package/build/test/unit/commands/general-specs.d.ts +2 -0
  177. package/build/test/unit/commands/general-specs.d.ts.map +1 -0
  178. package/build/test/unit/commands/general-specs.js +154 -0
  179. package/build/test/unit/commands/general-specs.js.map +1 -0
  180. package/build/test/unit/commands/gesture-specs.d.ts +2 -0
  181. package/build/test/unit/commands/gesture-specs.d.ts.map +1 -0
  182. package/build/test/unit/commands/gesture-specs.js +263 -0
  183. package/build/test/unit/commands/gesture-specs.js.map +1 -0
  184. package/build/test/unit/commands/location-specs.d.ts +2 -0
  185. package/build/test/unit/commands/location-specs.d.ts.map +1 -0
  186. package/build/test/unit/commands/location-specs.js +141 -0
  187. package/build/test/unit/commands/location-specs.js.map +1 -0
  188. package/build/test/unit/commands/pasteboard-specs.d.ts +2 -0
  189. package/build/test/unit/commands/pasteboard-specs.d.ts.map +1 -0
  190. package/build/test/unit/commands/pasteboard-specs.js +65 -0
  191. package/build/test/unit/commands/pasteboard-specs.js.map +1 -0
  192. package/build/test/unit/commands/proxy-helper-specs.d.ts +2 -0
  193. package/build/test/unit/commands/proxy-helper-specs.d.ts.map +1 -0
  194. package/build/test/unit/commands/proxy-helper-specs.js +88 -0
  195. package/build/test/unit/commands/proxy-helper-specs.js.map +1 -0
  196. package/build/test/unit/commands/screenshots-specs.d.ts +2 -0
  197. package/build/test/unit/commands/screenshots-specs.d.ts.map +1 -0
  198. package/build/test/unit/commands/screenshots-specs.js +71 -0
  199. package/build/test/unit/commands/screenshots-specs.js.map +1 -0
  200. package/build/test/unit/commands/session-specs.d.ts +2 -0
  201. package/build/test/unit/commands/session-specs.d.ts.map +1 -0
  202. package/build/test/unit/commands/session-specs.js +49 -0
  203. package/build/test/unit/commands/session-specs.js.map +1 -0
  204. package/build/test/unit/commands/simctl-specs.d.ts +2 -0
  205. package/build/test/unit/commands/simctl-specs.d.ts.map +1 -0
  206. package/build/test/unit/commands/simctl-specs.js +54 -0
  207. package/build/test/unit/commands/simctl-specs.js.map +1 -0
  208. package/build/test/unit/commands/source-specs.d.ts +2 -0
  209. package/build/test/unit/commands/source-specs.d.ts.map +1 -0
  210. package/build/test/unit/commands/source-specs.js +55 -0
  211. package/build/test/unit/commands/source-specs.js.map +1 -0
  212. package/build/test/unit/commands/ssl-certificate-specs.d.ts +2 -0
  213. package/build/test/unit/commands/ssl-certificate-specs.d.ts.map +1 -0
  214. package/build/test/unit/commands/ssl-certificate-specs.js +16 -0
  215. package/build/test/unit/commands/ssl-certificate-specs.js.map +1 -0
  216. package/build/test/unit/commands/xctest-specs.d.ts +2 -0
  217. package/build/test/unit/commands/xctest-specs.d.ts.map +1 -0
  218. package/build/test/unit/commands/xctest-specs.js +116 -0
  219. package/build/test/unit/commands/xctest-specs.js.map +1 -0
  220. package/build/test/unit/css-converter-specs.d.ts +2 -0
  221. package/build/test/unit/css-converter-specs.d.ts.map +1 -0
  222. package/build/test/unit/css-converter-specs.js +99 -0
  223. package/build/test/unit/css-converter-specs.js.map +1 -0
  224. package/build/test/unit/device-connections-factory-specs.d.ts +2 -0
  225. package/build/test/unit/device-connections-factory-specs.d.ts.map +1 -0
  226. package/build/test/unit/device-connections-factory-specs.js +88 -0
  227. package/build/test/unit/device-connections-factory-specs.js.map +1 -0
  228. package/build/test/unit/driver-specs.d.ts +2 -0
  229. package/build/test/unit/driver-specs.d.ts.map +1 -0
  230. package/build/test/unit/driver-specs.js +358 -0
  231. package/build/test/unit/driver-specs.js.map +1 -0
  232. package/build/test/unit/helpers.d.ts +2 -0
  233. package/build/test/unit/helpers.d.ts.map +1 -0
  234. package/build/test/unit/helpers.js +5 -0
  235. package/build/test/unit/helpers.js.map +1 -0
  236. package/build/test/unit/language-specs.d.ts +2 -0
  237. package/build/test/unit/language-specs.d.ts.map +1 -0
  238. package/build/test/unit/language-specs.js +159 -0
  239. package/build/test/unit/language-specs.js.map +1 -0
  240. package/build/test/unit/logs-helpers-specs.d.ts +2 -0
  241. package/build/test/unit/logs-helpers-specs.d.ts.map +1 -0
  242. package/build/test/unit/logs-helpers-specs.js +71 -0
  243. package/build/test/unit/logs-helpers-specs.js.map +1 -0
  244. package/build/test/unit/processargs-specs.d.ts +2 -0
  245. package/build/test/unit/processargs-specs.d.ts.map +1 -0
  246. package/build/test/unit/processargs-specs.js +87 -0
  247. package/build/test/unit/processargs-specs.js.map +1 -0
  248. package/build/test/unit/real-device-management-specs.d.ts +2 -0
  249. package/build/test/unit/real-device-management-specs.d.ts.map +1 -0
  250. package/build/test/unit/real-device-management-specs.js +151 -0
  251. package/build/test/unit/real-device-management-specs.js.map +1 -0
  252. package/build/test/unit/simulator-management-specs.d.ts +2 -0
  253. package/build/test/unit/simulator-management-specs.d.ts.map +1 -0
  254. package/build/test/unit/simulator-management-specs.js +143 -0
  255. package/build/test/unit/simulator-management-specs.js.map +1 -0
  256. package/build/test/unit/utils-specs.d.ts +2 -0
  257. package/build/test/unit/utils-specs.d.ts.map +1 -0
  258. package/build/test/unit/utils-specs.js +132 -0
  259. package/build/test/unit/utils-specs.js.map +1 -0
  260. package/build/tsconfig.tsbuildinfo +1 -0
  261. package/lib/commands/active-app-info.ts +15 -0
  262. package/lib/commands/{app-strings.js → app-strings.ts} +10 -9
  263. package/lib/commands/audit.ts +25 -0
  264. package/lib/commands/device-info.ts +24 -0
  265. package/lib/commands/keychains.ts +16 -0
  266. package/lib/commands/{localization.js → localization.ts} +22 -12
  267. package/lib/commands/types.ts +23 -0
  268. package/lib/driver.ts +1 -1
  269. package/lib/index.ts +5 -0
  270. package/npm-shrinkwrap.json +5 -5
  271. package/package.json +4 -7
  272. package/build/index.d.ts +0 -5
  273. package/build/lib/commands/deviceInfo.d.ts +0 -12
  274. package/build/lib/commands/deviceInfo.d.ts.map +0 -1
  275. package/build/lib/commands/deviceInfo.js.map +0 -1
  276. package/index.js +0 -7
  277. package/lib/commands/active-app-info.js +0 -12
  278. package/lib/commands/audit.js +0 -31
  279. package/lib/commands/deviceInfo.js +0 -27
  280. package/lib/commands/keychains.js +0 -17
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const bluebird_1 = __importDefault(require("bluebird"));
40
+ const util_1 = __importDefault(require("util"));
41
+ const asyncbox_1 = require("asyncbox");
42
+ const desired_1 = require("../desired");
43
+ const session_1 = require("../helpers/session");
44
+ const helpers_1 = require("../web/helpers");
45
+ const sharp_1 = __importDefault(require("sharp"));
46
+ const chai_1 = __importStar(require("chai"));
47
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
48
+ chai_1.default.use(chai_as_promised_1.default);
49
+ describe('XCUITestDriver - basics -', function () {
50
+ this.timeout(session_1.MOCHA_TIMEOUT);
51
+ let driver;
52
+ before(async function () {
53
+ const uiCatalogCaps = await (0, desired_1.getUICatalogCaps)();
54
+ driver = await (0, session_1.initSession)(uiCatalogCaps);
55
+ });
56
+ after(async function () {
57
+ await (0, session_1.deleteSession)();
58
+ });
59
+ describe('status -', function () {
60
+ it('should get the server status', async function () {
61
+ const status = await driver.status();
62
+ (0, chai_1.expect)(status.build.version).to.exist;
63
+ });
64
+ it('should return status immediately if another operation is in progress', async function () {
65
+ await driver.setTimeout({ implicit: 10000 });
66
+ const findElementPromise = driver.$('#WrongLocator');
67
+ const status = await driver.status();
68
+ (0, chai_1.expect)(status.build.version).to.exist;
69
+ (0, chai_1.expect)(util_1.default.inspect(findElementPromise).includes('pending')).to.be.true;
70
+ try {
71
+ await findElementPromise;
72
+ }
73
+ catch (err) {
74
+ (0, chai_1.expect)(err.status).to.eql(7);
75
+ }
76
+ });
77
+ });
78
+ describe('source -', function () {
79
+ function checkSource(src) {
80
+ // should have full elements
81
+ (0, chai_1.expect)(src).to.include('<AppiumAUT>');
82
+ (0, chai_1.expect)(src).to.include('<XCUIElementTypeApplication');
83
+ // should not have any XCTest errors
84
+ (0, chai_1.expect)(src).to.not.include('AX error');
85
+ }
86
+ describe('plain -', function () {
87
+ it('should get the source for the page', async function () {
88
+ const src = await driver.getPageSource();
89
+ (0, chai_1.expect)(typeof src).to.eql('string');
90
+ checkSource(src);
91
+ });
92
+ });
93
+ describe('json parsed -', function () {
94
+ it('should get source with useJSONSource', async function () {
95
+ await driver.updateSettings({ useJSONSource: true });
96
+ const src = await driver.getPageSource();
97
+ checkSource(src);
98
+ });
99
+ });
100
+ });
101
+ describe('deactivate app -', function () {
102
+ it('should background the app for the specified time', async function () {
103
+ const before = Date.now();
104
+ await driver.background(4);
105
+ (0, chai_1.expect)(Date.now() - before).to.be.above(4000);
106
+ (0, chai_1.expect)((await driver.getPageSource()).indexOf('<AppiumAUT>')).to.not.eql(-1);
107
+ });
108
+ });
109
+ describe('screenshot -', function () {
110
+ after(async function () {
111
+ try {
112
+ await driver.setOrientation('PORTRAIT');
113
+ }
114
+ catch { }
115
+ });
116
+ it('should get an app screenshot', async function () {
117
+ const screenshot = await driver.takeScreenshot();
118
+ (0, chai_1.expect)(screenshot).to.exist;
119
+ (0, chai_1.expect)(screenshot).to.be.a('string');
120
+ // make sure WDA didn't crash, by using it again
121
+ const els = await driver.$$('~Alert Views');
122
+ (0, chai_1.expect)(els.length).to.eql(1);
123
+ });
124
+ it('should get an app screenshot in landscape mode', async function () {
125
+ const screenshot1 = await driver.takeScreenshot();
126
+ (0, chai_1.expect)(screenshot1).to.exist;
127
+ try {
128
+ await driver.setOrientation('LANDSCAPE');
129
+ }
130
+ catch { }
131
+ // take a little pause while it orients, otherwise you get the screenshot
132
+ // on an angle
133
+ await bluebird_1.default.delay(500);
134
+ const screenshot2 = await driver.takeScreenshot();
135
+ (0, chai_1.expect)(screenshot2).to.exist;
136
+ (0, chai_1.expect)(screenshot2).to.not.eql(screenshot1);
137
+ });
138
+ });
139
+ describe('viewportScreenshot -', function () {
140
+ it('should get a cropped screenshot of the viewport without statusbar', async function () {
141
+ if (process.env.CI) {
142
+ // Skip on GHA. Local had no issue but GHA had failed in 'mobile: viewportScreenshot'.
143
+ return this.skip();
144
+ }
145
+ const { statusBarSize, scale } = await driver.execute('mobile: deviceScreenInfo');
146
+ const viewportRect = await driver.execute('mobile: viewportRect');
147
+ const fullScreen = await driver.takeScreenshot();
148
+ const viewScreen = await driver.execute('mobile: viewportScreenshot');
149
+ const fullImg = (0, sharp_1.default)(Buffer.from(fullScreen, 'base64'));
150
+ const { width: fullImgWidth, height: fullImgHeight } = await fullImg.metadata();
151
+ const viewImg = (0, sharp_1.default)(Buffer.from(viewScreen, 'base64'));
152
+ const { width: viewImgWidth, height: viewImgHeight } = await viewImg.metadata();
153
+ if (fullImgWidth === undefined ||
154
+ fullImgHeight === undefined ||
155
+ viewImgWidth === undefined ||
156
+ viewImgHeight === undefined) {
157
+ throw new Error('Image dimensions must not be undefined');
158
+ }
159
+ // Viewport size can be smaller than the full image size + status bar on some devices.
160
+ (0, chai_1.expect)(fullImgHeight).to.be.gte(viewImgHeight + Math.round(scale * statusBarSize.height));
161
+ (0, chai_1.expect)(viewImgHeight).to.eql(viewportRect.height);
162
+ (0, chai_1.expect)(fullImgWidth).to.be.gte(viewImgWidth);
163
+ });
164
+ });
165
+ describe('logging -', function () {
166
+ describe('types -', function () {
167
+ it('should get the list of available logs', async function () {
168
+ const actualTypes = await driver.getLogTypes();
169
+ for (const expectedType of ['syslog', 'crashlog', 'performance', 'safariConsole', 'safariNetwork', 'server']) {
170
+ (0, chai_1.expect)(actualTypes).to.include(expectedType);
171
+ }
172
+ });
173
+ });
174
+ describe('retrieval -', function () {
175
+ it('should throw an error when an invalid type is given', async function () {
176
+ await (0, chai_1.expect)(driver.getLogs('something-random')).to.be.rejected;
177
+ });
178
+ it('should get system logs', async function () {
179
+ (0, chai_1.expect)(await driver.getLogs('syslog')).to.be.an('array');
180
+ });
181
+ it('should get crash logs', async function () {
182
+ (0, chai_1.expect)(await driver.getLogs('crashlog')).to.be.an('array');
183
+ });
184
+ });
185
+ });
186
+ describe('orientation -', function () {
187
+ beforeEach(async function () {
188
+ await driver.setOrientation('PORTRAIT');
189
+ });
190
+ afterEach(async function () {
191
+ await driver.setOrientation('PORTRAIT');
192
+ });
193
+ it('should get the current orientation', async function () {
194
+ const orientation = await driver.getOrientation();
195
+ (0, chai_1.expect)(['PORTRAIT', 'LANDSCAPE']).to.include(orientation);
196
+ });
197
+ it('should set the orientation', async function () {
198
+ await driver.setOrientation('LANDSCAPE');
199
+ (0, chai_1.expect)(await driver.getOrientation()).to.eql('LANDSCAPE');
200
+ });
201
+ it('should be able to interact with an element in LANDSCAPE', async function () {
202
+ await driver.setOrientation('LANDSCAPE');
203
+ const el = await driver.$('#Buttons');
204
+ await el.click();
205
+ await (0, chai_1.expect)(driver.findElement('css selector', '#Button')).to.not.be.rejected;
206
+ await driver.back();
207
+ });
208
+ });
209
+ describe('window size -', function () {
210
+ it('should be able to get the current window size', async function () {
211
+ const size = await driver.getWindowRect();
212
+ (0, chai_1.expect)(size.width).to.be.a('number');
213
+ (0, chai_1.expect)(size.height).to.be.a('number');
214
+ });
215
+ });
216
+ describe('geo location -', function () {
217
+ it('should work on Simulator', async function () {
218
+ await (0, chai_1.expect)(driver.execute('mobile: getSimulatedLocation')).to.be.fulfilled;
219
+ await (0, chai_1.expect)(driver.execute('mobile: setSimulatedLocation', { latitude: '30.0001', longitude: '21.0002' })).to.not.be
220
+ .rejected;
221
+ });
222
+ });
223
+ describe('shake -', function () {
224
+ it('should work on Simulator', async function () {
225
+ await (0, chai_1.expect)(driver.execute('mobile: shake')).to.be.fulfilled;
226
+ });
227
+ });
228
+ describe('lock -', function () {
229
+ it('should properly lock and unlock the device', async function () {
230
+ try {
231
+ await driver.lock();
232
+ (0, chai_1.expect)(await driver.isLocked()).to.be.true;
233
+ }
234
+ finally {
235
+ await driver.unlock();
236
+ }
237
+ (0, chai_1.expect)(await driver.isLocked()).to.be.false;
238
+ });
239
+ });
240
+ describe('contexts -', function () {
241
+ before(async function () {
242
+ await driver.execute('mobile: scroll', { direction: 'down' });
243
+ await driver.$('~Web View').click();
244
+ });
245
+ after(async function () {
246
+ await driver.back();
247
+ await driver.execute('mobile: scroll', { direction: 'up' });
248
+ });
249
+ it('should start a session, navigate to url, get title', async function () {
250
+ if (process.env.CI && (0, desired_1.isIosVersionBelow)('18.0')) {
251
+ this.skip();
252
+ }
253
+ const contexts = await driver.execute('mobile: getContexts', { waitForWebviewMs: 10000 });
254
+ if (process.env.CI && contexts.length < 2) {
255
+ // Skip on CI, since the simulator may be too slow to fetch a webview context in time
256
+ return this.skip();
257
+ }
258
+ await driver.switchContext(contexts[1].id);
259
+ await driver.navigateTo(helpers_1.GUINEA_PIG_PAGE);
260
+ await (0, asyncbox_1.retryInterval)(100, 1000, async function () {
261
+ const title = await driver.getTitle();
262
+ (0, chai_1.expect)(title).to.equal('I am a page title');
263
+ });
264
+ await driver.switchContext(contexts[0].id);
265
+ });
266
+ });
267
+ });
268
+ //# sourceMappingURL=basic-e2e-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-e2e-specs.js","sourceRoot":"","sources":["../../../../test/functional/basic/basic-e2e-specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=element-e2e-specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-e2e-specs.d.ts","sourceRoot":"","sources":["../../../../test/functional/basic/element-e2e-specs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const lodash_1 = __importDefault(require("lodash"));
40
+ const bluebird_1 = __importDefault(require("bluebird"));
41
+ const asyncbox_1 = require("asyncbox");
42
+ const desired_1 = require("../desired");
43
+ const session_1 = require("../helpers/session");
44
+ const support_1 = require("appium/support");
45
+ const chai_1 = __importStar(require("chai"));
46
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
47
+ chai_1.default.use(chai_as_promised_1.default);
48
+ describe('XCUITestDriver - elements -', function () {
49
+ this.timeout(session_1.MOCHA_TIMEOUT);
50
+ let driver;
51
+ before(async function () {
52
+ const uiCatalogCaps = await (0, desired_1.getUICatalogCaps)();
53
+ driver = await (0, session_1.initSession)(uiCatalogCaps);
54
+ });
55
+ after(async function () {
56
+ await (0, session_1.deleteSession)();
57
+ });
58
+ describe('text', function () {
59
+ it('should get the text of an element', async function () {
60
+ const el = await driver.$('~Buttons');
61
+ const text = await el.getText();
62
+ (0, chai_1.expect)(text).to.eql('Buttons');
63
+ });
64
+ it('should not mix up elements', async function () {
65
+ const el1 = await driver.$('~Buttons');
66
+ const text1 = await el1.getText();
67
+ (0, chai_1.expect)(text1).to.eql('Buttons');
68
+ const el2 = await driver.$('~Image View');
69
+ const text2 = await el2.getText();
70
+ (0, chai_1.expect)(text2).to.eql('Image View');
71
+ });
72
+ });
73
+ describe('name', function () {
74
+ it('should get the name of an element', async function () {
75
+ const el = await driver.$('~Buttons');
76
+ const name = await el.getTagName();
77
+ (0, chai_1.expect)(name).to.eql('XCUIElementTypeStaticText');
78
+ });
79
+ });
80
+ describe('displayed', function () {
81
+ it('should get the displayed status for a displayed element', async function () {
82
+ const el = await driver.$('~Buttons');
83
+ (0, chai_1.expect)(await el.isDisplayed()).to.be.true;
84
+ });
85
+ it('should get the displayed status for an undisplayed element', async function () {
86
+ // this value is invisible in the view
87
+ const el = await driver.$('~Horizontal scroll bar, 1 page');
88
+ (0, chai_1.expect)(await el.isDisplayed()).to.be.false;
89
+ });
90
+ });
91
+ describe('location', function () {
92
+ it('should get the location of an element', async function () {
93
+ const el = await driver.$('~Buttons');
94
+ const loc = await el.getLocation();
95
+ (0, chai_1.expect)(loc.x).to.exist;
96
+ (0, chai_1.expect)(loc.y).to.exist;
97
+ });
98
+ it('should not mix up locations', async function () {
99
+ const el1 = await driver.$('~Date Picker');
100
+ const loc1 = await el1.getLocation();
101
+ const el2 = await driver.$('~Image View');
102
+ const loc2 = await el2.getLocation();
103
+ (0, chai_1.expect)(loc1.x).to.eql(loc2.x);
104
+ (0, chai_1.expect)(loc1.y).to.be.below(loc2.y);
105
+ });
106
+ });
107
+ describe('location_in_view', function () {
108
+ it('should get the location of an element', async function () {
109
+ const el = await driver.$('~Buttons');
110
+ const loc = await el.getLocation();
111
+ (0, chai_1.expect)(loc.x).to.exist;
112
+ (0, chai_1.expect)(loc.y).to.exist;
113
+ });
114
+ it('should not mix up locations', async function () {
115
+ const el1 = await driver.$('~Date Picker');
116
+ const loc1 = await el1.getLocation();
117
+ const el2 = await driver.$('~Image View');
118
+ const loc2 = await el2.getLocation();
119
+ (0, chai_1.expect)(loc1.x).to.eql(loc2.x);
120
+ (0, chai_1.expect)(loc1.y).to.be.below(loc2.y);
121
+ });
122
+ });
123
+ describe('size', function () {
124
+ it('should get the size of the element', async function () {
125
+ const el = await driver.$('~Buttons');
126
+ const size = await el.getSize();
127
+ (0, chai_1.expect)(size.width).to.exist;
128
+ (0, chai_1.expect)(size.height).to.exist;
129
+ });
130
+ });
131
+ describe('contentSize', function () {
132
+ it('should get the contentSize of a table', async function () {
133
+ const uiCatalogCaps = await (0, desired_1.getUICatalogCaps)();
134
+ if (support_1.util.compareVersions((0, desired_1.extractCapabilityValue)(uiCatalogCaps, 'appium:platformVersion'), '>=', '13.0')) {
135
+ return this.skip();
136
+ }
137
+ const table = await driver.$('XCUIElementTypeTable');
138
+ const contentSize = JSON.parse(await table.getAttribute('contentSize'));
139
+ (0, chai_1.expect)(contentSize.width).to.be.a('number');
140
+ (0, chai_1.expect)(contentSize.height).to.be.a('number');
141
+ (0, chai_1.expect)(contentSize.top).to.be.a('number');
142
+ (0, chai_1.expect)(contentSize.left).to.be.a('number');
143
+ (0, chai_1.expect)(contentSize.scrollableOffset).to.be.a('number');
144
+ (0, chai_1.expect)(contentSize.height).to.be.above(500);
145
+ // basically, the height of the inner content should be at least 200
146
+ // pixels more than the height of the container
147
+ (0, chai_1.expect)(contentSize.scrollableOffset).to.be.above(contentSize.height + 200);
148
+ });
149
+ it.skip('should get the contentSize of a collection view', async function () {
150
+ // TODO UICatalog doesn't seem to have collection views I could find
151
+ });
152
+ it('should not get the contentSize of other kinds of elements', async function () {
153
+ let wrongTypeEl = await driver.$('~UIKitCatalog');
154
+ if (wrongTypeEl.error) {
155
+ wrongTypeEl = await driver.$('~UICatalog');
156
+ }
157
+ await (0, chai_1.expect)(wrongTypeEl.getAttribute('contentSize')).to.eventually.be.rejectedWith(/Can't get content size for type/);
158
+ });
159
+ });
160
+ describe('touch click', function () {
161
+ it('should click an element', async function () {
162
+ await (0, asyncbox_1.retryInterval)(10, 500, async function () {
163
+ const el = await driver.$('~Buttons');
164
+ await el.click();
165
+ await bluebird_1.default.delay(1000);
166
+ (0, chai_1.expect)(await driver.$$('XCUIElementTypeButton')).to.have.length.above(4);
167
+ await driver.back();
168
+ });
169
+ });
170
+ });
171
+ describe('interactions', function () {
172
+ this.retries(2);
173
+ describe('text fields', function () {
174
+ const text1 = 'bunchoftext';
175
+ const text2 = 'differenttext';
176
+ const text3 = 'http://appium.io/';
177
+ const secureText = lodash_1.default.map(new Array(text1.length), () => '•').join('');
178
+ const phText = 'Placeholder text';
179
+ beforeEach(async function () {
180
+ const el = await (0, asyncbox_1.retryInterval)(10, 500, async function () {
181
+ return await driver.$('~Text Fields');
182
+ });
183
+ await driver.execute('mobile: scroll', { element: el.elementId, toVisible: true });
184
+ await el.click();
185
+ });
186
+ afterEach(async function () {
187
+ await driver.back();
188
+ });
189
+ describe('set value', function () {
190
+ it('should type in the text field', async function () {
191
+ const el = await driver.$('XCUIElementTypeTextField');
192
+ await el.setValue(text1);
193
+ const text = await el.getText();
194
+ (0, chai_1.expect)(text).to.eql(text1);
195
+ });
196
+ it('should type in the text field even before the keyboard is up', async function () {
197
+ const el = await driver.$('XCUIElementTypeTextField');
198
+ await el.setValue(text1);
199
+ const text = await el.getText();
200
+ (0, chai_1.expect)(text).to.eql(text1);
201
+ });
202
+ it('should type a url in the text field', async function () {
203
+ // in Travis this sometimes gets the wrong text
204
+ const retries = process.env.CI ? 5 : 1;
205
+ await (0, asyncbox_1.retryInterval)(retries, 100, async () => {
206
+ const el = await driver.$('XCUIElementTypeTextField');
207
+ await el.clearValue();
208
+ await el.setValue(text3);
209
+ const text = await el.getText();
210
+ (0, chai_1.expect)(text).to.eql(text3);
211
+ });
212
+ });
213
+ it('should be able to type into two text fields', async function () {
214
+ const els = await driver.$$('XCUIElementTypeTextField');
215
+ await els[0].setValue(text1);
216
+ await driver.hideKeyboard();
217
+ await els[1].setValue(text2);
218
+ let text = await els[0].getText();
219
+ (0, chai_1.expect)(text).to.eql(text1);
220
+ text = await els[1].getText();
221
+ (0, chai_1.expect)(text).to.eql(text2);
222
+ });
223
+ it('should type in a secure text field', async function () {
224
+ const els = await driver.$$('XCUIElementTypeSecureTextField');
225
+ await els[0].setValue(text1);
226
+ const text = await els[0].getText();
227
+ (0, chai_1.expect)(text).to.not.eql(text1);
228
+ (0, chai_1.expect)(text.length).to.eql(text1.length);
229
+ (0, chai_1.expect)(text).to.eql(secureText);
230
+ });
231
+ it('should type a backspace', async function () {
232
+ const el = await driver.$('XCUIElementTypeTextField');
233
+ await driver.elementSendKeys(el.elementId, '0123456789\uE003');
234
+ const text = await el.getText();
235
+ (0, chai_1.expect)(text).to.eql('012345678');
236
+ });
237
+ it('should type a delete', async function () {
238
+ const el = await driver.$('XCUIElementTypeTextField');
239
+ await driver.elementSendKeys(el.elementId, '0123456789\ue017');
240
+ const text = await el.getText();
241
+ (0, chai_1.expect)(text).to.eql('012345678');
242
+ });
243
+ it('should type a newline', async function () {
244
+ const el = await driver.$('XCUIElementTypeTextField');
245
+ await driver.elementSendKeys(el.elementId, '0123456789\uE006');
246
+ const text = await el.getText();
247
+ (0, chai_1.expect)(text).to.eql('0123456789');
248
+ });
249
+ });
250
+ describe('clear', function () {
251
+ it('should clear a text field', async function () {
252
+ const text1 = '0123456789abcdefghijklmnopqrstuvwxyz';
253
+ const el = await driver.$('XCUIElementTypeTextField');
254
+ await el.setValue(text1);
255
+ let text = await el.getText();
256
+ (0, chai_1.expect)(text).to.eql(text1);
257
+ await el.clearValue();
258
+ text = await el.getText();
259
+ (0, chai_1.expect)(text).to.eql(phText);
260
+ });
261
+ it('should be able to clear two text fields', async function () {
262
+ const els = await driver.$$('XCUIElementTypeTextField');
263
+ await els[0].setValue(text1);
264
+ let text = await els[0].getText();
265
+ (0, chai_1.expect)(text).to.eql(text1);
266
+ await driver.hideKeyboard();
267
+ await els[1].setValue(text2);
268
+ text = await els[1].getText();
269
+ (0, chai_1.expect)(text).to.eql(text2);
270
+ await els[0].clearValue();
271
+ text = await els[0].getText();
272
+ (0, chai_1.expect)(text).to.eql(phText);
273
+ await driver.hideKeyboard();
274
+ await els[1].clearValue();
275
+ text = await els[1].getText();
276
+ (0, chai_1.expect)(text).to.eql(phText);
277
+ });
278
+ it('should clear a secure text field', async function () {
279
+ const el = await driver.$('XCUIElementTypeSecureTextField');
280
+ await el.setValue(text1);
281
+ let text = await el.getText();
282
+ (0, chai_1.expect)(text).to.eql(secureText);
283
+ await el.clearValue();
284
+ text = await el.getText();
285
+ (0, chai_1.expect)(text).to.eql(phText);
286
+ });
287
+ });
288
+ describe('key', function () {
289
+ it('should be able to send text to the active element', async function () {
290
+ const el = await driver.$('XCUIElementTypeTextField');
291
+ // make sure the keyboard is up
292
+ await el.click();
293
+ const actions = [
294
+ // Selenium clients generate below code for `driver.action.send_keys('a').perform`.
295
+ {
296
+ type: 'pointer',
297
+ id: 'touch',
298
+ actions: [
299
+ { type: 'pause', duration: 0 },
300
+ { type: 'pause', duration: 0 },
301
+ { type: 'pause', duration: 0 },
302
+ { type: 'pause', duration: 0 },
303
+ { type: 'pause', duration: 0 },
304
+ { type: 'pause', duration: 0 }
305
+ ]
306
+ },
307
+ {
308
+ type: 'key',
309
+ id: 'keyboard',
310
+ actions: [
311
+ { type: 'keyDown', value: 'h' },
312
+ { type: 'keyUp', value: 'h' },
313
+ { type: 'keyDown', value: 'i' },
314
+ { type: 'keyUp', value: 'i' },
315
+ { type: 'keyDown', value: 'あ' },
316
+ { type: 'keyUp', value: 'あ' },
317
+ ],
318
+ },
319
+ ];
320
+ await driver.performActions(actions);
321
+ const text = await el.getText();
322
+ (0, chai_1.expect)(text).to.eql('hiあ');
323
+ });
324
+ });
325
+ describe('hide keyboard', function () {
326
+ it('should pass if the keyboard is already hidden', async function () {
327
+ await (0, chai_1.expect)(driver.hideKeyboard()).to.be.fulfilled;
328
+ });
329
+ });
330
+ });
331
+ describe('picker wheel', function () {
332
+ beforeEach(async function () {
333
+ const el = await driver.$('~Picker View');
334
+ await el.click();
335
+ });
336
+ afterEach(async function () {
337
+ await driver.back();
338
+ });
339
+ it('should be able to set the value', async function () {
340
+ const wheels = await driver.$$('XCUIElementTypePickerWheel');
341
+ const values = [65, 205, 120];
342
+ for (let i = 0; i < 3; i++) {
343
+ const wheel = wheels[i];
344
+ let value = await wheel.getAttribute('value');
345
+ (0, chai_1.expect)(parseInt(value, 10)).to.eql(values[i]);
346
+ await wheel.setValue(150);
347
+ value = await wheel.getAttribute('value');
348
+ (0, chai_1.expect)(parseInt(value, 10)).to.eql(150);
349
+ }
350
+ });
351
+ });
352
+ });
353
+ });
354
+ //# sourceMappingURL=element-e2e-specs.js.map