testcafe 1.14.1 → 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 (332) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +21 -21
  3. package/bin/testcafe-with-v8-flag-filter.js +0 -0
  4. package/lib/api/exportable-lib/index.js +49 -49
  5. package/lib/api/request-hooks/assert-type.js +7 -7
  6. package/lib/api/request-hooks/hook-method-names.js +9 -9
  7. package/lib/api/request-hooks/hook.js +32 -32
  8. package/lib/api/request-hooks/interfaces.js +2 -2
  9. package/lib/api/request-hooks/request-logger.js +112 -112
  10. package/lib/api/request-hooks/request-mock/create-request-mock.js +10 -10
  11. package/lib/api/request-hooks/request-mock/index.js +44 -44
  12. package/lib/api/request-hooks/request-mock.js +46 -46
  13. package/lib/api/structure/base-unit.js +11 -11
  14. package/lib/api/structure/fixture.js +75 -75
  15. package/lib/api/structure/interfaces.js +2 -2
  16. package/lib/api/structure/test-file.js +31 -31
  17. package/lib/api/structure/test-timeout.js +9 -9
  18. package/lib/api/structure/test.js +85 -85
  19. package/lib/api/structure/testing-unit.js +89 -89
  20. package/lib/api/structure/unit-type.js +9 -9
  21. package/lib/api/test-controller/assertion.js +88 -88
  22. package/lib/api/test-controller/execution-context.js +82 -82
  23. package/lib/api/test-controller/index.js +358 -358
  24. package/lib/api/test-controller/proxy.js +28 -28
  25. package/lib/api/test-page-url.js +60 -60
  26. package/lib/api/test-run-tracker.js +68 -68
  27. package/lib/api/wrap-test-function.js +49 -49
  28. package/lib/assertions/executor.js +74 -74
  29. package/lib/assertions/get-fn.js +46 -46
  30. package/lib/assertions/type.js +20 -20
  31. package/lib/assets/content-types.js +9 -9
  32. package/lib/assets/injectables.js +18 -18
  33. package/lib/browser/connection/command.js +10 -10
  34. package/lib/browser/connection/error-hints.js +9 -9
  35. package/lib/browser/connection/gateway.js +159 -159
  36. package/lib/browser/connection/get-hints.js +33 -33
  37. package/lib/browser/connection/heartbeat-status.js +8 -8
  38. package/lib/browser/connection/index.js +328 -328
  39. package/lib/browser/connection/remotes-queue.js +46 -46
  40. package/lib/browser/connection/service-routes.js +12 -12
  41. package/lib/browser/connection/status.js +12 -12
  42. package/lib/browser/interfaces.js +2 -2
  43. package/lib/browser/provider/built-in/dedicated/base.js +80 -80
  44. package/lib/browser/provider/built-in/dedicated/chrome/browser-client.js +204 -204
  45. package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +17 -17
  46. package/lib/browser/provider/built-in/dedicated/chrome/config.js +110 -110
  47. package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +45 -45
  48. package/lib/browser/provider/built-in/dedicated/chrome/elapsed-upperbounds.js +15 -15
  49. package/lib/browser/provider/built-in/dedicated/chrome/index.js +102 -102
  50. package/lib/browser/provider/built-in/dedicated/chrome/interfaces.js +2 -2
  51. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +24 -24
  52. package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +29 -29
  53. package/lib/browser/provider/built-in/dedicated/edge/index.js +10 -10
  54. package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +29 -29
  55. package/lib/browser/provider/built-in/dedicated/firefox/config.js +33 -33
  56. package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +78 -78
  57. package/lib/browser/provider/built-in/dedicated/firefox/index.js +73 -73
  58. package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +36 -36
  59. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/commands.js +13 -13
  60. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +200 -200
  61. package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +17 -17
  62. package/lib/browser/provider/built-in/index.js +21 -21
  63. package/lib/browser/provider/built-in/locally-installed.js +30 -30
  64. package/lib/browser/provider/built-in/path.js +47 -47
  65. package/lib/browser/provider/built-in/remote.js +58 -58
  66. package/lib/browser/provider/index.js +303 -303
  67. package/lib/browser/provider/parse-provider-name.js +16 -16
  68. package/lib/browser/provider/plugin-host.js +121 -121
  69. package/lib/browser/provider/pool.js +115 -115
  70. package/lib/browser/provider/utils/argument-parsing.js +74 -74
  71. package/lib/browser/provider/utils/browser-starter.js +34 -34
  72. package/lib/browser/provider/utils/client-functions.js +24 -24
  73. package/lib/browser/provider/utils/get-maximized-headless-window-size.js +9 -9
  74. package/lib/cli/argument-parser.js +284 -284
  75. package/lib/cli/authentication-helper.js +35 -35
  76. package/lib/cli/cli.js +134 -134
  77. package/lib/cli/correct-browsers-and-sources.js +40 -40
  78. package/lib/cli/index.js +19 -19
  79. package/lib/cli/log.js +43 -43
  80. package/lib/cli/remotes-wizard.js +36 -36
  81. package/lib/cli/termination-handler.js +38 -38
  82. package/lib/client/automation/index.js +34 -16
  83. package/lib/client/automation/index.min.js +1 -1
  84. package/lib/client/browser/idle-page/index.html.mustache +35 -35
  85. package/lib/client/browser/idle-page/logo.svg +86 -86
  86. package/lib/client/core/index.js +14 -14
  87. package/lib/client/driver/index.js +46 -16
  88. package/lib/client/driver/index.min.js +1 -1
  89. package/lib/client/driver/internal-properties.js +9 -9
  90. package/lib/client/test-run/iframe.js.mustache +17 -17
  91. package/lib/client/test-run/index.js.mustache +51 -51
  92. package/lib/client/ui/index.js +14 -14
  93. package/lib/client/ui/sprite.svg +42 -42
  94. package/lib/client-functions/builder-symbol.js +4 -4
  95. package/lib/client-functions/client-function-builder.js +155 -155
  96. package/lib/client-functions/replicator.js +61 -61
  97. package/lib/client-functions/return-single-prop-mode.js +8 -8
  98. package/lib/client-functions/selector-api-execution-mode.js +20 -20
  99. package/lib/client-functions/selectors/add-api.js +645 -645
  100. package/lib/client-functions/selectors/create-snapshot-methods.js +13 -13
  101. package/lib/client-functions/selectors/prepare-api-args.js +20 -20
  102. package/lib/client-functions/selectors/selector-attribute-filter.js +22 -22
  103. package/lib/client-functions/selectors/selector-builder.js +153 -153
  104. package/lib/client-functions/selectors/selector-text-filter.js +43 -43
  105. package/lib/client-functions/selectors/snapshot-properties.js +48 -48
  106. package/lib/client-functions/types.js +18 -18
  107. package/lib/compiler/babel/format-babel-produced-code.js +10 -10
  108. package/lib/compiler/babel/get-base-babel-options.js +11 -11
  109. package/lib/compiler/babel/load-libs.js +63 -63
  110. package/lib/compiler/babel/preset-stage-2.js +19 -19
  111. package/lib/compiler/compile-client-function.js +73 -73
  112. package/lib/compiler/compilers.js +33 -33
  113. package/lib/compiler/index.js +92 -92
  114. package/lib/compiler/interfaces.js +2 -2
  115. package/lib/compiler/test-file/api-based.js +146 -146
  116. package/lib/compiler/test-file/base.js +36 -36
  117. package/lib/compiler/test-file/exportble-lib-path.js +5 -5
  118. package/lib/compiler/test-file/formats/coffeescript/compiler.js +38 -38
  119. package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +29 -29
  120. package/lib/compiler/test-file/formats/es-next/compiler.js +42 -42
  121. package/lib/compiler/test-file/formats/es-next/get-test-list.js +166 -166
  122. package/lib/compiler/test-file/formats/es-next/is-flow-code.js +7 -7
  123. package/lib/compiler/test-file/formats/raw.js +85 -85
  124. package/lib/compiler/test-file/formats/typescript/compiler.js +135 -135
  125. package/lib/compiler/test-file/formats/typescript/get-test-list.js +185 -185
  126. package/lib/compiler/test-file/test-file-parser-base.js +214 -214
  127. package/lib/configuration/configuration-base.js +165 -165
  128. package/lib/configuration/constants.js +9 -9
  129. package/lib/configuration/customizable-compilers.js +7 -7
  130. package/lib/configuration/default-values.js +51 -51
  131. package/lib/configuration/interfaces.js +2 -2
  132. package/lib/configuration/option-names.js +53 -53
  133. package/lib/configuration/option-source.js +9 -9
  134. package/lib/configuration/option.js +14 -14
  135. package/lib/configuration/quarantine-option-names.js +8 -8
  136. package/lib/configuration/run-option-names.js +26 -26
  137. package/lib/configuration/screenshot-option-names.js +10 -10
  138. package/lib/configuration/testcafe-configuration.js +163 -163
  139. package/lib/configuration/types.js +2 -2
  140. package/lib/configuration/typescript-configuration.js +62 -62
  141. package/lib/custom-client-scripts/assert-type.js +7 -7
  142. package/lib/custom-client-scripts/client-script-init.js +2 -2
  143. package/lib/custom-client-scripts/client-script.js +106 -106
  144. package/lib/custom-client-scripts/get-code.js +11 -11
  145. package/lib/custom-client-scripts/get-url.js +6 -6
  146. package/lib/custom-client-scripts/load.js +15 -15
  147. package/lib/custom-client-scripts/problematic-scripts.js +2 -2
  148. package/lib/custom-client-scripts/routing.js +36 -36
  149. package/lib/custom-client-scripts/utils.js +60 -60
  150. package/lib/embedding-utils.js +83 -83
  151. package/lib/errors/create-stack-filter.js +18 -18
  152. package/lib/errors/error-list.js +26 -26
  153. package/lib/errors/get-callsite.js +31 -31
  154. package/lib/errors/internal-modules-prefix.js +8 -8
  155. package/lib/errors/is-internal-stack-frame.js +45 -45
  156. package/lib/errors/process-test-fn-error.js +37 -37
  157. package/lib/errors/runtime/index.js +123 -123
  158. package/lib/errors/runtime/templates.js +115 -115
  159. package/lib/errors/runtime/type-assertions.js +112 -112
  160. package/lib/errors/stack-cleaning-hook.js +64 -64
  161. package/lib/errors/test-run/formattable-adapter.js +59 -59
  162. package/lib/errors/test-run/index.js +301 -301
  163. package/lib/errors/test-run/render-error-template.js +31 -31
  164. package/lib/errors/test-run/templates.js +91 -91
  165. package/lib/errors/test-run/utils.js +89 -89
  166. package/lib/errors/types.js +156 -156
  167. package/lib/index.js +81 -81
  168. package/lib/live/bootstrapper.js +43 -43
  169. package/lib/live/controller.js +107 -107
  170. package/lib/live/file-watcher/index.js +67 -67
  171. package/lib/live/file-watcher/modules-graph.js +58 -58
  172. package/lib/live/keyboard-observer.js +76 -76
  173. package/lib/live/logger/index.js +64 -64
  174. package/lib/live/test-run-controller.js +96 -96
  175. package/lib/live/test-run-state.js +6 -6
  176. package/lib/live/test-run.js +56 -56
  177. package/lib/live/test-runner.js +167 -167
  178. package/lib/load-assets.js +29 -29
  179. package/lib/notifications/add-rendered-warning.js +16 -16
  180. package/lib/notifications/debug-logger.js +78 -78
  181. package/lib/notifications/deprecated.js +24 -24
  182. package/lib/notifications/information-message.js +9 -9
  183. package/lib/notifications/warning-log.js +31 -31
  184. package/lib/notifications/warning-message.js +47 -47
  185. package/lib/reporter/command/command-formatter.js +120 -109
  186. package/lib/reporter/command/format-command.js +8 -8
  187. package/lib/reporter/command/interfaces.js +2 -2
  188. package/lib/reporter/index.js +319 -314
  189. package/lib/reporter/interfaces.js +2 -2
  190. package/lib/reporter/plugin-host.js +135 -135
  191. package/lib/reporter/plugin-methods.js +12 -12
  192. package/lib/role/index.js +74 -74
  193. package/lib/role/marker-symbol.js +7 -7
  194. package/lib/role/phase.js +9 -9
  195. package/lib/runner/bootstrapper.js +271 -271
  196. package/lib/runner/browser-job-result.js +9 -9
  197. package/lib/runner/browser-job.js +152 -152
  198. package/lib/runner/browser-set.js +114 -114
  199. package/lib/runner/fixture-hook-controller.js +85 -85
  200. package/lib/runner/index.js +449 -449
  201. package/lib/runner/interfaces.js +2 -2
  202. package/lib/runner/reporter-stream-controller.js +27 -27
  203. package/lib/runner/task/index.js +151 -151
  204. package/lib/runner/task/phase.js +9 -9
  205. package/lib/runner/test-run-controller.js +165 -165
  206. package/lib/runner/tested-app.js +72 -72
  207. package/lib/screenshots/capturer.js +141 -141
  208. package/lib/screenshots/constants.js +11 -11
  209. package/lib/screenshots/crop.js +111 -111
  210. package/lib/screenshots/default-extension.js +4 -4
  211. package/lib/screenshots/index.js +67 -67
  212. package/lib/screenshots/utils.js +39 -39
  213. package/lib/services/compiler/host.js +190 -190
  214. package/lib/services/compiler/io.js +9 -9
  215. package/lib/services/compiler/protocol.js +17 -16
  216. package/lib/services/compiler/service.js +225 -212
  217. package/lib/services/compiler/test-run-proxy.js +111 -111
  218. package/lib/services/interfaces.js +2 -2
  219. package/lib/services/process-title.js +8 -8
  220. package/lib/services/serialization/prepare-options.js +17 -17
  221. package/lib/services/serialization/replicator/create-replicator.js +25 -25
  222. package/lib/services/serialization/replicator/custom-error-transform.js +26 -26
  223. package/lib/services/serialization/test-structure.js +92 -92
  224. package/lib/services/utils/ipc/interfaces.js +30 -30
  225. package/lib/services/utils/ipc/io.js +108 -108
  226. package/lib/services/utils/ipc/message.js +75 -75
  227. package/lib/services/utils/ipc/packet.js +55 -55
  228. package/lib/services/utils/ipc/proxy.js +109 -109
  229. package/lib/services/utils/ipc/transport.js +64 -64
  230. package/lib/shared/errors/index.js +382 -382
  231. package/lib/shared/node-modules-folder-name.js +4 -4
  232. package/lib/test-run/bookmark.js +90 -90
  233. package/lib/test-run/browser-console-messages.js +73 -73
  234. package/lib/test-run/browser-manipulation-queue.js +92 -92
  235. package/lib/test-run/client-messages.js +9 -9
  236. package/lib/test-run/commands/actions.js +486 -483
  237. package/lib/test-run/commands/assertion.js +45 -45
  238. package/lib/test-run/commands/base.js +14 -14
  239. package/lib/test-run/commands/browser-manipulation.js +95 -95
  240. package/lib/test-run/commands/from-object.js +82 -82
  241. package/lib/test-run/commands/observation.js +61 -61
  242. package/lib/test-run/commands/options.js +231 -215
  243. package/lib/test-run/commands/service.js +54 -48
  244. package/lib/test-run/commands/type.js +65 -64
  245. package/lib/test-run/commands/utils.js +87 -87
  246. package/lib/test-run/commands/validations/argument.js +90 -90
  247. package/lib/test-run/commands/validations/factories.js +47 -47
  248. package/lib/test-run/commands/validations/initializers.js +44 -44
  249. package/lib/test-run/debug-log.js +32 -32
  250. package/lib/test-run/execute-js-expression.js +74 -74
  251. package/lib/test-run/index.js +823 -799
  252. package/lib/test-run/marker-symbol.js +7 -7
  253. package/lib/test-run/observed-callsites-storage.js +17 -17
  254. package/lib/test-run/phase.js +16 -16
  255. package/lib/test-run/session-controller.js +104 -104
  256. package/lib/testcafe.js +118 -118
  257. package/lib/utils/assignable.js +39 -39
  258. package/lib/utils/async-event-emitter.js +28 -28
  259. package/lib/utils/async-queue.js +14 -14
  260. package/lib/utils/browser-connection-timeouts.js +19 -19
  261. package/lib/utils/callsite.js +17 -17
  262. package/lib/utils/check-file-path.js +31 -31
  263. package/lib/utils/check-url.js +51 -51
  264. package/lib/utils/convert-to-best-fit-type.js +16 -16
  265. package/lib/utils/correct-file-path.js +21 -21
  266. package/lib/utils/define-lazy-property.js +13 -13
  267. package/lib/utils/delay.js +6 -6
  268. package/lib/utils/delegated-api.js +44 -44
  269. package/lib/utils/detect-display.js +6 -6
  270. package/lib/utils/detect-ffmpeg.js +44 -44
  271. package/lib/utils/diff/colors.js +29 -29
  272. package/lib/utils/diff/index.js +52 -52
  273. package/lib/utils/diff/util.js +23 -23
  274. package/lib/utils/diff.js +29 -29
  275. package/lib/utils/escape-user-agent.js +10 -10
  276. package/lib/utils/flag-list.js +17 -17
  277. package/lib/utils/get-any-key.js +8 -8
  278. package/lib/utils/get-browser.js +8 -8
  279. package/lib/utils/get-common-path.js +34 -34
  280. package/lib/utils/get-filter-fn.js +40 -40
  281. package/lib/utils/get-options/base.js +36 -36
  282. package/lib/utils/get-options/compiler.js +33 -33
  283. package/lib/utils/get-options/grep.js +15 -15
  284. package/lib/utils/get-options/index.js +20 -20
  285. package/lib/utils/get-options/meta.js +22 -22
  286. package/lib/utils/get-options/quarantine.js +91 -91
  287. package/lib/utils/get-options/screenshot.js +17 -17
  288. package/lib/utils/get-options/ssl.js +45 -45
  289. package/lib/utils/get-options/video.js +10 -10
  290. package/lib/utils/get-viewport-width.js +17 -17
  291. package/lib/utils/guard-time-execution.js +10 -10
  292. package/lib/utils/handle-errors.js +74 -74
  293. package/lib/utils/handle-tag-args.js +8 -8
  294. package/lib/utils/http.js +30 -30
  295. package/lib/utils/is-localhost.js +11 -11
  296. package/lib/utils/is-password-input.js +11 -0
  297. package/lib/utils/is-repl.js +10 -10
  298. package/lib/utils/is-window-in-iframe.js +6 -6
  299. package/lib/utils/limit-number.js +10 -10
  300. package/lib/utils/make-reg-exp.js +7 -7
  301. package/lib/utils/moment-loader.js +20 -20
  302. package/lib/utils/parse-file-list.js +71 -71
  303. package/lib/utils/parse-user-agent.js +55 -55
  304. package/lib/utils/path-pattern.js +114 -114
  305. package/lib/utils/prepare-reporters.js +30 -30
  306. package/lib/utils/prerender-callsite.js +18 -18
  307. package/lib/utils/process.js +119 -119
  308. package/lib/utils/promisified-functions.js +46 -46
  309. package/lib/utils/re-executable-promise.js +39 -39
  310. package/lib/utils/render-callsite-sync.js +29 -29
  311. package/lib/utils/render-template.js +9 -9
  312. package/lib/utils/reporter.js +30 -30
  313. package/lib/utils/resolve-path-relatively-cwd.js +7 -7
  314. package/lib/utils/string.js +105 -105
  315. package/lib/utils/temp-directory/cleanup-process/commands.js +7 -7
  316. package/lib/utils/temp-directory/cleanup-process/index.js +143 -143
  317. package/lib/utils/temp-directory/cleanup-process/worker.js +58 -58
  318. package/lib/utils/temp-directory/index.js +87 -87
  319. package/lib/utils/temp-directory/lockfile.js +56 -56
  320. package/lib/utils/thennable.js +7 -7
  321. package/lib/utils/timer.js +15 -15
  322. package/lib/utils/to-posix-path.js +8 -8
  323. package/lib/utils/types.js +2 -2
  324. package/lib/video-recorder/interfaces.js +2 -2
  325. package/lib/video-recorder/process.js +126 -126
  326. package/lib/video-recorder/recorder.js +136 -136
  327. package/lib/video-recorder/test-run-video-recorder.js +69 -69
  328. package/lib/video-recorder/videos.js +37 -37
  329. package/package.json +2 -2
  330. package/ts-defs/index.d.ts +25 -14
  331. package/ts-defs/selectors.d.ts +16 -5
  332. package/ts-defs/testcafe-scripts.d.ts +17 -6
