testcafe 1.13.0 → 1.14.2

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 (336) hide show
  1. package/CHANGELOG.md +88 -10
  2. package/LICENSE +21 -21
  3. package/README.md +52 -48
  4. package/bin/testcafe-with-v8-flag-filter.js +0 -0
  5. package/lib/api/exportable-lib/index.js +50 -50
  6. package/lib/api/request-hooks/assert-type.js +7 -7
  7. package/lib/api/request-hooks/hook-method-names.js +11 -0
  8. package/lib/api/request-hooks/hook.js +33 -39
  9. package/lib/api/request-hooks/interfaces.js +3 -3
  10. package/lib/api/request-hooks/request-logger.js +113 -111
  11. package/lib/api/request-hooks/request-mock/create-request-mock.js +12 -0
  12. package/lib/api/request-hooks/request-mock/index.js +46 -0
  13. package/lib/api/request-hooks/request-mock.js +47 -48
  14. package/lib/api/structure/base-unit.js +11 -11
  15. package/lib/api/structure/fixture.js +75 -75
  16. package/lib/api/structure/interfaces.js +2 -2
  17. package/lib/api/structure/test-file.js +31 -31
  18. package/lib/api/structure/test-timeout.js +9 -9
  19. package/lib/api/structure/test.js +85 -85
  20. package/lib/api/structure/testing-unit.js +89 -89
  21. package/lib/api/structure/unit-type.js +9 -9
  22. package/lib/api/test-controller/assertion.js +88 -88
  23. package/lib/api/test-controller/execution-context.js +82 -82
  24. package/lib/api/test-controller/index.js +359 -319
  25. package/lib/api/test-controller/proxy.js +28 -28
  26. package/lib/api/test-page-url.js +60 -60
  27. package/lib/api/test-run-tracker.js +68 -68
  28. package/lib/api/wrap-test-function.js +49 -49
  29. package/lib/assertions/executor.js +74 -74
  30. package/lib/assertions/get-fn.js +46 -46
  31. package/lib/assertions/type.js +20 -20
  32. package/lib/assets/content-types.js +9 -9
  33. package/lib/assets/injectables.js +18 -18
  34. package/lib/browser/connection/command.js +10 -10
  35. package/lib/browser/connection/error-hints.js +9 -9
  36. package/lib/browser/connection/gateway.js +159 -159
  37. package/lib/browser/connection/get-hints.js +33 -33
  38. package/lib/browser/connection/heartbeat-status.js +8 -8
  39. package/lib/browser/connection/index.js +328 -328
  40. package/lib/browser/connection/remotes-queue.js +46 -46
  41. package/lib/browser/connection/service-routes.js +12 -12
  42. package/lib/browser/connection/status.js +12 -12
  43. package/lib/browser/interfaces.js +2 -2
  44. package/lib/browser/provider/built-in/dedicated/base.js +80 -80
  45. package/lib/browser/provider/built-in/dedicated/chrome/browser-client.js +204 -204
  46. package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +17 -17
  47. package/lib/browser/provider/built-in/dedicated/chrome/config.js +110 -110
  48. package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +45 -45
  49. package/lib/browser/provider/built-in/dedicated/chrome/elapsed-upperbounds.js +15 -15
  50. package/lib/browser/provider/built-in/dedicated/chrome/index.js +102 -102
  51. package/lib/browser/provider/built-in/dedicated/chrome/interfaces.js +2 -2
  52. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +24 -24
  53. package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +29 -29
  54. package/lib/browser/provider/built-in/dedicated/edge/index.js +10 -10
  55. package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +29 -29
  56. package/lib/browser/provider/built-in/dedicated/firefox/config.js +33 -33
  57. package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +78 -78
  58. package/lib/browser/provider/built-in/dedicated/firefox/index.js +73 -73
  59. package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +36 -36
  60. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/commands.js +13 -13
  61. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +200 -200
  62. package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +17 -17
  63. package/lib/browser/provider/built-in/index.js +21 -21
  64. package/lib/browser/provider/built-in/locally-installed.js +30 -30
  65. package/lib/browser/provider/built-in/path.js +47 -47
  66. package/lib/browser/provider/built-in/remote.js +58 -58
  67. package/lib/browser/provider/index.js +303 -303
  68. package/lib/browser/provider/parse-provider-name.js +16 -16
  69. package/lib/browser/provider/plugin-host.js +121 -121
  70. package/lib/browser/provider/pool.js +115 -115
  71. package/lib/browser/provider/utils/argument-parsing.js +74 -74
  72. package/lib/browser/provider/utils/browser-starter.js +34 -34
  73. package/lib/browser/provider/utils/client-functions.js +24 -24
  74. package/lib/browser/provider/utils/get-maximized-headless-window-size.js +9 -9
  75. package/lib/cli/argument-parser.js +284 -279
  76. package/lib/cli/authentication-helper.js +35 -35
  77. package/lib/cli/cli.js +134 -134
  78. package/lib/cli/correct-browsers-and-sources.js +40 -40
  79. package/lib/cli/index.js +19 -19
  80. package/lib/cli/log.js +43 -43
  81. package/lib/cli/remotes-wizard.js +36 -36
  82. package/lib/cli/termination-handler.js +38 -38
  83. package/lib/client/automation/index.js +144 -46
  84. package/lib/client/automation/index.min.js +1 -1
  85. package/lib/client/browser/idle-page/index.html.mustache +35 -35
  86. package/lib/client/browser/idle-page/logo.svg +86 -86
  87. package/lib/client/browser/service-worker.js +4 -6
  88. package/lib/client/core/index.js +19 -13
  89. package/lib/client/core/index.min.js +1 -1
  90. package/lib/client/driver/index.js +1807 -451
  91. package/lib/client/driver/index.min.js +1 -1
  92. package/lib/client/driver/internal-properties.js +9 -9
  93. package/lib/client/test-run/iframe.js.mustache +17 -17
  94. package/lib/client/test-run/index.js.mustache +51 -51
  95. package/lib/client/ui/index.js +14 -12
  96. package/lib/client/ui/index.min.js +1 -1
  97. package/lib/client/ui/sprite.svg +42 -42
  98. package/lib/client-functions/builder-symbol.js +4 -4
  99. package/lib/client-functions/client-function-builder.js +156 -135
  100. package/lib/client-functions/replicator.js +61 -61
  101. package/lib/client-functions/return-single-prop-mode.js +8 -8
  102. package/lib/client-functions/selector-api-execution-mode.js +22 -0
  103. package/lib/client-functions/selectors/add-api.js +646 -588
  104. package/lib/client-functions/selectors/create-snapshot-methods.js +13 -13
  105. package/lib/client-functions/selectors/prepare-api-args.js +20 -20
  106. package/lib/client-functions/selectors/selector-attribute-filter.js +22 -22
  107. package/lib/client-functions/selectors/selector-builder.js +154 -150
  108. package/lib/client-functions/selectors/selector-text-filter.js +43 -43
  109. package/lib/client-functions/selectors/snapshot-properties.js +48 -48
  110. package/lib/client-functions/types.js +18 -18
  111. package/lib/compiler/babel/format-babel-produced-code.js +10 -10
  112. package/lib/compiler/babel/get-base-babel-options.js +11 -11
  113. package/lib/compiler/babel/load-libs.js +64 -62
  114. package/lib/compiler/babel/preset-stage-2.js +19 -19
  115. package/lib/compiler/compile-client-function.js +73 -73
  116. package/lib/compiler/compilers.js +33 -33
  117. package/lib/compiler/index.js +92 -92
  118. package/lib/compiler/interfaces.js +2 -2
  119. package/lib/compiler/test-file/api-based.js +146 -146
  120. package/lib/compiler/test-file/base.js +36 -36
  121. package/lib/compiler/test-file/exportble-lib-path.js +5 -5
  122. package/lib/compiler/test-file/formats/coffeescript/compiler.js +38 -38
  123. package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +29 -29
  124. package/lib/compiler/test-file/formats/es-next/compiler.js +43 -43
  125. package/lib/compiler/test-file/formats/es-next/get-test-list.js +166 -166
  126. package/lib/compiler/test-file/formats/es-next/is-flow-code.js +7 -7
  127. package/lib/compiler/test-file/formats/raw.js +85 -85
  128. package/lib/compiler/test-file/formats/typescript/compiler.js +135 -135
  129. package/lib/compiler/test-file/formats/typescript/get-test-list.js +185 -185
  130. package/lib/compiler/test-file/test-file-parser-base.js +214 -214
  131. package/lib/configuration/configuration-base.js +165 -165
  132. package/lib/configuration/constants.js +9 -9
  133. package/lib/configuration/customizable-compilers.js +7 -7
  134. package/lib/configuration/default-values.js +51 -51
  135. package/lib/configuration/interfaces.js +3 -3
  136. package/lib/configuration/option-names.js +53 -53
  137. package/lib/configuration/option-source.js +9 -9
  138. package/lib/configuration/option.js +14 -14
  139. package/lib/configuration/quarantine-option-names.js +10 -0
  140. package/lib/configuration/run-option-names.js +26 -26
  141. package/lib/configuration/screenshot-option-names.js +10 -10
  142. package/lib/configuration/testcafe-configuration.js +164 -165
  143. package/lib/configuration/types.js +2 -2
  144. package/lib/configuration/typescript-configuration.js +62 -62
  145. package/lib/custom-client-scripts/assert-type.js +7 -7
  146. package/lib/custom-client-scripts/client-script-init.js +3 -3
  147. package/lib/custom-client-scripts/client-script.js +107 -108
  148. package/lib/custom-client-scripts/get-code.js +11 -11
  149. package/lib/custom-client-scripts/get-url.js +6 -6
  150. package/lib/custom-client-scripts/load.js +15 -15
  151. package/lib/custom-client-scripts/problematic-scripts.js +2 -2
  152. package/lib/custom-client-scripts/routing.js +36 -36
  153. package/lib/custom-client-scripts/utils.js +60 -60
  154. package/lib/embedding-utils.js +83 -83
  155. package/lib/errors/create-stack-filter.js +18 -18
  156. package/lib/errors/error-list.js +26 -26
  157. package/lib/errors/get-callsite.js +31 -31
  158. package/lib/errors/internal-modules-prefix.js +8 -8
  159. package/lib/errors/is-internal-stack-frame.js +46 -46
  160. package/lib/errors/process-test-fn-error.js +37 -37
  161. package/lib/errors/runtime/index.js +123 -123
  162. package/lib/errors/runtime/templates.js +116 -114
  163. package/lib/errors/runtime/type-assertions.js +112 -112
  164. package/lib/errors/stack-cleaning-hook.js +64 -64
  165. package/lib/errors/test-run/formattable-adapter.js +59 -59
  166. package/lib/errors/test-run/index.js +302 -302
  167. package/lib/errors/test-run/render-error-template.js +31 -31
  168. package/lib/errors/test-run/templates.js +93 -95
  169. package/lib/errors/test-run/utils.js +90 -85
  170. package/lib/errors/types.js +157 -155
  171. package/lib/index.js +81 -81
  172. package/lib/live/bootstrapper.js +44 -44
  173. package/lib/live/controller.js +107 -107
  174. package/lib/live/file-watcher/index.js +67 -67
  175. package/lib/live/file-watcher/modules-graph.js +58 -58
  176. package/lib/live/keyboard-observer.js +76 -76
  177. package/lib/live/logger/index.js +64 -64
  178. package/lib/live/test-run-controller.js +96 -96
  179. package/lib/live/test-run-state.js +6 -6
  180. package/lib/live/test-run.js +56 -56
  181. package/lib/live/test-runner.js +168 -168
  182. package/lib/load-assets.js +29 -29
  183. package/lib/notifications/add-rendered-warning.js +16 -16
  184. package/lib/notifications/debug-logger.js +78 -78
  185. package/lib/notifications/deprecated.js +24 -24
  186. package/lib/notifications/information-message.js +12 -12
  187. package/lib/notifications/warning-log.js +32 -31
  188. package/lib/notifications/warning-message.js +48 -48
  189. package/lib/reporter/command/command-formatter.js +120 -109
  190. package/lib/reporter/command/format-command.js +8 -8
  191. package/lib/reporter/command/interfaces.js +2 -2
  192. package/lib/reporter/index.js +319 -314
  193. package/lib/reporter/interfaces.js +2 -2
  194. package/lib/reporter/plugin-host.js +136 -137
  195. package/lib/reporter/plugin-methods.js +12 -12
  196. package/lib/role/index.js +74 -74
  197. package/lib/role/marker-symbol.js +7 -7
  198. package/lib/role/phase.js +9 -9
  199. package/lib/runner/bootstrapper.js +272 -272
  200. package/lib/runner/browser-job-result.js +9 -9
  201. package/lib/runner/browser-job.js +153 -123
  202. package/lib/runner/browser-set.js +114 -114
  203. package/lib/runner/fixture-hook-controller.js +85 -85
  204. package/lib/runner/index.js +450 -442
  205. package/lib/runner/interfaces.js +3 -3
  206. package/lib/runner/reporter-stream-controller.js +28 -28
  207. package/lib/runner/task/index.js +152 -133
  208. package/lib/runner/task/phase.js +9 -9
  209. package/lib/runner/test-run-controller.js +166 -185
  210. package/lib/runner/tested-app.js +73 -72
  211. package/lib/screenshots/capturer.js +141 -141
  212. package/lib/screenshots/constants.js +11 -11
  213. package/lib/screenshots/crop.js +111 -111
  214. package/lib/screenshots/default-extension.js +4 -4
  215. package/lib/screenshots/index.js +67 -67
  216. package/lib/screenshots/utils.js +39 -39
  217. package/lib/services/compiler/host.js +190 -106
  218. package/lib/services/compiler/io.js +9 -9
  219. package/lib/services/compiler/protocol.js +17 -16
  220. package/lib/services/compiler/service.js +225 -106
  221. package/lib/services/compiler/test-run-proxy.js +111 -73
  222. package/lib/services/interfaces.js +3 -0
  223. package/lib/services/process-title.js +8 -8
  224. package/lib/services/serialization/prepare-options.js +17 -17
  225. package/lib/services/serialization/replicator/create-replicator.js +27 -0
  226. package/lib/services/serialization/replicator/custom-error-transform.js +28 -0
  227. package/lib/services/serialization/test-structure.js +93 -77
  228. package/lib/services/utils/ipc/interfaces.js +30 -30
  229. package/lib/services/utils/ipc/io.js +108 -108
  230. package/lib/services/utils/ipc/message.js +76 -73
  231. package/lib/services/utils/ipc/packet.js +55 -55
  232. package/lib/services/utils/ipc/proxy.js +110 -118
  233. package/lib/services/utils/ipc/transport.js +64 -64
  234. package/lib/shared/errors/index.js +382 -382
  235. package/lib/shared/node-modules-folder-name.js +4 -4
  236. package/lib/test-run/bookmark.js +90 -90
  237. package/lib/test-run/browser-console-messages.js +73 -73
  238. package/lib/test-run/browser-manipulation-queue.js +92 -92
  239. package/lib/test-run/client-messages.js +9 -9
  240. package/lib/test-run/commands/actions.js +486 -425
  241. package/lib/test-run/commands/assertion.js +45 -45
  242. package/lib/test-run/commands/base.js +14 -14
  243. package/lib/test-run/commands/browser-manipulation.js +95 -95
  244. package/lib/test-run/commands/from-object.js +82 -82
  245. package/lib/test-run/commands/observation.js +61 -61
  246. package/lib/test-run/commands/options.js +231 -215
  247. package/lib/test-run/commands/service.js +54 -48
  248. package/lib/test-run/commands/type.js +65 -60
  249. package/lib/test-run/commands/utils.js +87 -87
  250. package/lib/test-run/commands/validations/argument.js +90 -90
  251. package/lib/test-run/commands/validations/factories.js +47 -47
  252. package/lib/test-run/commands/validations/initializers.js +44 -44
  253. package/lib/test-run/debug-log.js +32 -32
  254. package/lib/test-run/execute-js-expression.js +74 -74
  255. package/lib/test-run/index.js +823 -752
  256. package/lib/test-run/marker-symbol.js +7 -7
  257. package/lib/test-run/observed-callsites-storage.js +17 -17
  258. package/lib/test-run/phase.js +16 -16
  259. package/lib/test-run/session-controller.js +104 -104
  260. package/lib/testcafe.js +119 -114
  261. package/lib/utils/assignable.js +39 -39
  262. package/lib/utils/async-event-emitter.js +28 -28
  263. package/lib/utils/async-queue.js +14 -14
  264. package/lib/utils/browser-connection-timeouts.js +19 -19
  265. package/lib/utils/callsite.js +17 -17
  266. package/lib/utils/check-file-path.js +31 -31
  267. package/lib/utils/check-url.js +51 -51
  268. package/lib/utils/convert-to-best-fit-type.js +16 -16
  269. package/lib/utils/correct-file-path.js +21 -21
  270. package/lib/utils/define-lazy-property.js +13 -13
  271. package/lib/utils/delay.js +6 -6
  272. package/lib/utils/delegated-api.js +44 -44
  273. package/lib/utils/detect-display.js +6 -6
  274. package/lib/utils/detect-ffmpeg.js +44 -44
  275. package/lib/utils/diff/colors.js +29 -29
  276. package/lib/utils/diff/index.js +53 -53
  277. package/lib/utils/diff/util.js +24 -22
  278. package/lib/utils/diff.js +29 -29
  279. package/lib/utils/escape-user-agent.js +10 -10
  280. package/lib/utils/flag-list.js +17 -17
  281. package/lib/utils/get-any-key.js +8 -8
  282. package/lib/utils/get-browser.js +8 -8
  283. package/lib/utils/get-common-path.js +34 -34
  284. package/lib/utils/get-filter-fn.js +40 -40
  285. package/lib/utils/get-options/base.js +36 -36
  286. package/lib/utils/get-options/compiler.js +33 -33
  287. package/lib/utils/get-options/grep.js +15 -15
  288. package/lib/utils/get-options/index.js +21 -19
  289. package/lib/utils/get-options/meta.js +22 -22
  290. package/lib/utils/get-options/quarantine.js +92 -0
  291. package/lib/utils/get-options/screenshot.js +17 -17
  292. package/lib/utils/get-options/ssl.js +45 -45
  293. package/lib/utils/get-options/video.js +10 -10
  294. package/lib/utils/get-viewport-width.js +18 -18
  295. package/lib/utils/guard-time-execution.js +10 -10
  296. package/lib/utils/handle-errors.js +74 -74
  297. package/lib/utils/handle-tag-args.js +8 -8
  298. package/lib/utils/http.js +30 -30
  299. package/lib/utils/is-localhost.js +11 -11
  300. package/lib/utils/is-password-input.js +11 -0
  301. package/lib/utils/is-repl.js +12 -0
  302. package/lib/utils/is-window-in-iframe.js +6 -6
  303. package/lib/utils/limit-number.js +10 -10
  304. package/lib/utils/make-reg-exp.js +7 -7
  305. package/lib/utils/moment-loader.js +20 -20
  306. package/lib/utils/parse-file-list.js +71 -71
  307. package/lib/utils/parse-user-agent.js +55 -55
  308. package/lib/utils/path-pattern.js +114 -114
  309. package/lib/utils/prepare-reporters.js +30 -30
  310. package/lib/utils/prerender-callsite.js +18 -18
  311. package/lib/utils/process.js +119 -119
  312. package/lib/utils/promisified-functions.js +46 -46
  313. package/lib/utils/re-executable-promise.js +39 -39
  314. package/lib/utils/render-callsite-sync.js +29 -29
  315. package/lib/utils/render-template.js +10 -10
  316. package/lib/utils/reporter.js +30 -30
  317. package/lib/utils/resolve-path-relatively-cwd.js +7 -7
  318. package/lib/utils/string.js +105 -105
  319. package/lib/utils/temp-directory/cleanup-process/commands.js +7 -7
  320. package/lib/utils/temp-directory/cleanup-process/index.js +143 -143
  321. package/lib/utils/temp-directory/cleanup-process/worker.js +58 -58
  322. package/lib/utils/temp-directory/index.js +87 -87
  323. package/lib/utils/temp-directory/lockfile.js +56 -56
  324. package/lib/utils/thennable.js +7 -7
  325. package/lib/utils/timer.js +15 -15
  326. package/lib/utils/to-posix-path.js +8 -8
  327. package/lib/utils/types.js +2 -2
  328. package/lib/video-recorder/interfaces.js +2 -2
  329. package/lib/video-recorder/process.js +126 -126
  330. package/lib/video-recorder/recorder.js +136 -136
  331. package/lib/video-recorder/test-run-video-recorder.js +69 -69
  332. package/lib/video-recorder/videos.js +37 -37
  333. package/package.json +7 -7
  334. package/ts-defs/index.d.ts +109 -17
  335. package/ts-defs/selectors.d.ts +95 -7
  336. package/ts-defs/testcafe-scripts.d.ts +96 -8
