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,90 +1,90 @@
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
- exports.renderDiff = exports.markup = exports.shouldSkipCallsite = exports.replaceLeadingSpacesWithNbsp = exports.formatExpressionMessage = exports.formatSelectorCallstack = exports.formatUrl = exports.renderForbiddenCharsList = void 0;
7
- const dedent_1 = __importDefault(require("dedent"));
8
- const lodash_1 = require("lodash");
9
- const phase_1 = __importDefault(require("../../test-run/phase"));
10
- const types_1 = require("../types");
11
- const SUBTITLES = {
12
- [phase_1.default.initial]: '',
13
- [phase_1.default.inFixtureBeforeHook]: '<span class="subtitle">Error in fixture.before hook</span>\n',
14
- [phase_1.default.inFixtureBeforeEachHook]: '<span class="subtitle">Error in fixture.beforeEach hook</span>\n',
15
- [phase_1.default.inTestBeforeHook]: '<span class="subtitle">Error in test.before hook</span>\n',
16
- [phase_1.default.inTest]: '',
17
- [phase_1.default.inTestAfterHook]: '<span class="subtitle">Error in test.after hook</span>\n',
18
- [phase_1.default.inFixtureAfterEachHook]: '<span class="subtitle">Error in fixture.afterEach hook</span>\n',
19
- [phase_1.default.inFixtureAfterHook]: '<span class="subtitle">Error in fixture.after hook</span>\n',
20
- [phase_1.default.inRoleInitializer]: '<span class="subtitle">Error in Role initializer</span>\n',
21
- [phase_1.default.inBookmarkRestore]: '<span class="subtitle">Error while restoring configuration after Role switch</span>\n'
22
- };
23
- function renderForbiddenCharsList(forbiddenCharsList) {
24
- return forbiddenCharsList.map(charInfo => `\t"${charInfo.chars}" at index ${charInfo.index}\n`).join('');
25
- }
26
- exports.renderForbiddenCharsList = renderForbiddenCharsList;
27
- function formatUrl(url) {
28
- return `<a href="${url}">${url}</a>`;
29
- }
30
- exports.formatUrl = formatUrl;
31
- function formatSelectorCallstack(apiFnChain, apiFnIndex, viewportWidth) {
32
- if (typeof apiFnIndex === 'undefined')
33
- return '';
34
- const emptySpaces = 10;
35
- const ellipsis = '...)';
36
- const availableWidth = viewportWidth - emptySpaces;
37
- return apiFnChain.map((apiFn, index) => {
38
- let formattedApiFn = String.fromCharCode(160);
39
- formattedApiFn += index === apiFnIndex ? '>' : ' ';
40
- formattedApiFn += ' | ';
41
- formattedApiFn += index !== 0 ? ' ' : '';
42
- formattedApiFn += apiFn;
43
- if (formattedApiFn.length > availableWidth)
44
- return formattedApiFn.substr(0, availableWidth - emptySpaces) + ellipsis;
45
- return formattedApiFn;
46
- }).join('\n');
47
- }
48
- exports.formatSelectorCallstack = formatSelectorCallstack;
49
- function formatExpressionMessage(expression, line, column) {
50
- const expressionStr = lodash_1.escape(expression);
51
- if (line === void 0 || column === void 0)
52
- return expressionStr;
53
- return `${expressionStr}\nat ${line}:${column}`;
54
- }
55
- exports.formatExpressionMessage = formatExpressionMessage;
56
- function replaceLeadingSpacesWithNbsp(str) {
57
- return str.replace(/^ +/mg, match => {
58
- return lodash_1.repeat('&nbsp;', match.length);
59
- });
60
- }
61
- exports.replaceLeadingSpacesWithNbsp = replaceLeadingSpacesWithNbsp;
62
- function shouldSkipCallsite(err) {
63
- return err.code === types_1.TEST_RUN_ERRORS.uncaughtNonErrorObjectInTestCode ||
64
- err.code === types_1.TEST_RUN_ERRORS.unhandledPromiseRejection ||
65
- err.code === types_1.TEST_RUN_ERRORS.uncaughtException;
66
- }
67
- exports.shouldSkipCallsite = shouldSkipCallsite;
68
- function markup(err, msgMarkup, errCallsite = '') {
69
- msgMarkup = dedent_1.default(`${SUBTITLES[err.testRunPhase]}<div class="message">${dedent_1.default(msgMarkup)}</div>`);
70
- const browserStr = `\n\n<strong>Browser:</strong> <span class="user-agent">${err.userAgent}</span>`;
71
- if (errCallsite)
72
- msgMarkup += `${browserStr}\n\n${errCallsite}\n`;
73
- else
74
- msgMarkup += browserStr;
75
- if (err.screenshotPath)
76
- msgMarkup += `\n<div class="screenshot-info"><strong>Screenshot:</strong> <a class="screenshot-path">${lodash_1.escape(err.screenshotPath)}</a></div>`;
77
- if (!shouldSkipCallsite(err)) {
78
- const callsiteMarkup = err.getCallsiteMarkup();
79
- if (callsiteMarkup)
80
- msgMarkup += `\n\n${callsiteMarkup}`;
81
- }
82
- return msgMarkup.replace('\t', '&nbsp;'.repeat(4));
83
- }
84
- exports.markup = markup;
85
- function renderDiff(diff) {
86
- return diff ?
87
- `<span class="diff-added">+ expected</span> <span class="diff-removed">- actual</span>\n\n${diff}` : ``;
88
- }
89
- exports.renderDiff = renderDiff;
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
+ exports.renderDiff = exports.markup = exports.shouldSkipCallsite = exports.replaceLeadingSpacesWithNbsp = exports.formatExpressionMessage = exports.formatSelectorCallstack = exports.formatUrl = exports.renderForbiddenCharsList = void 0;
7
+ const dedent_1 = __importDefault(require("dedent"));
8
+ const lodash_1 = require("lodash");
9
+ const phase_1 = __importDefault(require("../../test-run/phase"));
10
+ const types_1 = require("../types");
11
+ const SUBTITLES = {
12
+ [phase_1.default.initial]: '',
13
+ [phase_1.default.inFixtureBeforeHook]: '<span class="subtitle">Error in fixture.before hook</span>\n',
14
+ [phase_1.default.inFixtureBeforeEachHook]: '<span class="subtitle">Error in fixture.beforeEach hook</span>\n',
15
+ [phase_1.default.inTestBeforeHook]: '<span class="subtitle">Error in test.before hook</span>\n',
16
+ [phase_1.default.inTest]: '',
17
+ [phase_1.default.inTestAfterHook]: '<span class="subtitle">Error in test.after hook</span>\n',
18
+ [phase_1.default.inFixtureAfterEachHook]: '<span class="subtitle">Error in fixture.afterEach hook</span>\n',
19
+ [phase_1.default.inFixtureAfterHook]: '<span class="subtitle">Error in fixture.after hook</span>\n',
20
+ [phase_1.default.inRoleInitializer]: '<span class="subtitle">Error in Role initializer</span>\n',
21
+ [phase_1.default.inBookmarkRestore]: '<span class="subtitle">Error while restoring configuration after Role switch</span>\n'
22
+ };
23
+ function renderForbiddenCharsList(forbiddenCharsList) {
24
+ return forbiddenCharsList.map(charInfo => `\t"${charInfo.chars}" at index ${charInfo.index}\n`).join('');
25
+ }
26
+ exports.renderForbiddenCharsList = renderForbiddenCharsList;
27
+ function formatUrl(url) {
28
+ return `<a href="${url}">${url}</a>`;
29
+ }
30
+ exports.formatUrl = formatUrl;
31
+ function formatSelectorCallstack(apiFnChain, apiFnIndex, viewportWidth) {
32
+ if (typeof apiFnIndex === 'undefined')
33
+ return '';
34
+ const emptySpaces = 10;
35
+ const ellipsis = '...)';
36
+ const availableWidth = viewportWidth - emptySpaces;
37
+ return apiFnChain.map((apiFn, index) => {
38
+ let formattedApiFn = String.fromCharCode(160);
39
+ formattedApiFn += index === apiFnIndex ? '>' : ' ';
40
+ formattedApiFn += ' | ';
41
+ formattedApiFn += index !== 0 ? ' ' : '';
42
+ formattedApiFn += apiFn;
43
+ if (formattedApiFn.length > availableWidth)
44
+ return formattedApiFn.substr(0, availableWidth - emptySpaces) + ellipsis;
45
+ return formattedApiFn;
46
+ }).join('\n');
47
+ }
48
+ exports.formatSelectorCallstack = formatSelectorCallstack;
49
+ function formatExpressionMessage(expression, line, column) {
50
+ const expressionStr = lodash_1.escape(expression);
51
+ if (line === void 0 || column === void 0)
52
+ return expressionStr;
53
+ return `${expressionStr}\nat ${line}:${column}`;
54
+ }
55
+ exports.formatExpressionMessage = formatExpressionMessage;
56
+ function replaceLeadingSpacesWithNbsp(str) {
57
+ return str.replace(/^ +/mg, match => {
58
+ return lodash_1.repeat('&nbsp;', match.length);
59
+ });
60
+ }
61
+ exports.replaceLeadingSpacesWithNbsp = replaceLeadingSpacesWithNbsp;
62
+ function shouldSkipCallsite(err) {
63
+ return err.code === types_1.TEST_RUN_ERRORS.uncaughtNonErrorObjectInTestCode ||
64
+ err.code === types_1.TEST_RUN_ERRORS.unhandledPromiseRejection ||
65
+ err.code === types_1.TEST_RUN_ERRORS.uncaughtException;
66
+ }
67
+ exports.shouldSkipCallsite = shouldSkipCallsite;
68
+ function markup(err, msgMarkup, errCallsite = '') {
69
+ msgMarkup = dedent_1.default(`${SUBTITLES[err.testRunPhase]}<div class="message">${dedent_1.default(msgMarkup)}</div>`);
70
+ const browserStr = `\n\n<strong>Browser:</strong> <span class="user-agent">${err.userAgent}</span>`;
71
+ if (errCallsite)
72
+ msgMarkup += `${browserStr}\n\n${errCallsite}\n`;
73
+ else
74
+ msgMarkup += browserStr;
75
+ if (err.screenshotPath)
76
+ msgMarkup += `\n<div class="screenshot-info"><strong>Screenshot:</strong> <a class="screenshot-path">${lodash_1.escape(err.screenshotPath)}</a></div>`;
77
+ if (!shouldSkipCallsite(err)) {
78
+ const callsiteMarkup = err.getCallsiteMarkup();
79
+ if (callsiteMarkup)
80
+ msgMarkup += `\n\n${callsiteMarkup}`;
81
+ }
82
+ return msgMarkup.replace('\t', '&nbsp;'.repeat(4));
83
+ }
84
+ exports.markup = markup;
85
+ function renderDiff(diff) {
86
+ return diff ?
87
+ `<span class="diff-added">+ expected</span> <span class="diff-removed">- actual</span>\n\n${diff}` : ``;
88
+ }
89
+ exports.renderDiff = renderDiff;
90
90
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3JzL3Rlc3QtcnVuL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixtQ0FBc0Q7QUFDdEQsaUVBQWtEO0FBQ2xELG9DQUEyQztBQUUzQyxNQUFNLFNBQVMsR0FBRztJQUNkLENBQUMsZUFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFrQixFQUFFO0lBQzVDLENBQUMsZUFBYyxDQUFDLG1CQUFtQixDQUFDLEVBQU0sOERBQThEO0lBQ3hHLENBQUMsZUFBYyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsa0VBQWtFO0lBQzVHLENBQUMsZUFBYyxDQUFDLGdCQUFnQixDQUFDLEVBQVMsMkRBQTJEO0lBQ3JHLENBQUMsZUFBYyxDQUFDLE1BQU0sQ0FBQyxFQUFtQixFQUFFO0lBQzVDLENBQUMsZUFBYyxDQUFDLGVBQWUsQ0FBQyxFQUFVLDBEQUEwRDtJQUNwRyxDQUFDLGVBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFHLGlFQUFpRTtJQUMzRyxDQUFDLGVBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFPLDZEQUE2RDtJQUN2RyxDQUFDLGVBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFRLDJEQUEyRDtJQUNyRyxDQUFDLGVBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFRLHVGQUF1RjtDQUNwSSxDQUFDO0FBRUYsU0FBZ0Isd0JBQXdCLENBQUUsa0JBQWtCO0lBQ3hELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxjQUFjLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3RyxDQUFDO0FBRkQsNERBRUM7QUFFRCxTQUFnQixTQUFTLENBQUUsR0FBRztJQUMxQixPQUFPLFlBQVksR0FBRyxLQUFLLEdBQUcsTUFBTSxD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QUFFO1FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRS9DLElBQUksY0FBYztZQUNkLFNBQVMsSUFBSSxPQUFPLGNBQWMsRUFBRSxDQUFDO0tBQzVDO0lBRUQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQXJCRCx3QkFxQkM7QUFFRCxTQUFnQixVQUFVLENBQUUsSUFBSTtJQUM1QixPQUFPLElBQUksQ0FBQyxDQUFDO1FBQ1QsNEZBQTRGLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEgsQ0FBQztBQUhELGdDQUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZGVudCBmcm9tICdkZWRlbnQnO1xuaW1wb3J0IHsgZXNjYXBlIGFzIGVzY2FwZUh0bWwsIHJlcGVhdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgVEVTVF9SVU5fUEhBU0UgZnJvbSAnLi4vLi4vdGVzdC1ydW4vcGhhc2UnO1xuaW1wb3J0IHsgVEVTVF9SVU5fRVJST1JTIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBTVUJUSVRMRVMgPSB7XG4gICAgW1RFU1RfUlVOX1BIQVNFLmluaXRpYWxdOiAgICAgICAgICAgICAgICAgJycsXG4gICAgW1RFU1RfUlVOX1BIQVNFLmluRml4dHVyZUJlZm9yZUhvb2tdOiAgICAgJzxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj5FcnJvciBpbiBmaXh0dXJlLmJlZm9yZSBob29rPC9zcGFuPlxcbicsXG4gICAgW1RFU1RfUlVOX1BIQVNFLmluRml4dHVyZUJlZm9yZUVhY2hIb29rXTogJzxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj5FcnJvciBpbiBmaXh0dXJlLmJlZm9yZUVhY2ggaG9vazwvc3Bhbj5cXG4nLFxuICAgIFtURVNUX1JVTl9QSEFTRS5pblRlc3RCZWZvcmVIb29rXTogICAgICAgICc8c3BhbiBjbGFzcz1cInN1YnRpdGxlXCI+RXJyb3IgaW4gdGVzdC5iZWZvcmUgaG9vazwvc3Bhbj5cXG4nLFxuICAgIFtURVNUX1JVTl9QSEFTRS5pblRlc3RdOiAgICAgICAgICAgICAgICAgICcnLFxuICAgIFtURVNUX1JVTl9QSEFTRS5pblRlc3RBZnRlckhvb2tdOiAgICAgICAgICc8c3BhbiBjbGFzcz1cInN1YnRpdGxlXCI+RXJyb3IgaW4gdGVzdC5hZnRlciBob29rPC9zcGFuPlxcbicsXG4gICAgW1RFU1RfUlVOX1BIQVNFLmluRml4dHVyZUFmdGVyRWFjaEhvb2tdOiAgJzxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj5FcnJvciBpbiBmaXh0dXJlLmFmdGVyRWFjaCBob29rPC9zcGFuPlxcbicsXG4gICAgW1RFU1RfUlVOX1BIQVNFLmluRml4dHVyZUFmdGVySG9va106ICAgICAgJzxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj5FcnJvciBpbiBmaXh0dXJlLmFmdGVyIGhvb2s8L3NwYW4+XFxuJyxcbiAgICBbVEVTVF9SVU5fUEhBU0UuaW5Sb2xlSW5pdGlhbGl6ZXJdOiAgICAgICAnPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZVwiPkVycm9yIGluIFJvbGUgaW5pdGlhbGl6ZXI8L3NwYW4+XFxuJyxcbiAgICBbVEVTVF9SVU5fUEhBU0UuaW5Cb29rbWFya1Jlc3RvcmVdOiAgICAgICAnPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZVwiPkVycm9yIHdoaWxlIHJlc3RvcmluZyBjb25maWd1cmF0aW9uIGFmdGVyIFJvbGUgc3dpdGNoPC9zcGFuPlxcbidcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJGb3JiaWRkZW5DaGFyc0xpc3QgKGZvcmJpZGRlbkNoYXJzTGlzdCkge1xuICAgIHJldHVybiBmb3JiaWRkZW5DaGFyc0xpc3QubWFwKGNoYXJJbmZvID0+IGBcXHRcIiR7Y2hhckluZm8uY2hhcnN9XCIgYXQgaW5kZXggJHtjaGFySW5mby5pbmRleH1cXG5gKS5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFVybCAodXJsKSB7XG4gICAgcmV0dXJuIGA8YSBocmVmPVwiJHt1cmx9XCI+JHt1cmx9PC9hPmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTZWxlY3RvckNhbGxzdGFjayAoYXBpRm5DaGFpbiwgYXBpRm5JbmRleCwgdmlld3BvcnRXaWR0aCkge1xuICAgIGlmICh0eXBlb2YgYXBpRm5JbmRleCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHJldHVybiAnJztcblxuICAgIGNvbnN0IGVtcHR5U3BhY2VzICAgID0gMTA7XG4gICAgY29uc3QgZWxsaXBzaXMgICAgICAgPSAnLi4uKSc7XG4gICAgY29uc3QgYXZhaWxhYmxlV2lkdGggPSB2aWV3cG9ydFdpZHRoIC0gZW1wdHlTcGFjZXM7XG5cbiAgICByZXR1cm4gYXBpRm5DaGFpbi5tYXAoKGFwaUZuLCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgZm9ybWF0dGVkQXBpRm4gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDE2MCk7XG5cbiAgICAgICAgZm9ybWF0dGVkQXBpRm4gKz0gaW5kZXggPT09IGFwaUZuSW5kZXggPyAnPicgOiAnICc7XG4gICAgICAgIGZvcm1hdHRlZEFwaUZuICs9ICcgfCAnO1xuICAgICAgICBmb3JtYXR0ZWRBcGlGbiArPSBpbmRleCAhPT0gMCA/ICcgICcgOiAnJztcbiAgICAgICAgZm9ybWF0dGVkQXBpRm4gKz0gYXBpRm47XG5cbiAgICAgICAgaWYgKGZvcm1hdHRlZEFwaUZuLmxlbmd0aCA+IGF2YWlsYWJsZVdpZHRoKVxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEFwaUZuLnN1YnN0cigwLCBhdmFpbGFibGVXaWR0aCAtIGVtcHR5U3BhY2VzKSArIGVsbGlwc2lzO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRBcGlGbjtcbiAgICB9KS5qb2luKCdcXG4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEV4cHJlc3Npb25NZXNzYWdlIChleHByZXNzaW9uLCBsaW5lLCBjb2x1bW4pIHtcbiAgICBjb25zdCBleHByZXNzaW9uU3RyID0gZXNjYXBlSHRtbChleHByZXNzaW9uKTtcblxuICAgIGlmIChsaW5lID09PSB2b2lkIDAgfHwgY29sdW1uID09PSB2b2lkIDApXG4gICAgICAgIHJldHVybiBleHByZXNzaW9uU3RyO1xuXG4gICAgcmV0dXJuIGAke2V4cHJlc3Npb25TdHJ9XFxuYXQgJHtsaW5lfToke2NvbHVtbn1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUxlYWRpbmdTcGFjZXNXaXRoTmJzcCAoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eICsvbWcsIG1hdGNoID0+IHtcbiAgICAgICAgcmV0dXJuIHJlcGVhdCgnJm5ic3A7JywgbWF0Y2gubGVuZ3RoKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFNraXBDYWxsc2l0ZSAoZXJyKSB7XG4gICAgcmV0dXJuIGVyci5jb2RlID09PSBURVNUX1JVTl9FUlJPUlMudW5jYXVnaHROb25FcnJvck9iamVjdEluVGVzdENvZGUgfHxcbiAgICAgICAgICAgZXJyLmNvZGUgPT09IFRFU1RfUlVOX0VSUk9SUy51bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uIHx8XG4gICAgICAgICAgIGVyci5jb2RlID09PSBURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFeGNlcHRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrdXAgKGVyciwgbXNnTWFya3VwLCBlcnJDYWxsc2l0ZSA9ICcnKSB7XG4gICAgbXNnTWFya3VwID0gZGVkZW50KGAke1NVQlRJVExFU1tlcnIudGVzdFJ1blBoYXNlXX08ZGl2IGNsYXNzPVwibWVzc2FnZVwiPiR7ZGVkZW50KG1zZ01hcmt1cCl9PC9kaXY+YCk7XG5cbiAgICBjb25zdCBicm93c2VyU3RyID0gYFxcblxcbjxzdHJvbmc+QnJvd3Nlcjo8L3N0cm9uZz4gPHNwYW4gY2xhc3M9XCJ1c2VyLWFnZW50XCI+JHtlcnIudXNlckFnZW50fTwvc3Bhbj5gO1xuXG4gICAgaWYgKGVyckNhbGxzaXRlKVxuICAgICAgICBtc2dNYXJrdXAgKz0gYCR7YnJvd3NlclN0cn1cXG5cXG4ke2VyckNhbGxzaXRlfVxcbmA7XG4gICAgZWxzZVxuICAgICAgICBtc2dNYXJrdXAgKz0gYnJvd3NlclN0cjtcblxuICAgIGlmIChlcnIuc2NyZWVuc2hvdFBhdGgpXG4gICAgICAgIG1zZ01hcmt1cCArPSBgXFxuPGRpdiBjbGFzcz1cInNjcmVlbnNob3QtaW5mb1wiPjxzdHJvbmc+U2NyZWVuc2hvdDo8L3N0cm9uZz4gPGEgY2xhc3M9XCJzY3JlZW5zaG90LXBhdGhcIj4ke2VzY2FwZUh0bWwoZXJyLnNjcmVlbnNob3RQYXRoKX08L2E+PC9kaXY+YDtcblxuICAgIGlmICghc2hvdWxkU2tpcENhbGxzaXRlKGVycikpIHtcbiAgICAgICAgY29uc3QgY2FsbHNpdGVNYXJrdXAgPSBlcnIuZ2V0Q2FsbHNpdGVNYXJrdXAoKTtcblxuICAgICAgICBpZiAoY2FsbHNpdGVNYXJrdXApXG4gICAgICAgICAgICBtc2dNYXJrdXAgKz0gYFxcblxcbiR7Y2FsbHNpdGVNYXJrdXB9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gbXNnTWFya3VwLnJlcGxhY2UoJ1xcdCcsICcmbmJzcDsnLnJlcGVhdCg0KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEaWZmIChkaWZmKSB7XG4gICAgcmV0dXJuIGRpZmYgP1xuICAgICAgICBgPHNwYW4gY2xhc3M9XCJkaWZmLWFkZGVkXCI+KyBleHBlY3RlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJkaWZmLXJlbW92ZWRcIj4tIGFjdHVhbDwvc3Bhbj5cXG5cXG4ke2RpZmZ9YCA6IGBgO1xufVxuIl19
@@ -1,157 +1,157 @@
1
- "use strict";
2
- // -------------------------------------------------------------
3
- // WARNING: this file is used by both the client and the server.
4
- // Do not use any browser or node-specific API!
5
- // -------------------------------------------------------------
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.RUNTIME_ERRORS = exports.TEST_RUN_ERRORS = void 0;
8
- exports.TEST_RUN_ERRORS = {
9
- uncaughtErrorOnPage: 'E1',
10
- uncaughtErrorInTestCode: 'E2',
11
- uncaughtNonErrorObjectInTestCode: 'E3',
12
- uncaughtErrorInClientFunctionCode: 'E4',
13
- uncaughtErrorInCustomDOMPropertyCode: 'E5',
14
- unhandledPromiseRejection: 'E6',
15
- uncaughtException: 'E7',
16
- missingAwaitError: 'E8',
17
- actionIntegerOptionError: 'E9',
18
- actionPositiveIntegerOptionError: 'E10',
19
- actionBooleanOptionError: 'E11',
20
- actionSpeedOptionError: 'E12',
21
- actionOptionsTypeError: 'E14',
22
- actionBooleanArgumentError: 'E15',
23
- actionStringArgumentError: 'E16',
24
- actionNullableStringArgumentError: 'E17',
25
- actionStringOrStringArrayArgumentError: 'E18',
26
- actionStringArrayElementError: 'E19',
27
- actionIntegerArgumentError: 'E20',
28
- actionRoleArgumentError: 'E21',
29
- actionPositiveIntegerArgumentError: 'E22',
30
- actionSelectorError: 'E23',
31
- actionElementNotFoundError: 'E24',
32
- actionElementIsInvisibleError: 'E26',
33
- actionSelectorMatchesWrongNodeTypeError: 'E27',
34
- actionAdditionalElementNotFoundError: 'E28',
35
- actionAdditionalElementIsInvisibleError: 'E29',
36
- actionAdditionalSelectorMatchesWrongNodeTypeError: 'E30',
37
- actionElementNonEditableError: 'E31',
38
- actionElementNotTextAreaError: 'E32',
39
- actionElementNonContentEditableError: 'E33',
40
- actionElementIsNotFileInputError: 'E34',
41
- actionRootContainerNotFoundError: 'E35',
42
- actionIncorrectKeysError: 'E36',
43
- actionCannotFindFileToUploadError: 'E37',
44
- actionUnsupportedDeviceTypeError: 'E38',
45
- actionIframeIsNotLoadedError: 'E39',
46
- actionElementNotIframeError: 'E40',
47
- actionInvalidScrollTargetError: 'E41',
48
- currentIframeIsNotLoadedError: 'E42',
49
- currentIframeNotFoundError: 'E43',
50
- currentIframeIsInvisibleError: 'E44',
51
- nativeDialogNotHandledError: 'E45',
52
- uncaughtErrorInNativeDialogHandler: 'E46',
53
- setTestSpeedArgumentError: 'E47',
54
- setNativeDialogHandlerCodeWrongTypeError: 'E48',
55
- clientFunctionExecutionInterruptionError: 'E49',
56
- domNodeClientFunctionResultError: 'E50',
57
- invalidSelectorResultError: 'E51',
58
- cannotObtainInfoForElementSpecifiedBySelectorError: 'E52',
59
- externalAssertionLibraryError: 'E53',
60
- pageLoadError: 'E54',
61
- windowDimensionsOverflowError: 'E55',
62
- forbiddenCharactersInScreenshotPathError: 'E56',
63
- invalidElementScreenshotDimensionsError: 'E57',
64
- roleSwitchInRoleInitializerError: 'E58',
65
- assertionExecutableArgumentError: 'E59',
66
- assertionWithoutMethodCallError: 'E60',
67
- assertionUnawaitedPromiseError: 'E61',
68
- requestHookNotImplementedError: 'E62',
69
- requestHookUnhandledError: 'E63',
70
- uncaughtErrorInCustomClientScriptCode: 'E64',
71
- uncaughtErrorInCustomClientScriptCodeLoadedFromModule: 'E65',
72
- uncaughtErrorInCustomScript: 'E66',
73
- uncaughtTestCafeErrorInCustomScript: 'E67',
74
- childWindowIsNotLoadedError: 'E68',
75
- childWindowNotFoundError: 'E69',
76
- cannotSwitchToWindowError: 'E70',
77
- closeChildWindowError: 'E71',
78
- childWindowClosedBeforeSwitchingError: 'E72',
79
- cannotCloseWindowWithChildrenError: 'E73',
80
- targetWindowNotFoundError: 'E74',
81
- parentWindowNotFoundError: 'E76',
82
- previousWindowNotFoundError: 'E77',
83
- switchToWindowPredicateError: 'E78',
84
- actionFunctionArgumentError: 'E79',
85
- multipleWindowsModeIsDisabledError: 'E80',
86
- multipleWindowsModeIsNotSupportedInRemoteBrowserError: 'E81',
87
- cannotCloseWindowWithoutParent: 'E82',
88
- cannotRestoreChildWindowError: 'E83'
89
- };
90
- exports.RUNTIME_ERRORS = {
91
- cannotCreateMultipleLiveModeRunners: 'E1000',
92
- cannotRunLiveModeRunnerMultipleTimes: 'E1001',
93
- browserDisconnected: 'E1002',
94
- cannotRunAgainstDisconnectedBrowsers: 'E1003',
95
- cannotEstablishBrowserConnection: 'E1004',
96
- cannotFindBrowser: 'E1005',
97
- browserProviderNotFound: 'E1006',
98
- browserNotSet: 'E1007',
99
- testFilesNotFound: 'E1008',
100
- noTestsToRun: 'E1009',
101
- cannotFindReporterForAlias: 'E1010',
102
- multipleSameStreamReporters: 'E1011',
103
- optionValueIsNotValidRegExp: 'E1012',
104
- optionValueIsNotValidKeyValue: 'E1013',
105
- invalidSpeedValue: 'E1014',
106
- invalidConcurrencyFactor: 'E1015',
107
- cannotDivideRemotesCountByConcurrency: 'E1016',
108
- portsOptionRequiresTwoNumbers: 'E1017',
109
- portIsNotFree: 'E1018',
110
- invalidHostname: 'E1019',
111
- cannotFindSpecifiedTestSource: 'E1020',
112
- clientFunctionCodeIsNotAFunction: 'E1021',
113
- selectorInitializedWithWrongType: 'E1022',
114
- clientFunctionCannotResolveTestRun: 'E1023',
115
- regeneratorInClientFunctionCode: 'E1024',
116
- invalidClientFunctionTestRunBinding: 'E1025',
117
- invalidValueType: 'E1026',
118
- unsupportedUrlProtocol: 'E1027',
119
- testControllerProxyCannotResolveTestRun: 'E1028',
120
- timeLimitedPromiseTimeoutExpired: 'E1029',
121
- noTestsToRunDueFiltering: 'E1030',
122
- cannotSetVideoOptionsWithoutBaseVideoPathSpecified: 'E1031',
123
- multipleAPIMethodCallForbidden: 'E1032',
124
- invalidReporterOutput: 'E1033',
125
- cannotReadSSLCertFile: 'E1034',
126
- cannotPrepareTestsDueToError: 'E1035',
127
- cannotParseRawFile: 'E1036',
128
- testedAppFailedWithError: 'E1037',
129
- unableToOpenBrowser: 'E1038',
130
- requestHookConfigureAPIError: 'E1039',
131
- forbiddenCharatersInScreenshotPath: 'E1040',
132
- cannotFindFFMPEG: 'E1041',
133
- compositeArgumentsError: 'E1042',
134
- cannotFindTypescriptConfigurationFile: 'E1043',
135
- clientScriptInitializerIsNotSpecified: 'E1044',
136
- clientScriptBasePathIsNotSpecified: 'E1045',
137
- clientScriptInitializerMultipleContentSources: 'E1046',
138
- cannotLoadClientScriptFromPath: 'E1047',
139
- clientScriptModuleEntryPointPathCalculationError: 'E1048',
140
- methodIsNotAvailableForAnIPCHost: 'E1049',
141
- tooLargeIPCPayload: 'E1050',
142
- malformedIPCMessage: 'E1051',
143
- unexpectedIPCHeadPacket: 'E1052',
144
- unexpectedIPCBodyPacket: 'E1053',
145
- unexpectedIPCTailPacket: 'E1054',
146
- cannotRunLocalNonHeadlessBrowserWithoutDisplay: 'E1057',
147
- uncaughtErrorInReporter: 'E1058',
148
- roleInitializedWithRelativeUrl: 'E1059',
149
- typeScriptCompilerLoadingError: 'E1060',
150
- cannotCustomizeSpecifiedCompilers: 'E1061',
151
- cannotEnableRetryTestPagesOption: 'E1062',
152
- browserConnectionError: 'E1063',
153
- testRunRequestInDisconnectedBrowser: 'E1064',
154
- invalidQuarantineOption: 'E1065',
155
- invalidRetryCountValue: 'E1066',
156
- };
1
+ "use strict";
2
+ // -------------------------------------------------------------
3
+ // WARNING: this file is used by both the client and the server.
4
+ // Do not use any browser or node-specific API!
5
+ // -------------------------------------------------------------
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RUNTIME_ERRORS = exports.TEST_RUN_ERRORS = void 0;
8
+ exports.TEST_RUN_ERRORS = {
9
+ uncaughtErrorOnPage: 'E1',
10
+ uncaughtErrorInTestCode: 'E2',
11
+ uncaughtNonErrorObjectInTestCode: 'E3',
12
+ uncaughtErrorInClientFunctionCode: 'E4',
13
+ uncaughtErrorInCustomDOMPropertyCode: 'E5',
14
+ unhandledPromiseRejection: 'E6',
15
+ uncaughtException: 'E7',
16
+ missingAwaitError: 'E8',
17
+ actionIntegerOptionError: 'E9',
18
+ actionPositiveIntegerOptionError: 'E10',
19
+ actionBooleanOptionError: 'E11',
20
+ actionSpeedOptionError: 'E12',
21
+ actionOptionsTypeError: 'E14',
22
+ actionBooleanArgumentError: 'E15',
23
+ actionStringArgumentError: 'E16',
24
+ actionNullableStringArgumentError: 'E17',
25
+ actionStringOrStringArrayArgumentError: 'E18',
26
+ actionStringArrayElementError: 'E19',
27
+ actionIntegerArgumentError: 'E20',
28
+ actionRoleArgumentError: 'E21',
29
+ actionPositiveIntegerArgumentError: 'E22',
30
+ actionSelectorError: 'E23',
31
+ actionElementNotFoundError: 'E24',
32
+ actionElementIsInvisibleError: 'E26',
33
+ actionSelectorMatchesWrongNodeTypeError: 'E27',
34
+ actionAdditionalElementNotFoundError: 'E28',
35
+ actionAdditionalElementIsInvisibleError: 'E29',
36
+ actionAdditionalSelectorMatchesWrongNodeTypeError: 'E30',
37
+ actionElementNonEditableError: 'E31',
38
+ actionElementNotTextAreaError: 'E32',
39
+ actionElementNonContentEditableError: 'E33',
40
+ actionElementIsNotFileInputError: 'E34',
41
+ actionRootContainerNotFoundError: 'E35',
42
+ actionIncorrectKeysError: 'E36',
43
+ actionCannotFindFileToUploadError: 'E37',
44
+ actionUnsupportedDeviceTypeError: 'E38',
45
+ actionIframeIsNotLoadedError: 'E39',
46
+ actionElementNotIframeError: 'E40',
47
+ actionInvalidScrollTargetError: 'E41',
48
+ currentIframeIsNotLoadedError: 'E42',
49
+ currentIframeNotFoundError: 'E43',
50
+ currentIframeIsInvisibleError: 'E44',
51
+ nativeDialogNotHandledError: 'E45',
52
+ uncaughtErrorInNativeDialogHandler: 'E46',
53
+ setTestSpeedArgumentError: 'E47',
54
+ setNativeDialogHandlerCodeWrongTypeError: 'E48',
55
+ clientFunctionExecutionInterruptionError: 'E49',
56
+ domNodeClientFunctionResultError: 'E50',
57
+ invalidSelectorResultError: 'E51',
58
+ cannotObtainInfoForElementSpecifiedBySelectorError: 'E52',
59
+ externalAssertionLibraryError: 'E53',
60
+ pageLoadError: 'E54',
61
+ windowDimensionsOverflowError: 'E55',
62
+ forbiddenCharactersInScreenshotPathError: 'E56',
63
+ invalidElementScreenshotDimensionsError: 'E57',
64
+ roleSwitchInRoleInitializerError: 'E58',
65
+ assertionExecutableArgumentError: 'E59',
66
+ assertionWithoutMethodCallError: 'E60',
67
+ assertionUnawaitedPromiseError: 'E61',
68
+ requestHookNotImplementedError: 'E62',
69
+ requestHookUnhandledError: 'E63',
70
+ uncaughtErrorInCustomClientScriptCode: 'E64',
71
+ uncaughtErrorInCustomClientScriptCodeLoadedFromModule: 'E65',
72
+ uncaughtErrorInCustomScript: 'E66',
73
+ uncaughtTestCafeErrorInCustomScript: 'E67',
74
+ childWindowIsNotLoadedError: 'E68',
75
+ childWindowNotFoundError: 'E69',
76
+ cannotSwitchToWindowError: 'E70',
77
+ closeChildWindowError: 'E71',
78
+ childWindowClosedBeforeSwitchingError: 'E72',
79
+ cannotCloseWindowWithChildrenError: 'E73',
80
+ targetWindowNotFoundError: 'E74',
81
+ parentWindowNotFoundError: 'E76',
82
+ previousWindowNotFoundError: 'E77',
83
+ switchToWindowPredicateError: 'E78',
84
+ actionFunctionArgumentError: 'E79',
85
+ multipleWindowsModeIsDisabledError: 'E80',
86
+ multipleWindowsModeIsNotSupportedInRemoteBrowserError: 'E81',
87
+ cannotCloseWindowWithoutParent: 'E82',
88
+ cannotRestoreChildWindowError: 'E83'
89
+ };
90
+ exports.RUNTIME_ERRORS = {
91
+ cannotCreateMultipleLiveModeRunners: 'E1000',
92
+ cannotRunLiveModeRunnerMultipleTimes: 'E1001',
93
+ browserDisconnected: 'E1002',
94
+ cannotRunAgainstDisconnectedBrowsers: 'E1003',
95
+ cannotEstablishBrowserConnection: 'E1004',
96
+ cannotFindBrowser: 'E1005',
97
+ browserProviderNotFound: 'E1006',
98
+ browserNotSet: 'E1007',
99
+ testFilesNotFound: 'E1008',
100
+ noTestsToRun: 'E1009',
101
+ cannotFindReporterForAlias: 'E1010',
102
+ multipleSameStreamReporters: 'E1011',
103
+ optionValueIsNotValidRegExp: 'E1012',
104
+ optionValueIsNotValidKeyValue: 'E1013',
105
+ invalidSpeedValue: 'E1014',
106
+ invalidConcurrencyFactor: 'E1015',
107
+ cannotDivideRemotesCountByConcurrency: 'E1016',
108
+ portsOptionRequiresTwoNumbers: 'E1017',
109
+ portIsNotFree: 'E1018',
110
+ invalidHostname: 'E1019',
111
+ cannotFindSpecifiedTestSource: 'E1020',
112
+ clientFunctionCodeIsNotAFunction: 'E1021',
113
+ selectorInitializedWithWrongType: 'E1022',
114
+ clientFunctionCannotResolveTestRun: 'E1023',
115
+ regeneratorInClientFunctionCode: 'E1024',
116
+ invalidClientFunctionTestRunBinding: 'E1025',
117
+ invalidValueType: 'E1026',
118
+ unsupportedUrlProtocol: 'E1027',
119
+ testControllerProxyCannotResolveTestRun: 'E1028',
120
+ timeLimitedPromiseTimeoutExpired: 'E1029',
121
+ noTestsToRunDueFiltering: 'E1030',
122
+ cannotSetVideoOptionsWithoutBaseVideoPathSpecified: 'E1031',
123
+ multipleAPIMethodCallForbidden: 'E1032',
124
+ invalidReporterOutput: 'E1033',
125
+ cannotReadSSLCertFile: 'E1034',
126
+ cannotPrepareTestsDueToError: 'E1035',
127
+ cannotParseRawFile: 'E1036',
128
+ testedAppFailedWithError: 'E1037',
129
+ unableToOpenBrowser: 'E1038',
130
+ requestHookConfigureAPIError: 'E1039',
131
+ forbiddenCharatersInScreenshotPath: 'E1040',
132
+ cannotFindFFMPEG: 'E1041',
133
+ compositeArgumentsError: 'E1042',
134
+ cannotFindTypescriptConfigurationFile: 'E1043',
135
+ clientScriptInitializerIsNotSpecified: 'E1044',
136
+ clientScriptBasePathIsNotSpecified: 'E1045',
137
+ clientScriptInitializerMultipleContentSources: 'E1046',
138
+ cannotLoadClientScriptFromPath: 'E1047',
139
+ clientScriptModuleEntryPointPathCalculationError: 'E1048',
140
+ methodIsNotAvailableForAnIPCHost: 'E1049',
141
+ tooLargeIPCPayload: 'E1050',
142
+ malformedIPCMessage: 'E1051',
143
+ unexpectedIPCHeadPacket: 'E1052',
144
+ unexpectedIPCBodyPacket: 'E1053',
145
+ unexpectedIPCTailPacket: 'E1054',
146
+ cannotRunLocalNonHeadlessBrowserWithoutDisplay: 'E1057',
147
+ uncaughtErrorInReporter: 'E1058',
148
+ roleInitializedWithRelativeUrl: 'E1059',
149
+ typeScriptCompilerLoadingError: 'E1060',
150
+ cannotCustomizeSpecifiedCompilers: 'E1061',
151
+ cannotEnableRetryTestPagesOption: 'E1062',
152
+ browserConnectionError: 'E1063',
153
+ testRunRequestInDisconnectedBrowser: 'E1064',
154
+ invalidQuarantineOption: 'E1065',
155
+ invalidRetryCountValue: 'E1066',
156
+ };
157
157
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL3R5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7OztBQUVuRCxRQUFBLGVBQWUsR0FBRztJQUMzQixtQkFBbUIsRUFBb0MsSUFBSTtJQUMzRCx1QkFBdUIsRUFBZ0MsSUFBSTtJQUMzRCxnQ0FBZ0MsRUFBdUIsSUFBSTtJQUMzRCxpQ0FBaUMsRUFBc0IsSUFBSTtJQUMzRCxvQ0FBb0MsRUFBbUIsSUFBSTtJQUMzRCx5QkFBeUIsRUFBOEIsSUFBSTtJQUMzRCxpQkFBaUIsRUFBc0MsSUFBSTtJQUMzRCxpQkFBaUIsRUFBc0MsSUFBSTtJQUMzRCx3QkFBd0IsRUFBK0IsSUFBSTtJQUMzRCxnQ0FBZ0MsRUFBdUIsS0FBSztJQUM1RCx3QkFBd0IsRUFBK0IsS0FBSztJQUM1RCxzQkFBc0IsRUFBaUMsS0FBSztJQUM1RCxzQkFBc0IsRUFBaUMsS0FBSztJQUM1RCwwQkFBMEIsRUFBNkIsS0FBSztJQUM1RCx5QkFBeUIsRUFBOEIsS0FBSztJQUM1RCxpQ0FBaUMsRUFBc0IsS0FBSztJQUM1RCxzQ0FBc0MsRUFBaUIsS0FBSztJQUM1RCw2QkFBNkIsRUFBMEIsS0FBSztJQUM1RCwwQkFBMEIsRUFBNkIsS0FBSztJQUM1RCx1QkFBdUIsRUFBZ0MsS0FBSztJQUM1RCxrQ0FBa0MsRUFBcUIsS0FBSztJQUM1RCxtQkFBbUIsRUFBb0MsS0FBSztJQUM1RCwwQkFBMEIsRUFBNkIsS0FBSztJQUM1RCw2QkFBNkIsRUFBMEIsS0FBSztJQUM1RCx1Q0FBdUMsRUFBZ0IsS0FBSztJQUM1RCxvQ0FBb0MsRUFBbUIsS0FBSztJQUM1RCx1Q0FBdUMsRUFBZ0IsS0FBSztJQUM1RCxpREFBaUQsRUFBTSxLQUFLO0lBQzVELDZCQUE2QixFQUEwQixLQUFLO0lBQzVELDZCQUE2QixFQUEwQixL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QUMzRCxtQ0FBbUMsRUFBaUIsT0FBTztJQUMzRCx1QkFBdUIsRUFBNkIsT0FBTztJQUMzRCxzQkFBc0IsRUFBOEIsT0FBTztDQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogdGhpcyBmaWxlIGlzIHVzZWQgYnkgYm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLlxuLy8gRG8gbm90IHVzZSBhbnkgYnJvd3NlciBvciBub2RlLXNwZWNpZmljIEFQSSFcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFRFU1RfUlVOX0VSUk9SUyA9IHtcbiAgICB1bmNhdWdodEVycm9yT25QYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxJyxcbiAgICB1bmNhdWdodEVycm9ySW5UZXN0Q29kZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyJyxcbiAgICB1bmNhdWdodE5vbkVycm9yT2JqZWN0SW5UZXN0Q29kZTogICAgICAgICAgICAgICAgICAgICAgJ0UzJyxcbiAgICB1bmNhdWdodEVycm9ySW5DbGllbnRGdW5jdGlvbkNvZGU6ICAgICAgICAgICAgICAgICAgICAgJ0U0JyxcbiAgICB1bmNhdWdodEVycm9ySW5DdXN0b21ET01Qcm9wZXJ0eUNvZGU6ICAgICAgICAgICAgICAgICAgJ0U1JyxcbiAgICB1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2JyxcbiAgICB1bmNhdWdodEV4Y2VwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3JyxcbiAgICBtaXNzaW5nQXdhaXRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U4JyxcbiAgICBhY3Rpb25JbnRlZ2VyT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U5JyxcbiAgICBhY3Rpb25Qb3NpdGl2ZUludGVnZXJPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgJ0UxMCcsXG4gICAgYWN0aW9uQm9vbGVhbk9wdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTEnLFxuICAgIGFjdGlvblNwZWVkT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTEyJyxcbiAgICBhY3Rpb25PcHRpb25zVHlwZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxNCcsXG4gICAgYWN0aW9uQm9vbGVhbkFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTUnLFxuICAgIGFjdGlvblN0cmluZ0FyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTE2JyxcbiAgICBhY3Rpb25OdWxsYWJsZVN0cmluZ0FyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgJ0UxNycsXG4gICAgYWN0aW9uU3RyaW5nT3JTdHJpbmdBcnJheUFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICdFMTgnLFxuICAgIGFjdGlvblN0cmluZ0FycmF5RWxlbWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTE5JyxcbiAgICBhY3Rpb25JbnRlZ2VyQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyMCcsXG4gICAgYWN0aW9uUm9sZUFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMjEnLFxuICAgIGFjdGlvblBvc2l0aXZlSW50ZWdlckFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAnRTIyJyxcbiAgICBhY3Rpb25TZWxlY3RvckVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyMycsXG4gICAgYWN0aW9uRWxlbWVudE5vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMjQnLFxuICAgIGFjdGlvbkVsZW1lbnRJc0ludmlzaWJsZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTI2JyxcbiAgICBhY3Rpb25TZWxlY3Rvck1hdGNoZXNXcm9uZ05vZGVUeXBlRXJyb3I6ICAgICAgICAgICAgICAgJ0UyNycsXG4gICAgYWN0aW9uQWRkaXRpb25hbEVsZW1lbnROb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICdFMjgnLFxuICAgIGFjdGlvbkFkZGl0aW9uYWxFbGVtZW50SXNJbnZpc2libGVFcnJvcjogICAgICAgICAgICAgICAnRTI5JyxcbiAgICBhY3Rpb25BZGRpdGlvbmFsU2VsZWN0b3JNYXRjaGVzV3JvbmdOb2RlVHlwZUVycm9yOiAgICAgJ0UzMCcsXG4gICAgYWN0aW9uRWxlbWVudE5vbkVkaXRhYmxlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFMzEnLFxuICAgIGFjdGlvbkVsZW1lbnROb3RUZXh0QXJlYUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTMyJyxcbiAgICBhY3Rpb25FbGVtZW50Tm9uQ29udGVudEVkaXRhYmxlRXJyb3I6ICAgICAgICAgICAgICAgICAgJ0UzMycsXG4gICAgYWN0aW9uRWxlbWVudElzTm90RmlsZUlucHV0RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICdFMzQnLFxuICAgIGFjdGlvblJvb3RDb250YWluZXJOb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAnRTM1JyxcbiAgICBhY3Rpb25JbmNvcnJlY3RLZXlzRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UzNicsXG4gICAgYWN0aW9uQ2Fubm90RmluZEZpbGVUb1VwbG9hZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICdFMzcnLFxuICAgIGFjdGlvblVuc3VwcG9ydGVkRGV2aWNlVHlwZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAnRTM4JyxcbiAgICBhY3Rpb25JZnJhbWVJc05vdExvYWRlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UzOScsXG4gICAgYWN0aW9uRWxlbWVudE5vdElmcmFtZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNDAnLFxuICAgIGFjdGlvbkludmFsaWRTY3JvbGxUYXJnZXRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAnRTQxJyxcbiAgICBjdXJyZW50SWZyYW1lSXNOb3RMb2FkZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0U0MicsXG4gICAgY3VycmVudElmcmFtZU5vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNDMnLFxuICAgIGN1cnJlbnRJZnJhbWVJc0ludmlzaWJsZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTQ0JyxcbiAgICBuYXRpdmVEaWFsb2dOb3RIYW5kbGVkRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U0NScsXG4gICAgdW5jYXVnaHRFcnJvckluTmF0aXZlRGlhbG9nSGFuZGxlcjogICAgICAgICAgICAgICAgICAgICdFNDYnLFxuICAgIHNldFRlc3RTcGVlZEFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTQ3JyxcbiAgICBzZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29kZVdyb25nVHlwZUVycm9yOiAgICAgICAgICAgICAgJ0U0OCcsXG4gICAgY2xpZW50RnVuY3Rpb25FeGVjdXRpb25JbnRlcnJ1cHRpb25FcnJvcjogICAgICAgICAgICAgICdFNDknLFxuICAgIGRvbU5vZGVDbGllbnRGdW5jdGlvblJlc3VsdEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAnRTUwJyxcbiAgICBpbnZhbGlkU2VsZWN0b3JSZXN1bHRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U1MScsXG4gICAgY2Fubm90T2J0YWluSW5mb0ZvckVsZW1lbnRTcGVjaWZpZWRCeVNlbGVjdG9yRXJyb3I6ICAgICdFNTInLFxuICAgIGV4dGVybmFsQXNzZXJ0aW9uTGlicmFyeUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTUzJyxcbiAgICBwYWdlTG9hZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U1NCcsXG4gICAgd2luZG93RGltZW5zaW9uc092ZXJmbG93RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFNTUnLFxuICAgIGZvcmJpZGRlbkNoYXJhY3RlcnNJblNjcmVlbnNob3RQYXRoRXJyb3I6ICAgICAgICAgICAgICAnRTU2JyxcbiAgICBpbnZhbGlkRWxlbWVudFNjcmVlbnNob3REaW1lbnNpb25zRXJyb3I6ICAgICAgICAgICAgICAgJ0U1NycsXG4gICAgcm9sZVN3aXRjaEluUm9sZUluaXRpYWxpemVyRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICdFNTgnLFxuICAgIGFzc2VydGlvbkV4ZWN1dGFibGVBcmd1bWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAnRTU5JyxcbiAgICBhc3NlcnRpb25XaXRob3V0TWV0aG9kQ2FsbEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgJ0U2MCcsXG4gICAgYXNzZXJ0aW9uVW5hd2FpdGVkUHJvbWlzZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICdFNjEnLFxuICAgIHJlcXVlc3RIb29rTm90SW1wbGVtZW50ZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAnRTYyJyxcbiAgICByZXF1ZXN0SG9va1VuaGFuZGxlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2MycsXG4gICAgdW5jYXVnaHRFcnJvckluQ3VzdG9tQ2xpZW50U2NyaXB0Q29kZTogICAgICAgICAgICAgICAgICdFNjQnLFxuICAgIHVuY2F1Z2h0RXJyb3JJbkN1c3RvbUNsaWVudFNjcmlwdENvZGVMb2FkZWRGcm9tTW9kdWxlOiAnRTY1JyxcbiAgICB1bmNhdWdodEVycm9ySW5DdXN0b21TY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2NicsXG4gICAgdW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQ6ICAgICAgICAgICAgICAgICAgICdFNjcnLFxuICAgIGNoaWxkV2luZG93SXNOb3RMb2FkZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAnRTY4JyxcbiAgICBjaGlsZFdpbmRvd05vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2OScsXG4gICAgY2Fubm90U3dpdGNoVG9XaW5kb3dFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNzAnLFxuICAgIGNsb3NlQ2hpbGRXaW5kb3dFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTcxJyxcbiAgICBjaGlsZFdpbmRvd0Nsb3NlZEJlZm9yZVN3aXRjaGluZ0Vycm9yOiAgICAgICAgICAgICAgICAgJ0U3MicsXG4gICAgY2Fubm90Q2xvc2VXaW5kb3dXaXRoQ2hpbGRyZW5FcnJvcjogICAgICAgICAgICAgICAgICAgICdFNzMnLFxuICAgIHRhcmdldFdpbmRvd05vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTc0JyxcbiAgICBwYXJlbnRXaW5kb3dOb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3NicsXG4gICAgcHJldmlvdXNXaW5kb3dOb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNzcnLFxuICAgIHN3aXRjaFRvV2luZG93UHJlZGljYXRlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAnRTc4JyxcbiAgICBhY3Rpb25GdW5jdGlvbkFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3OScsXG4gICAgbXVsdGlwbGVXaW5kb3dzTW9kZUlzRGlzYWJsZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICdFODAnLFxuICAgIG11bHRpcGxlV2luZG93c01vZGVJc05vdFN1cHBvcnRlZEluUmVtb3RlQnJvd3NlckVycm9yOiAnRTgxJyxcbiAgICBjYW5ub3RDbG9zZVdpbmRvd1dpdGhvdXRQYXJlbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgJ0U4MicsXG4gICAgY2Fubm90UmVzdG9yZUNoaWxkV2luZG93RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFODMnXG59O1xuXG5leHBvcnQgY29uc3QgUlVOVElNRV9FUlJPUlMgPSB7XG4gICAgY2Fubm90Q3JlYXRlTXVsdGlwbGVMaXZlTW9kZVJ1bm5lcnM6ICAgICAgICAgICAgICAgICdFMTAwMCcsXG4gICAgY2Fubm90UnVuTGl2ZU1vZGVSdW5uZXJNdWx0aXBsZVRpbWVzOiAgICAgICAgICAgICAgICdFMTAwMScsXG4gICAgYnJvd3NlckRpc2Nvbm5lY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAwMicsXG4gICAgY2Fubm90UnVuQWdhaW5zdERpc2Nvbm5lY3RlZEJyb3dzZXJzOiAgICAgICAgICAgICAgICdFMTAwMycsXG4gICAgY2Fubm90RXN0YWJsaXNoQnJvd3NlckNvbm5lY3Rpb246ICAgICAgICAgICAgICAgICAgICdFMTAwNCcsXG4gICAgY2Fubm90RmluZEJyb3dzZXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAwNScsXG4gICAgYnJvd3NlclByb3ZpZGVyTm90Rm91bmQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAwNicsXG4gICAgYnJvd3Nlck5vdFNldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAwNycsXG4gICAgdGVzdEZpbGVzTm90Rm91bmQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAwOCcsXG4gICAgbm9UZXN0c1RvUnVuOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAwOScsXG4gICAgY2Fubm90RmluZFJlcG9ydGVyRm9yQWxpYXM6ICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxMCcsXG4gICAgbXVsdGlwbGVTYW1lU3RyZWFtUmVwb3J0ZXJzOiAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxMScsXG4gICAgb3B0aW9uVmFsdWVJc05vdFZhbGlkUmVnRXhwOiAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxMicsXG4gICAgb3B0aW9uVmFsdWVJc05vdFZhbGlkS2V5VmFsdWU6ICAgICAgICAgICAgICAgICAgICAgICdFMTAxMycsXG4gICAgaW52YWxpZFNwZWVkVmFsdWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxNCcsXG4gICAgaW52YWxpZENvbmN1cnJlbmN5RmFjdG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxNScsXG4gICAgY2Fubm90RGl2aWRlUmVtb3Rlc0NvdW50QnlDb25jdXJyZW5jeTogICAgICAgICAgICAgICdFMTAxNicsXG4gICAgcG9ydHNPcHRpb25SZXF1aXJlc1R3b051bWJlcnM6ICAgICAgICAgICAgICAgICAgICAgICdFMTAxNycsXG4gICAgcG9ydElzTm90RnJlZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxOCcsXG4gICAgaW52YWxpZEhvc3RuYW1lOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxOScsXG4gICAgY2Fubm90RmluZFNwZWNpZmllZFRlc3RTb3VyY2U6ICAgICAgICAgICAgICAgICAgICAgICdFMTAyMCcsXG4gICAgY2xpZW50RnVuY3Rpb25Db2RlSXNOb3RBRnVuY3Rpb246ICAgICAgICAgICAgICAgICAgICdFMTAyMScsXG4gICAgc2VsZWN0b3JJbml0aWFsaXplZFdpdGhXcm9uZ1R5cGU6ICAgICAgICAgICAgICAgICAgICdFMTAyMicsXG4gICAgY2xpZW50RnVuY3Rpb25DYW5ub3RSZXNvbHZlVGVzdFJ1bjogICAgICAgICAgICAgICAgICdFMTAyMycsXG4gICAgcmVnZW5lcmF0b3JJbkNsaWVudEZ1bmN0aW9uQ29kZTogICAgICAgICAgICAgICAgICAgICdFMTAyNCcsXG4gICAgaW52YWxpZENsaWVudEZ1bmN0aW9uVGVzdFJ1bkJpbmRpbmc6ICAgICAgICAgICAgICAgICdFMTAyNScsXG4gICAgaW52YWxpZFZhbHVlVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAyNicsXG4gICAgdW5zdXBwb3J0ZWRVcmxQcm90b2NvbDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAyNycsXG4gICAgdGVzdENvbnRyb2xsZXJQcm94eUNhbm5vdFJlc29sdmVUZXN0UnVuOiAgICAgICAgICAgICdFMTAyOCcsXG4gICAgdGltZUxpbWl0ZWRQcm9taXNlVGltZW91dEV4cGlyZWQ6ICAgICAgICAgICAgICAgICAgICdFMTAyOScsXG4gICAgbm9UZXN0c1RvUnVuRHVlRmlsdGVyaW5nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAzMCcsXG4gICAgY2Fubm90U2V0VmlkZW9PcHRpb25zV2l0aG91dEJhc2VWaWRlb1BhdGhTcGVjaWZpZWQ6ICdFMTAzMScsXG4gICAgbXVsdGlwbGVBUElNZXRob2RDYWxsRm9yYmlkZGVuOiAgICAgICAgICAgICAgICAgICAgICdFMTAzMicsXG4gICAgaW52YWxpZFJlcG9ydGVyT3V0cHV0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAzMycsXG4gICAgY2Fubm90UmVhZFNTTENlcnRGaWxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAzNCcsXG4gICAgY2Fubm90UHJlcGFyZVRlc3RzRHVlVG9FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICdFMTAzNScsXG4gICAgY2Fubm90UGFyc2VSYXdGaWxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAzNicsXG4gICAgdGVzdGVkQXBwRmFpbGVkV2l0aEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAzNycsXG4gICAgdW5hYmxlVG9PcGVuQnJvd3NlcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAzOCcsXG4gICAgcmVxdWVzdEhvb2tDb25maWd1cmVBUElFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICdFMTAzOScsXG4gICAgZm9yYmlkZGVuQ2hhcmF0ZXJzSW5TY3JlZW5zaG90UGF0aDogICAgICAgICAgICAgICAgICdFMTA0MCcsXG4gICAgY2Fubm90RmluZEZGTVBFRzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA0MScsXG4gICAgY29tcG9zaXRlQXJndW1lbnRzRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA0MicsXG4gICAgY2Fubm90RmluZFR5cGVzY3JpcHRDb25maWd1cmF0aW9uRmlsZTogICAgICAgICAgICAgICdFMTA0MycsXG4gICAgY2xpZW50U2NyaXB0SW5pdGlhbGl6ZXJJc05vdFNwZWNpZmllZDogICAgICAgICAgICAgICdFMTA0NCcsXG4gICAgY2xpZW50U2NyaXB0QmFzZVBhdGhJc05vdFNwZWNpZmllZDogICAgICAgICAgICAgICAgICdFMTA0NScsXG4gICAgY2xpZW50U2NyaXB0SW5pdGlhbGl6ZXJNdWx0aXBsZUNvbnRlbnRTb3VyY2VzOiAgICAgICdFMTA0NicsXG4gICAgY2Fubm90TG9hZENsaWVudFNjcmlwdEZyb21QYXRoOiAgICAgICAgICAgICAgICAgICAgICdFMTA0NycsXG4gICAgY2xpZW50U2NyaXB0TW9kdWxlRW50cnlQb2ludFBhdGhDYWxjdWxhdGlvbkVycm9yOiAgICdFMTA0OCcsXG4gICAgbWV0aG9kSXNOb3RBdmFpbGFibGVGb3JBbklQQ0hvc3Q6ICAgICAgICAgICAgICAgICAgICdFMTA0OScsXG4gICAgdG9vTGFyZ2VJUENQYXlsb2FkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA1MCcsXG4gICAgbWFsZm9ybWVkSVBDTWVzc2FnZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA1MScsXG4gICAgdW5leHBlY3RlZElQQ0hlYWRQYWNrZXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA1MicsXG4gICAgdW5leHBlY3RlZElQQ0JvZHlQYWNrZXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA1MycsXG4gICAgdW5leHBlY3RlZElQQ1RhaWxQYWNrZXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA1NCcsXG4gICAgY2Fubm90UnVuTG9jYWxOb25IZWFkbGVzc0Jyb3dzZXJXaXRob3V0RGlzcGxheTogICAgICdFMTA1NycsXG4gICAgdW5jYXVnaHRFcnJvckluUmVwb3J0ZXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA1OCcsXG4gICAgcm9sZUluaXRpYWxpemVkV2l0aFJlbGF0aXZlVXJsOiAgICAgICAgICAgICAgICAgICAgICdFMTA1OScsXG4gICAgdHlwZVNjcmlwdENvbXBpbGVyTG9hZGluZ0Vycm9yOiAgICAgICAgICAgICAgICAgICAgICdFMTA2MCcsXG4gICAgY2Fubm90Q3VzdG9taXplU3BlY2lmaWVkQ29tcGlsZXJzOiAgICAgICAgICAgICAgICAgICdFMTA2MScsXG4gICAgY2Fubm90RW5hYmxlUmV0cnlUZXN0UGFnZXNPcHRpb246ICAgICAgICAgICAgICAgICAgICdFMTA2MicsXG4gICAgYnJvd3NlckNvbm5lY3Rpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA2MycsXG4gICAgdGVzdFJ1blJlcXVlc3RJbkRpc2Nvbm5lY3RlZEJyb3dzZXI6ICAgICAgICAgICAgICAgICdFMTA2NCcsXG4gICAgaW52YWxpZFF1YXJhbnRpbmVPcHRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA2NScsXG4gICAgaW52YWxpZFJldHJ5Q291bnRWYWx1ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTA2NicsXG59O1xuIl19