@@ -1,169 +1,169 @@
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 lodash_1 = require("lodash");
7
- const test_run_controller_1 = __importDefault(require("./test-run-controller"));
8
- const controller_1 = __importDefault(require("./controller"));
9
- const runner_1 = __importDefault(require("../runner"));
10
- const bootstrapper_1 = __importDefault(require("./bootstrapper"));
11
- const parse_file_list_1 = __importDefault(require("../utils/parse-file-list"));
12
- const runtime_1 = require("../errors/runtime");
13
- const types_1 = require("../errors/types");
14
- class LiveModeRunner extends runner_1.default {
15
- constructor({ proxy, browserConnectionGateway, configuration }) {
16
- super({ proxy, browserConnectionGateway, configuration });
17
- this.stopping = false;
18
- this.runnerTaskPromise = null;
19
- this.stopInfiniteWaiting = lodash_1.noop;
20
- this.rejectInfiniteWaiting = lodash_1.noop;
21
- this.assets = null;
22
- this.testRunController = new test_run_controller_1.default();
23
- this.controller = this._createController();
24
- this.embeddingOptions({
25
- TestRunCtor: this.testRunController.TestRunCtor,
26
- assets: []
27
- });
28
- this.controller = this._createController();
29
- this.configurationCache = null;
30
- }
31
- runTests(isFirstRun = false) {
32
- let runError = null;
33
- return this._finishPreviousTestRuns()
34
- .then(() => {
35
- return this._validateRunnableConfiguration(isFirstRun);
36
- })
37
- .then(() => {
38
- const expectedTestCount = this.configurationCache.tests.length;
39
- this.testRunController.setExpectedTestCount(expectedTestCount);
40
- })
41
- .then(() => {
42
- this.runnerTaskPromise = super.run(this.opts);
43
- return this.runnerTaskPromise;
44
- })
45
- .catch(err => {
46
- this.setBootstrappingError(null);
47
- runError = err;
48
- })
49
- .then(() => {
50
- this.runnerTaskPromise = null;
51
- this.controller.onTestRunDone(runError);
52
- });
53
- }
54
- _validateRunOptions() {
55
- return super._validateRunOptions()
56
- .catch(err => {
57
- this.rejectInfiniteWaiting(err);
58
- });
59
- }
60
- _createRunnableConfiguration() {
61
- if (this.configurationCache)
62
- return Promise.resolve(this.configurationCache);
63
- return super._createRunnableConfiguration()
64
- .then(configuration => {
65
- this.configurationCache = configuration;
66
- return configuration;
67
- })
68
- .catch(err => {
69
- this.rejectInfiniteWaiting(err);
70
- });
71
- }
72
- setBootstrappingError(err) {
73
- this.bootstrappingError = err;
74
- }
75
- run(options) {
76
- this.configurationCache = null;
77
- if (this._running)
78
- throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotRunLiveModeRunnerMultipleTimes);
79
- this._running = this._waitUntilExit()
80
- .then(() => {
81
- return this._dispose();
82
- })
83
- .then(() => {
84
- delete this._running;
85
- });
86
- this.opts = Object.assign({}, this.opts, options);
87
- this._setBootstrapperOptions();
88
- const fileListPromise = parse_file_list_1.default(this.bootstrapper.sources, process.cwd());
89
- fileListPromise
90
- .then(files => {
91
- return this.controller.init(files);
92
- })
93
- .then(() => this._createRunnableConfiguration())
94
- .then(() => this.runTests(true));
95
- return this._running;
96
- }
97
- suspend() {
98
- if (!this.runnerTaskPromise)
99
- return Promise.resolve();
100
- this.stopping = true;
101
- this.testRunController.stop();
102
- this.runnerTaskPromise.cancel();
103
- return this.testRunController.allTestsCompletePromise
104
- .then(() => {
105
- this.stopping = false;
106
- this.controller.onTestRunDone();
107
- });
108
- }
109
- stop() {
110
- return super.stop()
111
- .then(() => {
112
- return this.controller.exit();
113
- });
114
- }
115
- exit() {
116
- if (this.runnerTaskPromise)
117
- this.runnerTaskPromise.cancel();
118
- return Promise.resolve()
119
- .then(() => this.stopInfiniteWaiting())
120
- .then(() => this._running);
121
- }
122
- async _finishPreviousTestRuns() {
123
- if (!this.configurationCache.tests)
124
- return;
125
- this.testRunController.run();
126
- }
127
- _validateRunnableConfiguration(isFirstRun) {
128
- if (isFirstRun) {
129
- if (this.bootstrappingError)
130
- return Promise.reject(this.bootstrappingError);
131
- return Promise.resolve();
132
- }
133
- return this.bootstrapper._getTests()
134
- .then(tests => {
135
- this.configurationCache.tests = tests;
136
- return this.bootstrappingError ? Promise.reject(this.bootstrappingError) : Promise.resolve();
137
- });
138
- }
139
- _createTask(tests, browserConnectionGroups, proxy, opts) {
140
- opts.live = true;
141
- return super._createTask(tests, browserConnectionGroups, proxy, opts, this.warningLog);
142
- }
143
- _createBootstrapper(browserConnectionGateway) {
144
- return new bootstrapper_1.default(this, browserConnectionGateway);
145
- }
146
- _createController() {
147
- return new controller_1.default(this);
148
- }
149
- _waitUntilExit() {
150
- return new Promise((resolve, reject) => {
151
- this.stopInfiniteWaiting = resolve;
152
- this.rejectInfiniteWaiting = reject;
153
- });
154
- }
155
- _disposeAssets(browserSet, reporters, testedApp) {
156
- this.assets = { browserSet, reporters, testedApp };
157
- return Promise.resolve();
158
- }
159
- _dispose() {
160
- this.controller.dispose();
161
- if (!this.assets)
162
- return Promise.resolve();
163
- const { browserSet, reporters, testedApp } = this.assets;
164
- return super._disposeAssets(browserSet, reporters, testedApp);
165
- }
166
- }
167
- exports.default = LiveModeRunner;
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 lodash_1 = require("lodash");
7
+ const test_run_controller_1 = __importDefault(require("./test-run-controller"));
8
+ const controller_1 = __importDefault(require("./controller"));
9
+ const runner_1 = __importDefault(require("../runner"));
10
+ const bootstrapper_1 = __importDefault(require("./bootstrapper"));
11
+ const parse_file_list_1 = __importDefault(require("../utils/parse-file-list"));
12
+ const runtime_1 = require("../errors/runtime");
13
+ const types_1 = require("../errors/types");
14
+ class LiveModeRunner extends runner_1.default {
15
+ constructor({ proxy, browserConnectionGateway, configuration }) {
16
+ super({ proxy, browserConnectionGateway, configuration });
17
+ this.stopping = false;
18
+ this.runnerTaskPromise = null;
19
+ this.stopInfiniteWaiting = lodash_1.noop;
20
+ this.rejectInfiniteWaiting = lodash_1.noop;
21
+ this.assets = null;
22
+ this.testRunController = new test_run_controller_1.default();
23
+ this.controller = this._createController();
24
+ this.embeddingOptions({
25
+ TestRunCtor: this.testRunController.TestRunCtor,
26
+ assets: []
27
+ });
28
+ this.controller = this._createController();
29
+ this.configurationCache = null;
30
+ }
31
+ runTests(isFirstRun = false) {
32
+ let runError = null;
33
+ return this._finishPreviousTestRuns()
34
+ .then(() => {
35
+ return this._validateRunnableConfiguration(isFirstRun);
36
+ })
37
+ .then(() => {
38
+ const expectedTestCount = this.configurationCache.tests.length;
39
+ this.testRunController.setExpectedTestCount(expectedTestCount);
40
+ })
41
+ .then(() => {
42
+ this.runnerTaskPromise = super.run(this.opts);
43
+ return this.runnerTaskPromise;
44
+ })
45
+ .catch(err => {
46
+ this.setBootstrappingError(null);
47
+ runError = err;
48
+ })
49
+ .then(() => {
50
+ this.runnerTaskPromise = null;
51
+ this.controller.onTestRunDone(runError);
52
+ });
53
+ }
54
+ _validateRunOptions() {
55
+ return super._validateRunOptions()
56
+ .catch(err => {
57
+ this.rejectInfiniteWaiting(err);
58
+ });
59
+ }
60
+ _createRunnableConfiguration() {
61
+ if (this.configurationCache)
62
+ return Promise.resolve(this.configurationCache);
63
+ return super._createRunnableConfiguration()
64
+ .then(configuration => {
65
+ this.configurationCache = configuration;
66
+ return configuration;
67
+ })
68
+ .catch(err => {
69
+ this.rejectInfiniteWaiting(err);
70
+ });
71
+ }
72
+ setBootstrappingError(err) {
73
+ this.bootstrappingError = err;
74
+ }
75
+ run(options) {
76
+ this.configurationCache = null;
77
+ if (this._running)
78
+ throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotRunLiveModeRunnerMultipleTimes);
79
+ this._running = this._waitUntilExit()
80
+ .then(() => {
81
+ return this._dispose();
82
+ })
83
+ .then(() => {
84
+ delete this._running;
85
+ });
86
+ this.opts = Object.assign({}, this.opts, options);
87
+ this._setBootstrapperOptions();
88
+ const fileListPromise = parse_file_list_1.default(this.bootstrapper.sources, process.cwd());
89
+ fileListPromise
90
+ .then(files => {
91
+ return this.controller.init(files);
92
+ })
93
+ .then(() => this._createRunnableConfiguration())
94
+ .then(() => this.runTests(true));
95
+ return this._running;
96
+ }
97
+ suspend() {
98
+ if (!this.runnerTaskPromise)
99
+ return Promise.resolve();
100
+ this.stopping = true;
101
+ this.testRunController.stop();
102
+ this.runnerTaskPromise.cancel();
103
+ return this.testRunController.allTestsCompletePromise
104
+ .then(() => {
105
+ this.stopping = false;
106
+ this.controller.onTestRunDone();
107
+ });
108
+ }
109
+ stop() {
110
+ return super.stop()
111
+ .then(() => {
112
+ return this.controller.exit();
113
+ });
114
+ }
115
+ exit() {
116
+ if (this.runnerTaskPromise)
117
+ this.runnerTaskPromise.cancel();
118
+ return Promise.resolve()
119
+ .then(() => this.stopInfiniteWaiting())
120
+ .then(() => this._running);
121
+ }
122
+ async _finishPreviousTestRuns() {
123
+ if (!this.configurationCache.tests)
124
+ return;
125
+ this.testRunController.run();
126
+ }
127
+ _validateRunnableConfiguration(isFirstRun) {
128
+ if (isFirstRun) {
129
+ if (this.bootstrappingError)
130
+ return Promise.reject(this.bootstrappingError);
131
+ return Promise.resolve();
132
+ }
133
+ return this.bootstrapper._getTests()
134
+ .then(tests => {
135
+ this.configurationCache.tests = tests;
136
+ return this.bootstrappingError ? Promise.reject(this.bootstrappingError) : Promise.resolve();
137
+ });
138
+ }
139
+ _createTask(tests, browserConnectionGroups, proxy, opts) {
140
+ opts.live = true;
141
+ return super._createTask(tests, browserConnectionGroups, proxy, opts, this.warningLog);
142
+ }
143
+ _createBootstrapper(browserConnectionGateway) {
144
+ return new bootstrapper_1.default(this, browserConnectionGateway);
145
+ }
146
+ _createController() {
147
+ return new controller_1.default(this);
148
+ }
149
+ _waitUntilExit() {
150
+ return new Promise((resolve, reject) => {
151
+ this.stopInfiniteWaiting = resolve;
152
+ this.rejectInfiniteWaiting = reject;
153
+ });
154
+ }
155
+ _disposeAssets(browserSet, reporters, testedApp) {
156
+ this.assets = { browserSet, reporters, testedApp };
157
+ return Promise.resolve();
158
+ }
159
+ _dispose() {
160
+ this.controller.dispose();
161
+ if (!this.assets)
162
+ return Promise.resolve();
163
+ const { browserSet, reporters, testedApp } = this.assets;
164
+ return super._disposeAssets(browserSet, reporters, testedApp);
165
+ }
166
+ }
167
+ exports.default = LiveModeRunner;
168
168
  module.exports = exports.default;