@@ -1,41 +1,41 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const log_1 = __importDefault(require("./log"));
9
- const promisify_event_1 = __importDefault(require("promisify-event"));
10
- const dedent_1 = __importDefault(require("dedent"));
11
- async function default_1(testCafe, remoteCount, showQRCode) {
12
- const connectionPromises = [];
13
- if (remoteCount) {
14
- log_1.default.hideSpinner();
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const log_1 = __importDefault(require("./log"));
9
+ const promisify_event_1 = __importDefault(require("promisify-event"));
10
+ const dedent_1 = __importDefault(require("dedent"));
11
+ async function default_1(testCafe, remoteCount, showQRCode) {
12
+ const connectionPromises = [];
13
+ if (remoteCount) {
14
+ log_1.default.hideSpinner();
15
15
  const description = dedent_1.default(`
16
16
  Connecting ${remoteCount} remote browser(s)...
17
17
  Navigate to the following URL from each remote browser.
18
- `);
19
- log_1.default.write(description);
20
- if (showQRCode)
21
- log_1.default.write('You can either enter the URL or scan the QR-code.');
22
- const connectionUrl = testCafe.browserConnectionGateway.connectUrl;
23
- log_1.default.write(`Connect URL: ${chalk_1.default.underline.blue(connectionUrl)}`);
24
- if (showQRCode)
25
- qrcode_terminal_1.default.generate(connectionUrl);
26
- for (let i = 0; i < remoteCount; i++) {
27
- connectionPromises.push(testCafe
28
- .createBrowserConnection()
29
- .then((bc) => promisify_event_1.default(bc, 'ready').then(() => bc))
30
- .then((bc) => {
31
- log_1.default.write(`${chalk_1.default.green('CONNECTED')} ${bc.userAgent}`);
32
- return bc;
33
- }));
34
- }
35
- log_1.default.showSpinner();
36
- }
37
- return await Promise.all(connectionPromises);
38
- }
39
- exports.default = default_1;
18
+ `);
19
+ log_1.default.write(description);
20
+ if (showQRCode)
21
+ log_1.default.write('You can either enter the URL or scan the QR-code.');
22
+ const connectionUrl = testCafe.browserConnectionGateway.connectUrl;
23
+ log_1.default.write(`Connect URL: ${chalk_1.default.underline.blue(connectionUrl)}`);
24
+ if (showQRCode)
25
+ qrcode_terminal_1.default.generate(connectionUrl);
26
+ for (let i = 0; i < remoteCount; i++) {
27
+ connectionPromises.push(testCafe
28
+ .createBrowserConnection()
29
+ .then((bc) => promisify_event_1.default(bc, 'ready').then(() => bc))
30
+ .then((bc) => {
31
+ log_1.default.write(`${chalk_1.default.green('CONNECTED')} ${bc.userAgent}`);
32
+ return bc;
33
+ }));
34
+ }
35
+ log_1.default.showSpinner();
36
+ }
37
+ return await Promise.all(connectionPromises);
38
+ }
39
+ exports.default = default_1;
40
40
  module.exports = exports.default;
41
41
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3Rlcy13aXphcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3JlbW90ZXMtd2l6YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0VBQXFDO0FBQ3JDLGtEQUEwQjtBQUMxQixnREFBd0I7QUFDeEIsc0VBQTZDO0FBQzdDLG9EQUE0QjtBQVViLEtBQUssb0JBQVcsUUFBa0IsRUFBRSxXQUFtQixFQUFFLFVBQW1CO0lBQ3ZGLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBRTlCLElBQUksV0FBVyxFQUFFO1FBQ2IsYUFBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWxCLE1BQU0sV0FBVyxHQUFHLGdCQUFNLENBQUM7eUJBQ1YsV0FBVzs7U0FFM0IsQ0FBQyxDQUFDO1FBRUgsYUFBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2QixJQUFJLFVBQVU7WUFDVixhQUFHLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFFbkUsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQztRQUVuRSxhQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixlQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakUsSUFBSSxVQUFVO1lBQ1YseUJBQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUTtpQkFDM0IsdUJBQXVCLEVBQUU7aUJBQ3pCLElBQUksQ0FBQyxDQUFDLEVBQXFCLEVBQUUsRUFBRSxDQUFDLHlCQUFjLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDM0UsSUFBSSxDQUFDLENBQUMsRUFBcUIsRUFBRSxFQUFFO2dCQUM1QixhQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsZUFBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFFekQsT0FBTyxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFFRCxhQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDckI7SUFFRCxPQUFPLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUF2Q0QsNEJBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHFyY29kZSBmcm9tICdxcmNvZGUtdGVybWluYWwnO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2cnO1xuaW1wb3J0IHByb21pc2lmeUV2ZW50IGZyb20gJ3Byb21pc2lmeS1ldmVudCc7XG5pbXBvcnQgZGVkZW50IGZyb20gJ2RlZGVudCc7XG5cbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24vZ2F0ZXdheSc7XG5cbmludGVyZmFjZSBUZXN0Q2FmZSB7XG4gICAgYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5OiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXk7XG4gICAgY3JlYXRlQnJvd3NlckNvbm5lY3Rpb24oKTogUHJvbWlzZTxCcm93c2VyQ29ubmVjdGlvbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICh0ZXN0Q2FmZTogVGVzdENhZmUsIHJlbW90ZUNvdW50OiBudW1iZXIsIHNob3dRUkNvZGU6IGJvb2xlYW4pOiBQcm9taXNlPEJyb3dzZXJDb25uZWN0aW9uW10+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvbWlzZXMgPSBbXTtcblxuICAgIGlmIChyZW1vdGVDb3VudCkge1xuICAgICAgICBsb2cuaGlkZVNwaW5uZXIoKTtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGRlZGVudChgXG4gICAgICAgICAgICBDb25uZWN0aW5nICR7cmVtb3RlQ291bnR9IHJlbW90ZSBicm93c2VyKHMpLi4uXG4gICAgICAgICAgICBOYXZpZ2F0ZSB0byB0aGUgZm9sbG93aW5nIFVSTCBmcm9tIGVhY2ggcmVtb3RlIGJyb3dzZXIuXG4gICAgICAgIGApO1xuXG4gICAgICAgIGxvZy53cml0ZShkZXNjcmlwdGlvbik7XG5cbiAgICAgICAgaWYgKHNob3dRUkNvZGUpXG4gICAgICAgICAgICBsb2cud3JpdGUoJ1lvdSBjYW4gZWl0aGVyIGVudGVyIHRoZSBVUkwgb3Igc2NhbiB0aGUgUVItY29kZS4nKTtcblxuICAgICAgICBjb25zdCBjb25uZWN0aW9uVXJsID0gdGVzdENhZmUuYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LmNvbm5lY3RVcmw7XG5cbiAgICAgICAgbG9nLndyaXRlKGBDb25uZWN0IFVSTDogJHtjaGFsay51bmRlcmxpbmUuYmx1ZShjb25uZWN0aW9uVXJsKX1gKTtcblxuICAgICAgICBpZiAoc2hvd1FSQ29kZSlcbiAgICAgICAgICAgIHFyY29kZS5nZW5lcmF0ZShjb25uZWN0aW9uVXJsKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbW90ZUNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb25Qcm9taXNlcy5wdXNoKHRlc3RDYWZlXG4gICAgICAgICAgICAgICAgLmNyZWF0ZUJyb3dzZXJDb25uZWN0aW9uKClcbiAgICAgICAgICAgICAgICAudGhlbigoYmM6IEJyb3dzZXJDb25uZWN0aW9uKSA9PiBwcm9taXNpZnlFdmVudChiYywgJ3JlYWR5JykudGhlbigoKSA9PiBiYykpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGJjOiBCcm93c2VyQ29ubmVjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2cud3JpdGUoYCR7Y2hhbGsuZ3JlZW4oJ0NPTk5FQ1RFRCcpfSAke2JjLnVzZXJBZ2VudH1gKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBsb2cuc2hvd1NwaW5uZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoY29ubmVjdGlvblByb21pc2VzKTtcbn1cbiJdfQ==
@@ -1,40 +1,40 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const events_1 = __importDefault(require("events"));
7
- const TERMINATION_TYPES = {
8
- sigint: 'sigint',
9
- sigbreak: 'sigbreak',
10
- shutdown: 'shutdown'
11
- };
12
- const TERMINATION_LEVEL_INCREASED_EVENT = 'termination-level-increased';
13
- class TerminationHandler extends events_1.default {
14
- constructor() {
15
- super();
16
- this.handledSignalsCount = {
17
- [TERMINATION_TYPES.sigint]: 0,
18
- [TERMINATION_TYPES.sigbreak]: 0,
19
- [TERMINATION_TYPES.shutdown]: 0
20
- };
21
- this.terminationLevel = 0;
22
- this._setupHandlers();
23
- }
24
- _exitEventHandler(terminationType) {
25
- this.handledSignalsCount[terminationType]++;
26
- if (this.handledSignalsCount[terminationType] > this.terminationLevel) {
27
- this.terminationLevel = this.handledSignalsCount[terminationType];
28
- this.emit(TERMINATION_LEVEL_INCREASED_EVENT, this.terminationLevel);
29
- }
30
- }
31
- _setupHandlers() {
32
- process.on('SIGINT', () => this._exitEventHandler(TERMINATION_TYPES.sigint));
33
- process.on('SIGBREAK', () => this._exitEventHandler(TERMINATION_TYPES.sigbreak));
34
- process.on('message', message => message === 'shutdown' && this._exitEventHandler(TERMINATION_TYPES.shutdown));
35
- }
36
- }
37
- exports.default = TerminationHandler;
38
- TerminationHandler.TERMINATION_LEVEL_INCREASED_EVENT = TERMINATION_LEVEL_INCREASED_EVENT;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const events_1 = __importDefault(require("events"));
7
+ const TERMINATION_TYPES = {
8
+ sigint: 'sigint',
9
+ sigbreak: 'sigbreak',
10
+ shutdown: 'shutdown'
11
+ };
12
+ const TERMINATION_LEVEL_INCREASED_EVENT = 'termination-level-increased';
13
+ class TerminationHandler extends events_1.default {
14
+ constructor() {
15
+ super();
16
+ this.handledSignalsCount = {
17
+ [TERMINATION_TYPES.sigint]: 0,
18
+ [TERMINATION_TYPES.sigbreak]: 0,
19
+ [TERMINATION_TYPES.shutdown]: 0
20
+ };
21
+ this.terminationLevel = 0;
22
+ this._setupHandlers();
23
+ }
24
+ _exitEventHandler(terminationType) {
25
+ this.handledSignalsCount[terminationType]++;
26
+ if (this.handledSignalsCount[terminationType] > this.terminationLevel) {
27
+ this.terminationLevel = this.handledSignalsCount[terminationType];
28
+ this.emit(TERMINATION_LEVEL_INCREASED_EVENT, this.terminationLevel);
29
+ }
30
+ }
31
+ _setupHandlers() {
32
+ process.on('SIGINT', () => this._exitEventHandler(TERMINATION_TYPES.sigint));
33
+ process.on('SIGBREAK', () => this._exitEventHandler(TERMINATION_TYPES.sigbreak));
34
+ process.on('message', message => message === 'shutdown' && this._exitEventHandler(TERMINATION_TYPES.shutdown));
35
+ }
36
+ }
37
+ exports.default = TerminationHandler;
38
+ TerminationHandler.TERMINATION_LEVEL_INCREASED_EVENT = TERMINATION_LEVEL_INCREASED_EVENT;
39
39
  module.exports = exports.default;
40
40
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYXRpb24taGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvdGVybWluYXRpb24taGFuZGxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUFrQztBQUdsQyxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLE1BQU0sRUFBSSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFFBQVEsRUFBRSxVQUFVO0NBQ3ZCLENBQUM7QUFFRixNQUFNLGlDQUFpQyxHQUFHLDZCQUE2QixDQUFDO0FBRXhFLE1BQXFCLGtCQUFtQixTQUFRLGdCQUFZO0lBQ3hEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsbUJBQW1CLEdBQUc7WUFDdkIsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBSSxDQUFDO1lBQy9CLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDbEMsQ0FBQztRQUVGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxlQUFlO1FBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRWxFLElBQUksQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdkU7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRWpGLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0NBQ0o7QUEvQkQscUNBK0JDO0FBRUQsa0JBQWtCLENBQUMsaUNBQWlDLEdBQUcsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50cyc7XG5cblxuY29uc3QgVEVSTUlOQVRJT05fVFlQRVMgPSB7XG4gICAgc2lnaW50OiAgICdzaWdpbnQnLFxuICAgIHNpZ2JyZWFrOiAnc2lnYnJlYWsnLFxuICAgIHNodXRkb3duOiAnc2h1dGRvd24nXG59O1xuXG5jb25zdCBURVJNSU5BVElPTl9MRVZFTF9JTkNSRUFTRURfRVZFTlQgPSAndGVybWluYXRpb24tbGV2ZWwtaW5jcmVhc2VkJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVybWluYXRpb25IYW5kbGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVkU2lnbmFsc0NvdW50ID0ge1xuICAgICAgICAgICAgW1RFUk1JTkFUSU9OX1RZUEVTLnNpZ2ludF06ICAgMCxcbiAgICAgICAgICAgIFtURVJNSU5BVElPTl9UWVBFUy5zaWdicmVha106IDAsXG4gICAgICAgICAgICBbVEVSTUlOQVRJT05fVFlQRVMuc2h1dGRvd25dOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy50ZXJtaW5hdGlvbkxldmVsID0gMDtcblxuICAgICAgICB0aGlzLl9zZXR1cEhhbmRsZXJzKCk7XG4gICAgfVxuXG4gICAgX2V4aXRFdmVudEhhbmRsZXIgKHRlcm1pbmF0aW9uVHlwZSkge1xuICAgICAgICB0aGlzLmhhbmRsZWRTaWduYWxzQ291bnRbdGVybWluYXRpb25UeXBlXSsrO1xuXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZWRTaWduYWxzQ291bnRbdGVybWluYXRpb25UeXBlXSA+IHRoaXMudGVybWluYXRpb25MZXZlbCkge1xuICAgICAgICAgICAgdGhpcy50ZXJtaW5hdGlvbkxldmVsID0gdGhpcy5oYW5kbGVkU2lnbmFsc0NvdW50W3Rlcm1pbmF0aW9uVHlwZV07XG5cbiAgICAgICAgICAgIHRoaXMuZW1pdChURVJNSU5BVElPTl9MRVZFTF9JTkNSRUFTRURfRVZFTlQsIHRoaXMudGVybWluYXRpb25MZXZlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfc2V0dXBIYW5kbGVycyAoKSB7XG4gICAgICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHRoaXMuX2V4aXRFdmVudEhhbmRsZXIoVEVSTUlOQVRJT05fVFlQRVMuc2lnaW50KSk7XG4gICAgICAgIHByb2Nlc3Mub24oJ1NJR0JSRUFLJywgKCkgPT4gdGhpcy5fZXhpdEV2ZW50SGFuZGxlcihURVJNSU5BVElPTl9UWVBFUy5zaWdicmVhaykpO1xuXG4gICAgICAgIHByb2Nlc3Mub24oJ21lc3NhZ2UnLCBtZXNzYWdlID0+IG1lc3NhZ2UgPT09ICdzaHV0ZG93bicgJiYgdGhpcy5fZXhpdEV2ZW50SGFuZGxlcihURVJNSU5BVElPTl9UWVBFUy5zaHV0ZG93bikpO1xuICAgIH1cbn1cblxuVGVybWluYXRpb25IYW5kbGVyLlRFUk1JTkFUSU9OX0xFVkVMX0lOQ1JFQVNFRF9FVkVOVCA9IFRFUk1JTkFUSU9OX0xFVkVMX0lOQ1JFQVNFRF9FVkVOVDtcbiJdfQ==
@@ -1,16 +1,92 @@
1
- // NOTE: We should have the capability to initialize scripts with different contexts.
2
- // This is required for iframes without the src attribute because Hammerhead does not
3
- // inject scripts into such iframes. So, we wrap all scripts in initialization functions.
4
- (function () {
5
- function initTestCafeAutomation(window, isIFrameWithoutSrc) {
6
- var document = window.document;
7
-
1
+ window['%hammerhead%'].utils.removeInjectedScript();
2
+
3
+ // NOTE: We should have the capability to initialize scripts with different contexts.
4
+ // This is required for iframes without the src attribute because Hammerhead does not
5
+ // inject scripts into such iframes. So, we wrap all scripts in initialization functions.
6
+ (function () {
7
+ function initTestCafeAutomation(window, isIFrameWithoutSrc) {
8
+ var document = window.document;
9
+
8
10
  (function (hammerhead, testCafeCore, Promise$f, testCafeUI) {
9
11
  var hammerhead__default = 'default' in hammerhead ? hammerhead['default'] : hammerhead;
10
12
  var testCafeCore__default = 'default' in testCafeCore ? testCafeCore['default'] : testCafeCore;
11
13
  Promise$f = Promise$f && Object.prototype.hasOwnProperty.call(Promise$f, 'default') ? Promise$f['default'] : Promise$f;
12
14
  testCafeUI = testCafeUI && Object.prototype.hasOwnProperty.call(testCafeUI, 'default') ? testCafeUI['default'] : testCafeUI;
13
15
 
16
+ var nativeMethods = hammerhead__default.nativeMethods;
17
+ var MOUSE_EVENT_NAME_RE = /^((mouse\w+)|((dbl)?click)|(contextmenu))$/;
18
+ var DRAG_EVENT_NAME_RE = /^((drag\w*)|(drop))$/;
19
+ var KEY_EVENT_NAME_RE = /^key\w+$/;
20
+ var INPUT_EVENT_NAME_RE = /^(before)?input$/;
21
+ var FOCUS_EVENT_NAME_RE = /^(blur|(focus(in|out)?))$/;
22
+ var POINTER_EVENT_NAME_RE = /^pointer\w+/;
23
+ var DEFAULT_MOUSE_EVENT_DETAIL_PROP_VALUE = {
24
+ click: 1,
25
+ dblclick: 2,
26
+ mousedown: 1,
27
+ mouseup: 1
28
+ };
29
+ // NOTE: default e.buttons for left button pressed
30
+ var DEFAULT_BUTTONS_PARAMETER = 1;
31
+ var EVENT_CTORS = {
32
+ MouseEvent: 'MouseEvent',
33
+ PointerEvent: 'PointerEvent',
34
+ KeyboardEvent: 'KeyboardEvent',
35
+ InputEvent: 'InputEvent',
36
+ FocusEvent: 'FocusEvent'
37
+ };
38
+ var DispatchEventAutomation = /** @class */ (function () {
39
+ function DispatchEventAutomation(element, eventName, options) {
40
+ this.element = element;
41
+ this.eventName = eventName;
42
+ this.options = options;
43
+ }
44
+ DispatchEventAutomation.prototype.run = function () {
45
+ var _a = this.options, bubbles = _a.bubbles, cancelable = _a.cancelable, detail = _a.detail, view = _a.view, buttons = _a.buttons;
46
+ bubbles = bubbles !== false;
47
+ cancelable = cancelable !== false;
48
+ detail = detail || DEFAULT_MOUSE_EVENT_DETAIL_PROP_VALUE[this.eventName];
49
+ view = window;
50
+ buttons = buttons === void 0 ? DEFAULT_BUTTONS_PARAMETER : buttons;
51
+ // eslint-disable-next-line no-restricted-globals
52
+ Object.assign(this.options, { bubbles: bubbles, cancelable: cancelable, detail: detail, view: view, buttons: buttons });
53
+ var Ctor = DispatchEventAutomation._getEventCtorByEventType(this.eventName, this.options.eventConstructor);
54
+ if (Ctor) {
55
+ var event_1 = new Ctor(this.eventName, this.options);
56
+ this.element.dispatchEvent(event_1);
57
+ }
58
+ };
59
+ DispatchEventAutomation._getEventCtorByEventType = function (eventName, eventConstructor) {
60
+ if (eventConstructor && typeof DispatchEventAutomation._getEventCtorFromWindow(eventConstructor) === 'function') {
61
+ var Ctor = DispatchEventAutomation._getEventCtorFromNativeMethods(eventConstructor);
62
+ if (Ctor && typeof Ctor === 'function')
63
+ return Ctor;
64
+ }
65
+ if (MOUSE_EVENT_NAME_RE.test(eventName))
66
+ return DispatchEventAutomation._getEventCtorFromNativeMethods(EVENT_CTORS.MouseEvent);
67
+ if (DRAG_EVENT_NAME_RE.test(eventName))
68
+ return DispatchEventAutomation._getEventCtorFromNativeMethods(EVENT_CTORS.MouseEvent);
69
+ if (POINTER_EVENT_NAME_RE.test(eventName))
70
+ return DispatchEventAutomation._getEventCtorFromNativeMethods(EVENT_CTORS.PointerEvent);
71
+ if (KEY_EVENT_NAME_RE.test(eventName))
72
+ return DispatchEventAutomation._getEventCtorFromNativeMethods(EVENT_CTORS.KeyboardEvent);
73
+ if (INPUT_EVENT_NAME_RE.test(eventName))
74
+ return DispatchEventAutomation._getEventCtorFromNativeMethods(EVENT_CTORS.InputEvent);
75
+ if (FOCUS_EVENT_NAME_RE.test(eventName))
76
+ return DispatchEventAutomation._getEventCtorFromNativeMethods(EVENT_CTORS.FocusEvent);
77
+ return DispatchEventAutomation._getEventCtorFromNativeMethods('CustomEvent');
78
+ };
79
+ DispatchEventAutomation._getEventCtorFromNativeMethods = function (eventCtor) {
80
+ var ctor = nativeMethods['Window' + eventCtor] || DispatchEventAutomation._getEventCtorFromWindow(eventCtor);
81
+ return ctor;
82
+ };
83
+ DispatchEventAutomation._getEventCtorFromWindow = function (eventCtor) {
84
+ // @ts-ignore
85
+ return window[eventCtor];
86
+ };
87
+ return DispatchEventAutomation;
88
+ }());
89
+
14
90
  function isIframeWindow(window) {
15
91
  return window.top !== window;
16
92
  }
@@ -421,7 +497,7 @@
421
497
 
422
498
  var browserUtils$1 = hammerhead__default.utils.browser;
423
499
  var Promise$1 = hammerhead__default.Promise;
424
- var nativeMethods = hammerhead__default.nativeMethods;
500
+ var nativeMethods$1 = hammerhead__default.nativeMethods;
425
501
  var positionUtils = testCafeCore__default.positionUtils;
426
502
  var domUtils$1 = testCafeCore__default.domUtils;
427
503
  function getElementFromPoint(x, y, underTopShadowUIElement) {
@@ -440,7 +516,7 @@
440
516
  function findElementOrNonEmptyChildFromPoint(x, y, element) {
441
517
  var topElement = positionUtils.getElementFromPoint(x, y);
442
518
  var isNonEmptyChild = domUtils$1.containsElement(element, topElement) &&
443
- nativeMethods.nodeTextContentGetter.call(topElement).length;
519
+ nativeMethods$1.nodeTextContentGetter.call(topElement).length;
444
520
  if (topElement && topElement === element || isNonEmptyChild)
445
521
  return topElement;
446
522
  return null;
@@ -464,9 +540,9 @@
464
540
  domUtils$1.getParents(expectedElement, 'a').length;
465
541
  var isTopElementChildOfLink = isLinkOrChildExpected &&
466
542
  domUtils$1.containsElement(expectedElement, topElement) &&
467
- nativeMethods.nodeTextContentGetter.call(topElement).length;
543
+ nativeMethods$1.nodeTextContentGetter.call(topElement).length;
468
544
  var shouldSearchForMultilineLink = isLinkOrChildExpected && !isTopElementChildOfLink &&
469
- nativeMethods.nodeTextContentGetter.call(expectedElement).length;
545
+ nativeMethods$1.nodeTextContentGetter.call(expectedElement).length;
470
546
  if (!shouldSearchForMultilineLink)
471
547
  return topElement;
472
548
  var linkRect = expectedElement.getBoundingClientRect();
@@ -1334,13 +1410,15 @@
1334
1410
  var _this = _super.call(this) || this;
1335
1411
  _this.replace = false;
1336
1412
  _this.paste = false;
1413
+ _this.confidential = void 0;
1337
1414
  _this._assignFrom(obj, validate);
1338
1415
  return _this;
1339
1416
  }
1340
1417
  TypeOptions.prototype._getAssignableProperties = function () {
1341
1418
  return _super.prototype._getAssignableProperties.call(this).concat([
1342
1419
  { name: 'replace', type: booleanOption },
1343
- { name: 'paste', type: booleanOption }
1420
+ { name: 'paste', type: booleanOption },
1421
+ { name: 'confidential', type: booleanOption }
1344
1422
  ]);
1345
1423
  };
1346
1424
  return TypeOptions;
@@ -1396,7 +1474,23 @@
1396
1474
  ];
1397
1475
  };
1398
1476
  return AssertionOptions;
1399
- }(Assignable));
1477
+ }(Assignable));
1478
+ // Press
1479
+ var PressOptions = /** @class */ (function (_super) {
1480
+ __extends(PressOptions, _super);
1481
+ function PressOptions(obj, validate) {
1482
+ var _this = _super.call(this) || this;
1483
+ _this.confidential = void 0;
1484
+ _this._assignFrom(obj, validate);
1485
+ return _this;
1486
+ }
1487
+ PressOptions.prototype._getAssignableProperties = function () {
1488
+ return _super.prototype._getAssignableProperties.call(this).concat([
1489
+ { name: 'confidential', type: booleanOption }
1490
+ ]);
1491
+ };
1492
+ return PressOptions;
1493
+ }(ActionOptions));
1400
1494
 
1401
1495
  function getPointsDistance(start, end) {
1402
1496
  return Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));
@@ -1436,9 +1530,9 @@
1436
1530
  }
1437
1531
 
1438
1532
  var Promise$2 = hammerhead__default.Promise;
1439
- var nativeMethods$1 = hammerhead__default.nativeMethods;
1533
+ var nativeMethods$2 = hammerhead__default.nativeMethods;
1440
1534
  function nextTick () {
1441
- return new Promise$2(function (resolve) { return nativeMethods$1.setTimeout.call(window, resolve, 0); });
1535
+ return new Promise$2(function (resolve) { return nativeMethods$2.setTimeout.call(window, resolve, 0); });
1442
1536
  }
1443
1537
 
1444
1538
  var DragAndDropState = /** @class */ (function () {
@@ -1506,7 +1600,7 @@
1506
1600
 
1507
1601
  var eventSimulator = hammerhead__default.eventSandbox.eventSimulator;
1508
1602
  var extend = hammerhead__default.utils.extend;
1509
- var nativeMethods$2 = hammerhead__default.nativeMethods;
1603
+ var nativeMethods$3 = hammerhead__default.nativeMethods;
1510
1604
  var MoveBehaviour = /** @class */ (function () {
1511
1605
  function MoveBehaviour() {
1512
1606
  }
@@ -1515,7 +1609,7 @@
1515
1609
  var currentParent = prevElement;
1516
1610
  while (currentParent && currentParent !== commonAncestor) {
1517
1611
  eventSimulator.mouseleave(currentParent, extend({ relatedTarget: currentElement }, options));
1518
- currentParent = nativeMethods$2.nodeParentNodeGetter.call(currentParent);
1612
+ currentParent = nativeMethods$3.nodeParentNodeGetter.call(currentParent);
1519
1613
  }
1520
1614
  };
1521
1615
  MoveBehaviour.enterElement = function (currentElement, prevElement, commonAncestor, options) {
@@ -1654,7 +1748,7 @@
1654
1748
  };
1655
1749
 
1656
1750
  var Promise$3 = hammerhead__default.Promise;
1657
- var nativeMethods$3 = hammerhead__default.nativeMethods;
1751
+ var nativeMethods$4 = hammerhead__default.nativeMethods;
1658
1752
  var featureDetection = hammerhead__default.utils.featureDetection;
1659
1753
  var htmlUtils = hammerhead__default.utils.html;
1660
1754
  var urlUtils = hammerhead__default.utils.url;
@@ -1687,7 +1781,7 @@
1687
1781
  while (parentNode) {
1688
1782
  if (parentNode.draggable)
1689
1783
  return parentNode;
1690
- parentNode = nativeMethods$3.nodeParentNodeGetter.call(parentNode);
1784
+ parentNode = nativeMethods$4.nodeParentNodeGetter.call(parentNode);
1691
1785
  }
1692
1786
  return null;
1693
1787
  }
@@ -1882,7 +1976,7 @@
1882
1976
  this.y = this.endPoint.y;
1883
1977
  }
1884
1978
  else if (!this.startTime) {
1885
- this.startTime = nativeMethods$3.dateNow();
1979
+ this.startTime = nativeMethods$4.dateNow();
1886
1980
  this.endTime = this.startTime + this.movingTime;
1887
1981
  // NOTE: the mousemove event can't be simulated at the point where the cursor
1888
1982
  // was located at the start. Therefore, we add a minimal distance 1 px.
@@ -1890,7 +1984,7 @@
1890
1984
  this.y += this.distanceY > 0 ? 1 : -1;
1891
1985
  }
1892
1986
  else {
1893
- var currentTime = Math.min(nativeMethods$3.dateNow(), this.endTime);
1987
+ var currentTime = Math.min(nativeMethods$4.dateNow(), this.endTime);
1894
1988
  var progress = (currentTime - this.startTime) / (this.endTime - this.startTime);
1895
1989
  this.x = Math.floor(this.startPoint.x + this.distanceX * progress);
1896
1990
  this.y = Math.floor(this.startPoint.y + this.distanceY * progress);
@@ -1987,7 +2081,7 @@
1987
2081
  var srcAttr = isLink ? 'href' : 'src';
1988
2082
  var parsedUrl = urlUtils.parseProxyUrl(_this.dragElement[srcAttr]);
1989
2083
  var src = parsedUrl ? parsedUrl.destUrl : _this.dragElement[srcAttr];
1990
- var outerHTML = htmlUtils.cleanUpHtml(nativeMethods$3.elementOuterHTMLGetter.call(_this.dragElement));
2084
+ var outerHTML = htmlUtils.cleanUpHtml(nativeMethods$4.elementOuterHTMLGetter.call(_this.dragElement));
1991
2085
  _this.dragAndDropState.dataTransfer.setData('text/plain', src);
1992
2086
  _this.dragAndDropState.dataTransfer.setData('text/uri-list', src);
1993
2087
  _this.dragAndDropState.dataTransfer.setData('text/html', outerHTML);
@@ -2141,13 +2235,16 @@
2141
2235
  throw new Error(ERROR_TYPES.elementIsInvisibleError);
2142
2236
  if (useStrictElementCheck && (!state.isTarget || state.inMoving))
2143
2237
  throw new Error(ERROR_TYPES.foundElementIsNotTarget);
2238
+ return state;
2144
2239
  };
2145
- VisibleElementAutomation.prototype._ensureElement = function (useStrictElementCheck, skipCheckAfterMoving) {
2240
+ VisibleElementAutomation.prototype._ensureElement = function (useStrictElementCheck, skipCheckAfterMoving, skipMoving) {
2146
2241
  var _this = this;
2147
2242
  return this
2148
2243
  ._wrapAction(function () { return _this._scrollToElement(); })
2149
2244
  .then(function (state) { return VisibleElementAutomation._checkElementState(state, useStrictElementCheck); })
2150
- .then(function () { return _this._wrapAction(function () { return _this._moveToElement(); }); })
2245
+ .then(function (state) {
2246
+ return skipMoving ? state : _this._wrapAction(function () { return _this._moveToElement(); });
2247
+ })
2151
2248
  .then(function (state) {
2152
2249
  if (!skipCheckAfterMoving)
2153
2250
  VisibleElementAutomation._checkElementState(state, useStrictElementCheck);
@@ -2182,7 +2279,7 @@
2182
2279
  }
2183
2280
 
2184
2281
  var Promise$5 = hammerhead__default.Promise;
2185
- var nativeMethods$4 = hammerhead__default.nativeMethods;
2282
+ var nativeMethods$5 = hammerhead__default.nativeMethods;
2186
2283
  var browserUtils$3 = hammerhead__default.utils.browser;
2187
2284
  var focusBlurSandbox = hammerhead__default.eventSandbox.focusBlur;
2188
2285
  var contentEditable = testCafeCore__default.contentEditable;
@@ -2257,7 +2354,7 @@
2257
2354
  preventScrolling = false;
2258
2355
  if (!isElementFocusable && !isContentEditable) {
2259
2356
  curDocument = domUtils$3.findDocument(elementForFocus);
2260
- curActiveElement = nativeMethods$4.documentActiveElementGetter.call(curDocument);
2357
+ curActiveElement = nativeMethods$5.documentActiveElementGetter.call(curDocument);
2261
2358
  isActiveElementBody = domUtils$3.isBodyElement(curActiveElement);
2262
2359
  focusableParent = domUtils$3.isBodyElement(elementForFocus) ?
2263
2360
  elementForFocus : domUtils$3.getFocusableParent(elementForFocus);
@@ -2629,7 +2726,7 @@
2629
2726
  var featureDetection$2 = hammerhead__default.utils.featureDetection;
2630
2727
  var eventSimulator$6 = hammerhead__default.eventSandbox.eventSimulator;
2631
2728
  var focusBlurSandbox$1 = hammerhead__default.eventSandbox.focusBlur;
2632
- var nativeMethods$5 = hammerhead__default.nativeMethods;
2729
+ var nativeMethods$6 = hammerhead__default.nativeMethods;
2633
2730
  var domUtils$6 = testCafeCore__default.domUtils;
2634
2731
  var styleUtils$3 = testCafeCore__default.styleUtils;
2635
2732
  var delay$1 = testCafeCore__default.delay;
@@ -2653,7 +2750,7 @@
2653
2750
  var selectedIndex = this.parentSelect.selectedIndex;
2654
2751
  this.childIndex = isOption ? domUtils$6.getElementIndexInParent(this.parentSelect, this.element) :
2655
2752
  domUtils$6.getElementIndexInParent(this.parentSelect, this.element);
2656
- var parent_1 = nativeMethods$5.nodeParentNodeGetter.call(this.element);
2753
+ var parent_1 = nativeMethods$6.nodeParentNodeGetter.call(this.element);
2657
2754
  var parentOptGroup = domUtils$6.isOptionGroupElement(parent_1) ? parent_1 : null;
2658
2755
  var isDisabled = this.element.disabled || parentOptGroup && parentOptGroup.disabled;
2659
2756
  this.clickCausesChange = isOption && !isDisabled && this.childIndex !== selectedIndex;
@@ -3042,7 +3139,7 @@
3042
3139
  var eventSandbox = hammerhead__default.sandbox.event;
3043
3140
  var eventSimulator$9 = hammerhead__default.eventSandbox.eventSimulator;
3044
3141
  var listeners$2 = hammerhead__default.eventSandbox.listeners;
3045
- var nativeMethods$6 = hammerhead__default.nativeMethods;
3142
+ var nativeMethods$7 = hammerhead__default.nativeMethods;
3046
3143
  var domUtils$7 = testCafeCore__default.domUtils;
3047
3144
  var contentEditable$1 = testCafeCore__default.contentEditable;
3048
3145
  var textSelection$1 = testCafeCore__default.textSelection;
@@ -3062,7 +3159,7 @@
3062
3159
  }
3063
3160
  function _updateSelectionAfterDeletionContent(element, selection) {
3064
3161
  var startNode = selection.startPos.node;
3065
- var startParent = nativeMethods$6.nodeParentNodeGetter.call(startNode);
3162
+ var startParent = nativeMethods$7.nodeParentNodeGetter.call(startNode);
3066
3163
  var hasStartParent = startParent && startNode.parentElement;
3067
3164
  var browserRequiresSelectionUpdating = browserUtils$8.isChrome && browserUtils$8.version < 58 || browserUtils$8.isSafari;
3068
3165
  if (browserRequiresSelectionUpdating || !hasStartParent || !domUtils$7.isElementContainsNode(element, startNode)) {
@@ -3081,11 +3178,11 @@
3081
3178
  var nodeForTyping = document.createTextNode(text);
3082
3179
  var textLength = text.length;
3083
3180
  var selectPosition = { node: nodeForTyping, offset: textLength };
3084
- var parent = nativeMethods$6.nodeParentNodeGetter.call(elementNode);
3181
+ var parent = nativeMethods$7.nodeParentNodeGetter.call(elementNode);
3085
3182
  if (domUtils$7.getTagName(elementNode) === 'br')
3086
3183
  parent.insertBefore(nodeForTyping, elementNode);
3087
3184
  else if (offset > 0) {
3088
- var childNodes = nativeMethods$6.nodeChildNodesGetter.call(elementNode);
3185
+ var childNodes = nativeMethods$7.nodeChildNodesGetter.call(elementNode);
3089
3186
  elementNode.insertBefore(nodeForTyping, childNodes[offset]);
3090
3187
  }
3091
3188
  else
@@ -3274,7 +3371,7 @@
3274
3371
  return key.length === 1 && (key >= 'a' && key <= 'z' || key >= 'A' && key <= 'Z');
3275
3372
  }
3276
3373
 
3277
- var nativeMethods$7 = hammerhead__default.nativeMethods;
3374
+ var nativeMethods$8 = hammerhead__default.nativeMethods;
3278
3375
  var browserUtils$9 = hammerhead__default.utils.browser;
3279
3376
  var focusBlurSandbox$3 = hammerhead__default.eventSandbox.focusBlur;
3280
3377
  var Promise$9 = hammerhead__default.Promise;
@@ -3322,9 +3419,9 @@
3322
3419
  var activeElement = getActiveElement(doc);
3323
3420
  var activeElementInIframe = null;
3324
3421
  if (activeElement && testCafeCore.domUtils.isIframeElement(activeElement) &&
3325
- nativeMethods$7.contentDocumentGetter.call(activeElement)) {
3422
+ nativeMethods$8.contentDocumentGetter.call(activeElement)) {
3326
3423
  try {
3327
- activeElementInIframe = getDeepActiveElement(nativeMethods$7.contentDocumentGetter.call(activeElement));
3424
+ activeElementInIframe = getDeepActiveElement(nativeMethods$8.contentDocumentGetter.call(activeElement));
3328
3425
  }
3329
3426
  catch (e) { // eslint-disable-line no-empty
3330
3427
  }
@@ -4091,7 +4188,7 @@
4091
4188
  var Promise$b = hammerhead__default.Promise;
4092
4189
  var browserUtils$c = hammerhead__default.utils.browser;
4093
4190
  var messageSandbox$4 = hammerhead__default.eventSandbox.message;
4094
- var nativeMethods$8 = hammerhead__default.nativeMethods;
4191
+ var nativeMethods$9 = hammerhead__default.nativeMethods;
4095
4192
  var PRESS_REQUEST_CMD = 'automation|press|request';
4096
4193
  var PRESS_RESPONSE_CMD = 'automation|press|response';
4097
4194
  // Setup cross-iframe interaction
@@ -4207,13 +4304,13 @@
4207
4304
  var _this = this;
4208
4305
  var activeElement = testCafeCore.domUtils.getActiveElement();
4209
4306
  var activeElementIsIframe = testCafeCore.domUtils.isIframeElement(activeElement);
4210
- if (!isIframeWindow(window) && activeElementIsIframe && nativeMethods$8.contentWindowGetter.call(activeElement)) {
4307
+ if (!isIframeWindow(window) && activeElementIsIframe && nativeMethods$9.contentWindowGetter.call(activeElement)) {
4211
4308
  var msg = {
4212
4309
  cmd: PRESS_REQUEST_CMD,
4213
4310
  keyCombinations: this.keyCombinations,
4214
4311
  options: this.options
4215
4312
  };
4216
- return testCafeCore.sendRequestToFrame(msg, PRESS_RESPONSE_CMD, nativeMethods$8.contentWindowGetter.call(activeElement));
4313
+ return testCafeCore.sendRequestToFrame(msg, PRESS_RESPONSE_CMD, nativeMethods$9.contentWindowGetter.call(activeElement));
4217
4314
  }
4218
4315
  return testCafeCore.promiseUtils.each(this.keyCombinations, function (combination) {
4219
4316
  return _this
@@ -5047,6 +5144,7 @@
5047
5144
  }
5048
5145
 
5049
5146
  var exports$1 = {};
5147
+ exports$1.DispatchEvent = DispatchEventAutomation;
5050
5148
  exports$1.Scroll = ScrollAutomation;
5051
5149
  exports$1.Click = ClickAutomation;
5052
5150
  exports$1.SelectChildClick = SelectChildClickAutomation;
@@ -5072,15 +5170,15 @@
5072
5170
  exports$1.SHORTCUT_TYPE = SHORTCUT_TYPE;
5073
5171
  exports$1.getSelectionCoordinatesByPosition = getSelectionCoordinatesByPosition;
5074
5172
  exports$1.getElementFromPoint = fromPoint;
5075
- var nativeMethods$9 = hammerhead__default.nativeMethods;
5173
+ var nativeMethods$a = hammerhead__default.nativeMethods;
5076
5174
  var evalIframeScript = hammerhead__default.EVENTS.evalIframeScript;
5077
- nativeMethods$9.objectDefineProperty(window, '%testCafeAutomation%', { configurable: true, value: exports$1 });
5175
+ nativeMethods$a.objectDefineProperty(window, '%testCafeAutomation%', { configurable: true, value: exports$1 });
5078
5176
  // eslint-disable-next-line no-undef
5079
- hammerhead__default.on(evalIframeScript, function (e) { return initTestCafeAutomation(nativeMethods$9.contentWindowGetter.call(e.iframe), true); });
5177
+ hammerhead__default.on(evalIframeScript, function (e) { return initTestCafeAutomation(nativeMethods$a.contentWindowGetter.call(e.iframe), true); });
5080
5178
 
5081
5179
  }(window['%hammerhead%'], window['%testCafeCore%'], window['%hammerhead%'].Promise, window['%testCafeUI%']));
5082
-
5083
- }
5084
-
5085
- initTestCafeAutomation(window);
5086
- })();
5180
+
5181
+ }
5182
+
5183
+ initTestCafeAutomation(window);
5184
+ })();