169
169
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGl2ZS90ZXN0LXJ1bm5lci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUE4QjtBQUM5QixnRkFBOEQ7QUFDOUQsOERBQThDO0FBQzlDLHVEQUErQjtBQUMvQixrRUFBa0Q7QUFDbEQsK0VBQXFEO0FBQ3JELCtDQUFpRDtBQUNqRCwyQ0FBaUQ7QUFFakQsTUFBTSxjQUFlLFNBQVEsZ0JBQU07SUFDL0IsWUFBYSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUU7UUFDM0QsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLFFBQVEsR0FBZ0IsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBTyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixHQUFLLGFBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsYUFBSSxDQUFDO1FBRWxDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRW5CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDZCQUF5QixFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBVSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUdsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXO1lBQy9DLE1BQU0sRUFBTyxFQUFFO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQVcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ3hC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LFVBQVUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSx3QkFBd0I7UUFDekMsT0FBTyxJQUFJLHNCQUFvQixDQUFDLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksb0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBSyxPQUFPLENBQUM7WUFDckMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBRW5ELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDWixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUU3QixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRXpELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQUVELGtCQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vb3AgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IExpdmVNb2RlVGVzdFJ1bkNvbnRyb2xsZXIgZnJvbSAnLi90ZXN0LXJ1bi1jb250cm9sbGVyJztcbmltcG9ydCBMaXZlTW9kZUNvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCBSdW5uZXIgZnJvbSAnLi4vcnVubmVyJztcbmltcG9ydCBMaXZlTW9kZUJvb3RzdHJhcHBlciBmcm9tICcuL2Jvb3RzdHJhcHBlcic7XG5pbXBvcnQgcGFyc2VGaWxlTGlzdCBmcm9tICcuLi91dGlscy9wYXJzZS1maWxlLWxpc3QnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuXG5jbGFzcyBMaXZlTW9kZVJ1bm5lciBleHRlbmRzIFJ1bm5lciB7XG4gICAgY29uc3RydWN0b3IgKHsgcHJveHksIGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSwgY29uZmlndXJhdGlvbiB9KSB7XG4gICAgICAgIHN1cGVyKHsgcHJveHksIGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSwgY29uZmlndXJhdGlvbiB9KTtcblxuICAgICAgICB0aGlzLnN0b3BwaW5nICAgICAgICAgICAgICA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJ1bm5lclRhc2tQcm9taXNlICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RvcEluZmluaXRlV2FpdGluZyAgID0gbm9vcDtcbiAgICAgICAgdGhpcy5yZWplY3RJbmZpbml0ZVdhaXRpbmcgPSBub29wO1xuXG4gICAgICAgIHRoaXMuYXNzZXRzID0gbnVsbDtcblxuICAgICAgICB0aGlzLnRlc3RSdW5Db250cm9sbGVyID0gbmV3IExpdmVNb2RlVGVzdFJ1bkNvbnRyb2xsZXIoKTtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyICAgICAgICA9IHRoaXMuX2NyZWF0ZUNvbnRyb2xsZXIoKTtcblxuXG4gICAgICAgIHRoaXMuZW1iZWRkaW5nT3B0aW9ucyh7XG4gICAgICAgICAgICBUZXN0UnVuQ3RvcjogdGhpcy50ZXN0UnVuQ29udHJvbGxlci5UZXN0UnVuQ3RvcixcbiAgICAgICAgICAgIGFzc2V0czogICAgICBbXVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyICAgICAgICAgPSB0aGlzLl9jcmVhdGVDb250cm9sbGVyKCk7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkNhY2hlID0gbnVsbDtcbiAgICB9XG5cbiAgICBydW5UZXN0cyAoaXNGaXJzdFJ1biA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBydW5FcnJvciA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFByZXZpb3VzVGVzdFJ1bnMoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZVJ1bm5hYmxlQ29uZmlndXJhdGlvbihpc0ZpcnN0UnVuKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRUZXN0Q291bnQgPSB0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZS50ZXN0cy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRlc3RSdW5Db250cm9sbGVyLnNldEV4cGVjdGVkVGVzdENvdW50KGV4cGVjdGVkVGVzdENvdW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5uZXJUYXNrUHJvbWlzZSA9IHN1cGVyLnJ1bih0aGlzLm9wdHMpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVubmVyVGFza1Byb21pc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRCb290c3RyYXBwaW5nRXJyb3IobnVsbCk7XG5cbiAgICAgICAgICAgICAgICBydW5FcnJvciA9IGVycjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5uZXJUYXNrUHJvbWlzZSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIub25UZXN0UnVuRG9uZShydW5FcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfdmFsaWRhdGVSdW5PcHRpb25zICgpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLl92YWxpZGF0ZVJ1bk9wdGlvbnMoKVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWplY3RJbmZpbml0ZVdhaXRpbmcoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9jcmVhdGVSdW5uYWJsZUNvbmZpZ3VyYXRpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uQ2FjaGUpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29uZmlndXJhdGlvbkNhY2hlKTtcblxuICAgICAgICByZXR1cm4gc3VwZXIuX2NyZWF0ZVJ1bm5hYmxlQ29uZmlndXJhdGlvbigpXG4gICAgICAgICAgICAudGhlbihjb25maWd1cmF0aW9uID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZSA9IGNvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlamVjdEluZmluaXRlV2FpdGluZyhlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0Qm9vdHN0cmFwcGluZ0Vycm9yIChlcnIpIHtcbiAgICAgICAgdGhpcy5ib290c3RyYXBwaW5nRXJyb3IgPSBlcnI7XG4gICAgfVxuXG4gICAgcnVuIChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkNhY2hlID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5fcnVubmluZylcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90UnVuTGl2ZU1vZGVSdW5uZXJNdWx0aXBsZVRpbWVzKTtcblxuICAgICAgICB0aGlzLl9ydW5uaW5nID0gdGhpcy5fd2FpdFVudGlsRXhpdCgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2UoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3J1bm5pbmc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuX3NldEJvb3RzdHJhcHBlck9wdGlvbnMoKTtcblxuICAgICAgICBjb25zdCBmaWxlTGlzdFByb21pc2UgPSBwYXJzZUZpbGVMaXN0KHRoaXMuYm9vdHN0cmFwcGVyLnNvdXJjZXMsIHByb2Nlc3MuY3dkKCkpO1xuXG4gICAgICAgIGZpbGVMaXN0UHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oZmlsZXMgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuaW5pdChmaWxlcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fY3JlYXRlUnVubmFibGVDb25maWd1cmF0aW9uKCkpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLnJ1blRlc3RzKHRydWUpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcnVubmluZztcbiAgICB9XG5cbiAgICBzdXNwZW5kICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJ1bm5lclRhc2tQcm9taXNlKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgICAgIHRoaXMuc3RvcHBpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnRlc3RSdW5Db250cm9sbGVyLnN0b3AoKTtcbiAgICAgICAgdGhpcy5ydW5uZXJUYXNrUHJvbWlzZS5jYW5jZWwoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50ZXN0UnVuQ29udHJvbGxlci5hbGxUZXN0c0NvbXBsZXRlUHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcHBpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5vblRlc3RSdW5Eb25lKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdG9wICgpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnN0b3AoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuZXhpdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXhpdCAoKSB7XG4gICAgICAgIGlmICh0aGlzLnJ1bm5lclRhc2tQcm9taXNlKVxuICAgICAgICAgICAgdGhpcy5ydW5uZXJUYXNrUHJvbWlzZS5jYW5jZWwoKTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuc3RvcEluZmluaXRlV2FpdGluZygpKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fcnVubmluZyk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2ZpbmlzaFByZXZpb3VzVGVzdFJ1bnMgKCkge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvbkNhY2hlLnRlc3RzKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy50ZXN0UnVuQ29udHJvbGxlci5ydW4oKTtcbiAgICB9XG5cbiAgICBfdmFsaWRhdGVSdW5uYWJsZUNvbmZpZ3VyYXRpb24gKGlzRmlyc3RSdW4pIHtcbiAgICAgICAgaWYgKGlzRmlyc3RSdW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmJvb3RzdHJhcHBpbmdFcnJvcilcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhpcy5ib290c3RyYXBwaW5nRXJyb3IpO1xuXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ib290c3RyYXBwZXIuX2dldFRlc3RzKClcbiAgICAgICAgICAgIC50aGVuKHRlc3RzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZS50ZXN0cyA9IHRlc3RzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYm9vdHN0cmFwcGluZ0Vycm9yID8gUHJvbWlzZS5yZWplY3QodGhpcy5ib290c3RyYXBwaW5nRXJyb3IpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfY3JlYXRlVGFzayAodGVzdHMsIGJyb3dzZXJDb25uZWN0aW9uR3JvdXBzLCBwcm94eSwgb3B0cykge1xuICAgICAgICBvcHRzLmxpdmUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBzdXBlci5fY3JlYXRlVGFzayh0ZXN0cywgYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMsIHByb3h5LCBvcHRzLCB0aGlzLndhcm5pbmdMb2cpO1xuICAgIH1cblxuICAgIF9jcmVhdGVCb290c3RyYXBwZXIgKGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSkge1xuICAgICAgICByZXR1cm4gbmV3IExpdmVNb2RlQm9vdHN0cmFwcGVyKHRoaXMsIGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNvbnRyb2xsZXIgKCkge1xuICAgICAgICByZXR1cm4gbmV3IExpdmVNb2RlQ29udHJvbGxlcih0aGlzKTtcbiAgICB9XG5cbiAgICBfd2FpdFVudGlsRXhpdCAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3BJbmZpbml0ZVdhaXRpbmcgICA9IHJlc29sdmU7XG4gICAgICAgICAgICB0aGlzLnJlamVjdEluZmluaXRlV2FpdGluZyA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2Rpc3Bvc2VBc3NldHMgKGJyb3dzZXJTZXQsIHJlcG9ydGVycywgdGVzdGVkQXBwKSB7XG4gICAgICAgIHRoaXMuYXNzZXRzID0geyBicm93c2VyU2V0LCByZXBvcnRlcnMsIHRlc3RlZEFwcCB9O1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBfZGlzcG9zZSAoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbGxlci5kaXNwb3NlKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmFzc2V0cylcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgICAgICBjb25zdCB7IGJyb3dzZXJTZXQsIHJlcG9ydGVycywgdGVzdGVkQXBwIH0gPSB0aGlzLmFzc2V0cztcblxuICAgICAgICByZXR1cm4gc3VwZXIuX2Rpc3Bvc2VBc3NldHMoYnJvd3NlclNldCwgcmVwb3J0ZXJzLCB0ZXN0ZWRBcHApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGl2ZU1vZGVSdW5uZXI7XG4iXX0=
@@ -1,31 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const read_file_relative_1 = require("read-file-relative");
4
- const ASSETS_CACHE = {};
5
- function loadAsset(filename, asBuffer) {
6
- if (!ASSETS_CACHE[filename])
7
- ASSETS_CACHE[filename] = read_file_relative_1.readSync(filename, asBuffer);
8
- return ASSETS_CACHE[filename];
9
- }
10
- function default_1(developmentMode) {
11
- const scriptNameSuffix = developmentMode ? 'js' : 'min.js';
12
- return {
13
- favIcon: loadAsset('./client/ui/favicon.ico', true),
14
- coreScript: loadAsset(`./client/core/index.${scriptNameSuffix}`),
15
- driverScript: loadAsset(`./client/driver/index.${scriptNameSuffix}`),
16
- uiScript: loadAsset(`./client/ui/index.${scriptNameSuffix}`),
17
- uiStyle: loadAsset('./client/ui/styles.css'),
18
- uiSprite: loadAsset('./client/ui/sprite.png', true),
19
- uiSpriteSvg: loadAsset('./client/ui/sprite.svg', true),
20
- idlePageScript: loadAsset('./client/browser/idle-page/index.js'),
21
- idlePageStyle: loadAsset('./client/browser/idle-page/styles.css'),
22
- idlePageLogo: loadAsset('./client/browser/idle-page/logo.svg', true),
23
- serviceWorkerScript: loadAsset('./client/browser/service-worker.js'),
24
- automationScript: loadAsset(`./client/automation/index.${scriptNameSuffix}`),
25
- // NOTE: Load the legacy client script lazily to reduce startup time
26
- legacyRunnerScript: require('testcafe-legacy-api').CLIENT_RUNNER_SCRIPT
27
- };
28
- }
29
- exports.default = default_1;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const read_file_relative_1 = require("read-file-relative");
4
+ const ASSETS_CACHE = {};
5
+ function loadAsset(filename, asBuffer) {
6
+ if (!ASSETS_CACHE[filename])
7
+ ASSETS_CACHE[filename] = read_file_relative_1.readSync(filename, asBuffer);
8
+ return ASSETS_CACHE[filename];
9
+ }
10
+ function default_1(developmentMode) {
11
+ const scriptNameSuffix = developmentMode ? 'js' : 'min.js';
12
+ return {
13
+ favIcon: loadAsset('./client/ui/favicon.ico', true),
14
+ coreScript: loadAsset(`./client/core/index.${scriptNameSuffix}`),
15
+ driverScript: loadAsset(`./client/driver/index.${scriptNameSuffix}`),
16
+ uiScript: loadAsset(`./client/ui/index.${scriptNameSuffix}`),
17
+ uiStyle: loadAsset('./client/ui/styles.css'),
18
+ uiSprite: loadAsset('./client/ui/sprite.png', true),
19
+ uiSpriteSvg: loadAsset('./client/ui/sprite.svg', true),
20
+ idlePageScript: loadAsset('./client/browser/idle-page/index.js'),
21
+ idlePageStyle: loadAsset('./client/browser/idle-page/styles.css'),
22
+ idlePageLogo: loadAsset('./client/browser/idle-page/logo.svg', true),
23
+ serviceWorkerScript: loadAsset('./client/browser/service-worker.js'),
24
+ automationScript: loadAsset(`./client/automation/index.${scriptNameSuffix}`),
25
+ // NOTE: Load the legacy client script lazily to reduce startup time
26
+ legacyRunnerScript: require('testcafe-legacy-api').CLIENT_RUNNER_SCRIPT
27
+ };
28
+ }
29
+ exports.default = default_1;
30
30
  module.exports = exports.default;
31
31
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1hc3NldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9hZC1hc3NldHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFBc0Q7QUFHdEQsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBRXhCLFNBQVMsU0FBUyxDQUFFLFFBQVEsRUFBRSxRQUFRO0lBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyw2QkFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV0RCxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsbUJBQXlCLGVBQWU7SUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBRTNELE9BQU87UUFDSCxPQUFPLEVBQU8sU0FBUyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQztRQUN4RCxVQUFVLEVBQUksU0FBUyxDQUFDLHVCQUF1QixnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xFLFlBQVksRUFBRSxTQUFTLENBQUMseUJBQXlCLGdCQUFnQixFQUFFLENBQUM7UUFDcEUsUUFBUSxFQUFNLFNBQVMsQ0FBQyxxQkFBcUIsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoRSxPQUFPLEVBQU8sU0FBUyxDQUFDLHdCQUF3QixDQUFDO1FBQ2pELFFBQVEsRUFBTSxTQUFTLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDO1FBQ3ZELFdBQVcsRUFBRyxTQUFTLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDO1FBRXZELGNBQWMsRUFBRSxTQUFTLENBQUMscUNBQXFDLENBQUM7UUFDaEUsYUFBYSxFQUFHLFNBQVMsQ0FBQyx1Q0FBdUMsQ0FBQztRQUNsRSxZQUFZLEVBQUksU0FBUyxDQUFDLHFDQUFxQyxFQUFFLElBQUksQ0FBQztRQUV0RSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsb0NBQW9DLENBQUM7UUFFcEUsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLDZCQUE2QixnQkFBZ0IsRUFBRSxDQUFDO1FBRTVFLG9FQUFvRTtRQUNwRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxvQkFBb0I7S0FDMUUsQ0FBQztBQUNOLENBQUM7QUF2QkQsNEJBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZFN5bmMgYXMgcmVhZCB9IGZyb20gJ3JlYWQtZmlsZS1yZWxhdGl2ZSc7XG5cblxuY29uc3QgQVNTRVRTX0NBQ0hFID0ge307XG5cbmZ1bmN0aW9uIGxvYWRBc3NldCAoZmlsZW5hbWUsIGFzQnVmZmVyKSB7XG4gICAgaWYgKCFBU1NFVFNfQ0FDSEVbZmlsZW5hbWVdKVxuICAgICAgICBBU1NFVFNfQ0FDSEVbZmlsZW5hbWVdID0gcmVhZChmaWxlbmFtZSwgYXNCdWZmZXIpO1xuXG4gICAgcmV0dXJuIEFTU0VUU19DQUNIRVtmaWxlbmFtZV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChkZXZlbG9wbWVudE1vZGUpIHtcbiAgICBjb25zdCBzY3JpcHROYW1lU3VmZml4ID0gZGV2ZWxvcG1lbnRNb2RlID8gJ2pzJyA6ICdtaW4uanMnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZmF2SWNvbjogICAgICBsb2FkQXNzZXQoJy4vY2xpZW50L3VpL2Zhdmljb24uaWNvJywgdHJ1ZSksXG4gICAgICAgIGNvcmVTY3JpcHQ6ICAgbG9hZEFzc2V0KGAuL2NsaWVudC9jb3JlL2luZGV4LiR7c2NyaXB0TmFtZVN1ZmZpeH1gKSxcbiAgICAgICAgZHJpdmVyU2NyaXB0OiBsb2FkQXNzZXQoYC4vY2xpZW50L2RyaXZlci9pbmRleC4ke3NjcmlwdE5hbWVTdWZmaXh9YCksXG4gICAgICAgIHVpU2NyaXB0OiAgICAgbG9hZEFzc2V0KGAuL2NsaWVudC91aS9pbmRleC4ke3NjcmlwdE5hbWVTdWZmaXh9YCksXG4gICAgICAgIHVpU3R5bGU6ICAgICAgbG9hZEFzc2V0KCcuL2NsaWVudC91aS9zdHlsZXMuY3NzJyksXG4gICAgICAgIHVpU3ByaXRlOiAgICAgbG9hZEFzc2V0KCcuL2NsaWVudC91aS9zcHJpdGUucG5nJywgdHJ1ZSksXG4gICAgICAgIHVpU3ByaXRlU3ZnOiAgbG9hZEFzc2V0KCcuL2NsaWVudC91aS9zcHJpdGUuc3ZnJywgdHJ1ZSksXG5cbiAgICAgICAgaWRsZVBhZ2VTY3JpcHQ6IGxvYWRBc3NldCgnLi9jbGllbnQvYnJvd3Nlci9pZGxlLXBhZ2UvaW5kZXguanMnKSxcbiAgICAgICAgaWRsZVBhZ2VTdHlsZTogIGxvYWRBc3NldCgnLi9jbGllbnQvYnJvd3Nlci9pZGxlLXBhZ2Uvc3R5bGVzLmNzcycpLFxuICAgICAgICBpZGxlUGFnZUxvZ286ICAgbG9hZEFzc2V0KCcuL2NsaWVudC9icm93c2VyL2lkbGUtcGFnZS9sb2dvLnN2ZycsIHRydWUpLFxuXG4gICAgICAgIHNlcnZpY2VXb3JrZXJTY3JpcHQ6IGxvYWRBc3NldCgnLi9jbGllbnQvYnJvd3Nlci9zZXJ2aWNlLXdvcmtlci5qcycpLFxuXG4gICAgICAgIGF1dG9tYXRpb25TY3JpcHQ6IGxvYWRBc3NldChgLi9jbGllbnQvYXV0b21hdGlvbi9pbmRleC4ke3NjcmlwdE5hbWVTdWZmaXh9YCksXG5cbiAgICAgICAgLy8gTk9URTogTG9hZCB0aGUgbGVnYWN5IGNsaWVudCBzY3JpcHQgbGF6aWx5IHRvIHJlZHVjZSBzdGFydHVwIHRpbWVcbiAgICAgICAgbGVnYWN5UnVubmVyU2NyaXB0OiByZXF1aXJlKCd0ZXN0Y2FmZS1sZWdhY3ktYXBpJykuQ0xJRU5UX1JVTk5FUl9TQ1JJUFRcbiAgICB9O1xufVxuIl19
@@ -1,18 +1,18 @@
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 render_callsite_sync_1 = __importDefault(require("../utils/render-callsite-sync"));
7
- const create_stack_filter_1 = __importDefault(require("../errors/create-stack-filter"));
8
- const callsite_record_1 = require("callsite-record");
9
- function addWarning(warningLog, message, callsite = void 0) {
10
- const renderedCallsite = render_callsite_sync_1.default(callsite, {
11
- renderer: callsite_record_1.renderers.noColor,
12
- stackFilter: create_stack_filter_1.default(Error.stackTraceLimit)
13
- });
14
- warningLog.addWarning(message + `\n\n${renderedCallsite}`);
15
- }
16
- exports.default = addWarning;
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 render_callsite_sync_1 = __importDefault(require("../utils/render-callsite-sync"));
7
+ const create_stack_filter_1 = __importDefault(require("../errors/create-stack-filter"));
8
+ const callsite_record_1 = require("callsite-record");
9
+ function addWarning(warningLog, message, callsite = void 0) {
10
+ const renderedCallsite = render_callsite_sync_1.default(callsite, {
11
+ renderer: callsite_record_1.renderers.noColor,
12
+ stackFilter: create_stack_filter_1.default(Error.stackTraceLimit)
13
+ });
14
+ warningLog.addWarning(message + `\n\n${renderedCallsite}`);
15
+ }
16
+ exports.default = addWarning;
17
17
  module.exports = exports.default;
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJlbmRlcmVkLXdhcm5pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbm90aWZpY2F0aW9ucy9hZGQtcmVuZGVyZWQtd2FybmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlGQUErRDtBQUMvRCx3RkFBOEQ7QUFDOUQscURBQTRDO0FBRzVDLFNBQXdCLFVBQVUsQ0FBRSxVQUFzQixFQUFFLE9BQWUsRUFBRSxXQUFnQixLQUFLLENBQUM7SUFDL0YsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBa0IsQ0FBQyxRQUFRLEVBQUU7UUFDbEQsUUFBUSxFQUFLLDJCQUFTLENBQUMsT0FBTztRQUM5QixXQUFXLEVBQUUsNkJBQWlCLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztLQUN4RCxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBUEQsNkJBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVuZGVyQ2FsbHNpdGVTeW5jIGZyb20gJy4uL3V0aWxzL3JlbmRlci1jYWxsc2l0ZS1zeW5jJztcbmltcG9ydCBjcmVhdGVTdGFja0ZpbHRlciBmcm9tICcuLi9lcnJvcnMvY3JlYXRlLXN0YWNrLWZpbHRlcic7XG5pbXBvcnQgeyByZW5kZXJlcnMgfSBmcm9tICdjYWxsc2l0ZS1yZWNvcmQnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi93YXJuaW5nLWxvZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFdhcm5pbmcgKHdhcm5pbmdMb2c6IFdhcm5pbmdMb2csIG1lc3NhZ2U6IHN0cmluZywgY2FsbHNpdGU6IGFueSA9IHZvaWQgMCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbmRlcmVkQ2FsbHNpdGUgPSByZW5kZXJDYWxsc2l0ZVN5bmMoY2FsbHNpdGUsIHtcbiAgICAgICAgcmVuZGVyZXI6ICAgIHJlbmRlcmVycy5ub0NvbG9yLFxuICAgICAgICBzdGFja0ZpbHRlcjogY3JlYXRlU3RhY2tGaWx0ZXIoRXJyb3Iuc3RhY2tUcmFjZUxpbWl0KVxuICAgIH0pO1xuXG4gICAgd2FybmluZ0xvZy5hZGRXYXJuaW5nKG1lc3NhZ2UgKyBgXFxuXFxuJHtyZW5kZXJlZENhbGxzaXRlfWApO1xufVxuIl19
@@ -1,80 +1,80 @@
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 chalk_1 = __importDefault(require("chalk"));
7
- const lodash_1 = require("lodash");
8
- const log_update_async_hook_1 = __importDefault(require("log-update-async-hook"));
9
- const render_callsite_sync_1 = __importDefault(require("../utils/render-callsite-sync"));
10
- const create_stack_filter_1 = __importDefault(require("../errors/create-stack-filter"));
11
- exports.default = {
12
- messages: [],
13
- debugLogging: false,
14
- streamsOverridden: false,
15
- _overrideStream(stream) {
16
- const initialWrite = stream.write;
17
- stream.write = (chunk, encoding, cb) => {
18
- if (this.debugLogging)
19
- initialWrite.call(stream, chunk, encoding, cb);
20
- else {
21
- this.debugLogging = true;
22
- log_update_async_hook_1.default.clear();
23
- log_update_async_hook_1.default.done();
24
- initialWrite.call(stream, chunk, encoding, cb);
25
- setTimeout(() => this._showAllBreakpoints(), 0);
26
- this.debugLogging = false;
27
- }
28
- };
29
- },
30
- _overrideStreams() {
31
- this._overrideStream(process.stdout);
32
- this._overrideStream(process.stderr);
33
- this.streamsOverridden = true;
34
- },
35
- _getMessageAsString() {
36
- let string = '';
37
- for (const message of this.messages)
38
- string += message.frame;
39
- return string;
40
- },
41
- _showAllBreakpoints() {
42
- if (!this.messages.length)
43
- return;
44
- this.debugLogging = true;
45
- log_update_async_hook_1.default(this._getMessageAsString());
46
- this.debugLogging = false;
47
- },
48
- showBreakpoint(testRunId, userAgent, callsite, testError) {
49
- if (!this.streamsOverridden)
50
- this._overrideStreams();
51
- const callsiteStr = render_callsite_sync_1.default(callsite, {
52
- frameSize: 1,
53
- stackFilter: create_stack_filter_1.default(Error.stackTraceLimit),
54
- stack: false
55
- });
56
- const frame = `\n` +
57
- `----\n` +
58
- `${userAgent}\n` +
59
- chalk_1.default.yellow(testError ? 'DEBUGGER PAUSE ON FAILED TEST:' : 'DEBUGGER PAUSE:') +
60
- `${testError ? `\n${testError}` : ''}` +
61
- `${!testError && callsiteStr ? `\n${callsiteStr}` : ''}` +
62
- '\n' +
63
- `----\n`;
64
- const message = { testRunId, frame };
65
- const index = lodash_1.findIndex(this.messages, { testRunId });
66
- if (index === -1)
67
- this.messages.push(message);
68
- else
69
- this.messages[index] = message;
70
- this._showAllBreakpoints();
71
- },
72
- hideBreakpoint(testRunId) {
73
- const index = lodash_1.findIndex(this.messages, { testRunId });
74
- if (index !== -1)
75
- this.messages.splice(index, 1);
76
- this._showAllBreakpoints();
77
- }
78
- };
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 chalk_1 = __importDefault(require("chalk"));
7
+ const lodash_1 = require("lodash");
8
+ const log_update_async_hook_1 = __importDefault(require("log-update-async-hook"));
9
+ const render_callsite_sync_1 = __importDefault(require("../utils/render-callsite-sync"));
10
+ const create_stack_filter_1 = __importDefault(require("../errors/create-stack-filter"));
11
+ exports.default = {
12
+ messages: [],
13
+ debugLogging: false,
14
+ streamsOverridden: false,
15
+ _overrideStream(stream) {
16
+ const initialWrite = stream.write;
17
+ stream.write = (chunk, encoding, cb) => {
18
+ if (this.debugLogging)
19
+ initialWrite.call(stream, chunk, encoding, cb);
20
+ else {
21
+ this.debugLogging = true;
22
+ log_update_async_hook_1.default.clear();
23
+ log_update_async_hook_1.default.done();
24
+ initialWrite.call(stream, chunk, encoding, cb);
25
+ setTimeout(() => this._showAllBreakpoints(), 0);
26
+ this.debugLogging = false;
27
+ }
28
+ };
29
+ },
30
+ _overrideStreams() {
31
+ this._overrideStream(process.stdout);
32
+ this._overrideStream(process.stderr);
33
+ this.streamsOverridden = true;
34
+ },
35
+ _getMessageAsString() {
36
+ let string = '';
37
+ for (const message of this.messages)
38
+ string += message.frame;
39
+ return string;
40
+ },
41
+ _showAllBreakpoints() {
42
+ if (!this.messages.length)
43
+ return;
44
+ this.debugLogging = true;
45
+ log_update_async_hook_1.default(this._getMessageAsString());
46
+ this.debugLogging = false;
47
+ },
48
+ showBreakpoint(testRunId, userAgent, callsite, testError) {
49
+ if (!this.streamsOverridden)
50
+ this._overrideStreams();
51
+ const callsiteStr = render_callsite_sync_1.default(callsite, {
52
+ frameSize: 1,
53
+ stackFilter: create_stack_filter_1.default(Error.stackTraceLimit),
54
+ stack: false
55
+ });
56
+ const frame = `\n` +
57
+ `----\n` +
58
+ `${userAgent}\n` +
59
+ chalk_1.default.yellow(testError ? 'DEBUGGER PAUSE ON FAILED TEST:' : 'DEBUGGER PAUSE:') +
60
+ `${testError ? `\n${testError}` : ''}` +
61
+ `${!testError && callsiteStr ? `\n${callsiteStr}` : ''}` +
62
+ '\n' +
63
+ `----\n`;
64
+ const message = { testRunId, frame };
65
+ const index = lodash_1.findIndex(this.messages, { testRunId });
66
+ if (index === -1)
67
+ this.messages.push(message);
68
+ else
69
+ this.messages[index] = message;
70
+ this._showAllBreakpoints();
71
+ },
72
+ hideBreakpoint(testRunId) {
73
+ const index = lodash_1.findIndex(this.messages, { testRunId });
74
+ if (index !== -1)
75
+ this.messages.splice(index, 1);
76
+ this._showAllBreakpoints();
77
+ }
78
+ };
79
79
  module.exports = exports.default;
80
80
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vdGlmaWNhdGlvbnMvZGVidWctbG9nZ2VyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLG1DQUFtQztBQUNuQyxrRkFBOEM7QUFDOUMseUZBQStEO0FBQy9ELHdGQUE4RDtBQUU5RCxrQkFBZTtJQUNYLFFBQVEsRUFBRSxFQUFFO0lBRVosWUFBWSxFQUFFLEtBQUs7SUFFbkIsaUJBQWlCLEVBQUUsS0FBSztJQUV4QixlQUFlLENBQUUsTUFBTTtRQUNuQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRWxDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ25DLElBQUksSUFBSSxDQUFDLFlBQVk7Z0JBQ2pCLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzlDO2dCQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUV6QiwrQkFBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQiwrQkFBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVqQixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUUvQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRWhELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1FBQ0wsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVoQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQy9CLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTVCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQ3JCLE9BQU87UUFFWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QiwrQkFBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELGNBQWMsQ0FBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTVCLE1BQU0sV0FBVyxHQUFHLDhCQUFrQixDQUFDLFFBQVEsRUFBRTtZQUM3QyxTQUFTLEVBQUksQ0FBQztZQUNkLFdBQVcsRUFBRSw2QkFBaUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQ3JELEtBQUssRUFBUSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLElBQUk7WUFDSixRQUFRO1lBQ1IsR0FBRyxTQUFTLElBQUk7WUFDaEIsZUFBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztZQUM5RSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RDLEdBQUcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSTtZQUNKLFFBQVEsQ0FBQztRQUV2QixNQUFNLE9BQU8sR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBSyxrQkFBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztZQUU1QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUVuQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYyxDQUFFLFNBQVM7UUFDckIsTUFBTSxLQUFLLEdBQUcsa0JBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUV0RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgZmluZEluZGV4IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2dVcGRhdGUgZnJvbSAnbG9nLXVwZGF0ZS1hc3luYy1ob29rJztcbmltcG9ydCByZW5kZXJDYWxsc2l0ZVN5bmMgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLWNhbGxzaXRlLXN5bmMnO1xuaW1wb3J0IGNyZWF0ZVN0YWNrRmlsdGVyIGZyb20gJy4uL2Vycm9ycy9jcmVhdGUtc3RhY2stZmlsdGVyJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1lc3NhZ2VzOiBbXSxcblxuICAgIGRlYnVnTG9nZ2luZzogZmFsc2UsXG5cbiAgICBzdHJlYW1zT3ZlcnJpZGRlbjogZmFsc2UsXG5cbiAgICBfb3ZlcnJpZGVTdHJlYW0gKHN0cmVhbSkge1xuICAgICAgICBjb25zdCBpbml0aWFsV3JpdGUgPSBzdHJlYW0ud3JpdGU7XG5cbiAgICAgICAgc3RyZWFtLndyaXRlID0gKGNodW5rLCBlbmNvZGluZywgY2IpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnTG9nZ2luZylcbiAgICAgICAgICAgICAgICBpbml0aWFsV3JpdGUuY2FsbChzdHJlYW0sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgbG9nVXBkYXRlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgbG9nVXBkYXRlLmRvbmUoKTtcblxuICAgICAgICAgICAgICAgIGluaXRpYWxXcml0ZS5jYWxsKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBjYik7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3Nob3dBbGxCcmVha3BvaW50cygpLCAwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIF9vdmVycmlkZVN0cmVhbXMgKCkge1xuICAgICAgICB0aGlzLl9vdmVycmlkZVN0cmVhbShwcm9jZXNzLnN0ZG91dCk7XG4gICAgICAgIHRoaXMuX292ZXJyaWRlU3RyZWFtKHByb2Nlc3Muc3RkZXJyKTtcblxuICAgICAgICB0aGlzLnN0cmVhbXNPdmVycmlkZGVuID0gdHJ1ZTtcbiAgICB9LFxuXG4gICAgX2dldE1lc3NhZ2VBc1N0cmluZyAoKSB7XG4gICAgICAgIGxldCBzdHJpbmcgPSAnJztcblxuICAgICAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgdGhpcy5tZXNzYWdlcylcbiAgICAgICAgICAgIHN0cmluZyArPSBtZXNzYWdlLmZyYW1lO1xuXG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfSxcblxuICAgIF9zaG93QWxsQnJlYWtwb2ludHMgKCkge1xuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZGVidWdMb2dnaW5nID0gdHJ1ZTtcbiAgICAgICAgbG9nVXBkYXRlKHRoaXMuX2dldE1lc3NhZ2VBc1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dpbmcgPSBmYWxzZTtcbiAgICB9LFxuXG4gICAgc2hvd0JyZWFrcG9pbnQgKHRlc3RSdW5JZCwgdXNlckFnZW50LCBjYWxsc2l0ZSwgdGVzdEVycm9yKSB7XG4gICAgICAgIGlmICghdGhpcy5zdHJlYW1zT3ZlcnJpZGRlbilcbiAgICAgICAgICAgIHRoaXMuX292ZXJyaWRlU3RyZWFtcygpO1xuXG4gICAgICAgIGNvbnN0IGNhbGxzaXRlU3RyID0gcmVuZGVyQ2FsbHNpdGVTeW5jKGNhbGxzaXRlLCB7XG4gICAgICAgICAgICBmcmFtZVNpemU6ICAgMSxcbiAgICAgICAgICAgIHN0YWNrRmlsdGVyOiBjcmVhdGVTdGFja0ZpbHRlcihFcnJvci5zdGFja1RyYWNlTGltaXQpLFxuICAgICAgICAgICAgc3RhY2s6ICAgICAgIGZhbHNlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGZyYW1lID0gYFxcbmAgK1xuICAgICAgICAgICAgICAgICAgICAgIGAtLS0tXFxuYCArXG4gICAgICAgICAgICAgICAgICAgICAgYCR7dXNlckFnZW50fVxcbmAgK1xuICAgICAgICAgICAgICAgICAgICAgIGNoYWxrLnllbGxvdyh0ZXN0RXJyb3IgPyAnREVCVUdHRVIgUEFVU0UgT04gRkFJTEVEIFRFU1Q6JyA6ICdERUJVR0dFUiBQQVVTRTonKSArXG4gICAgICAgICAgICAgICAgICAgICAgYCR7dGVzdEVycm9yID8gYFxcbiR7dGVzdEVycm9yfWAgOiAnJ31gICtcbiAgICAgICAgICAgICAgICAgICAgICBgJHshdGVzdEVycm9yICYmIGNhbGxzaXRlU3RyID8gYFxcbiR7Y2FsbHNpdGVTdHJ9YCA6ICcnfWAgK1xuICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICBgLS0tLVxcbmA7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHsgdGVzdFJ1bklkLCBmcmFtZSB9O1xuICAgICAgICBjb25zdCBpbmRleCAgID0gZmluZEluZGV4KHRoaXMubWVzc2FnZXMsIHsgdGVzdFJ1bklkIH0pO1xuXG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNbaW5kZXhdID0gbWVzc2FnZTtcblxuICAgICAgICB0aGlzLl9zaG93QWxsQnJlYWtwb2ludHMoKTtcbiAgICB9LFxuXG4gICAgaGlkZUJyZWFrcG9pbnQgKHRlc3RSdW5JZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGZpbmRJbmRleCh0aGlzLm1lc3NhZ2VzLCB7IHRlc3RSdW5JZCB9KTtcblxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKVxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHRoaXMuX3Nob3dBbGxCcmVha3BvaW50cygpO1xuICAgIH1cbn07XG4iXX0=