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,87 +1,87 @@
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 testing_unit_1 = __importDefault(require("./testing-unit"));
8
- const unit_type_1 = __importDefault(require("./unit-type"));
9
- const type_assertions_1 = require("../../errors/runtime/type-assertions");
10
- const wrap_test_function_1 = __importDefault(require("../wrap-test-function"));
11
- const assert_type_1 = __importDefault(require("../request-hooks/assert-type"));
12
- const assert_type_2 = __importDefault(require("../../custom-client-scripts/assert-type"));
13
- const types_1 = require("../../errors/types");
14
- const runtime_1 = require("../../errors/runtime");
15
- const option_names_1 = __importDefault(require("../../configuration/option-names"));
16
- const testcafe_hammerhead_1 = require("testcafe-hammerhead");
17
- const test_timeout_1 = __importDefault(require("./test-timeout"));
18
- class Test extends testing_unit_1.default {
19
- constructor(testFile) {
20
- // NOTE: 'fixture' directive can be missing
21
- const fixture = testFile.currentFixture;
22
- const pageUrl = fixture && fixture.pageUrl || testcafe_hammerhead_1.SPECIAL_BLANK_PAGE;
23
- super(testFile, unit_type_1.default.test, pageUrl);
24
- this.fixture = fixture;
25
- this.fn = null;
26
- this.beforeFn = null;
27
- this.afterFn = null;
28
- this.timeouts = null;
29
- if (this.fixture) {
30
- this.requestHooks = this.fixture.requestHooks.slice();
31
- this.clientScripts = this.fixture.clientScripts.slice();
32
- }
33
- return this.apiOrigin;
34
- }
35
- _add(name, fn) {
36
- type_assertions_1.assertType(type_assertions_1.is.string, 'apiOrigin', 'The test name', name);
37
- type_assertions_1.assertType(type_assertions_1.is.function, 'apiOrigin', 'The test body', fn);
38
- type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'apiOrigin', `The fixture of '${name}' test`, this.fixture);
39
- this.name = name;
40
- this.fn = wrap_test_function_1.default(fn);
41
- if (!this.testFile.collectedTests.includes(this))
42
- this.testFile.collectedTests.push(this);
43
- return this.apiOrigin;
44
- }
45
- _before$(fn) {
46
- type_assertions_1.assertType(type_assertions_1.is.function, 'before', 'test.before hook', fn);
47
- this.beforeFn = wrap_test_function_1.default(fn);
48
- return this.apiOrigin;
49
- }
50
- _after$(fn) {
51
- type_assertions_1.assertType(type_assertions_1.is.function, 'after', 'test.after hook', fn);
52
- this.afterFn = wrap_test_function_1.default(fn);
53
- return this.apiOrigin;
54
- }
55
- _requestHooks$(...hooks) {
56
- if (this.apiMethodWasCalled.requestHooks)
57
- throw new runtime_1.APIError(option_names_1.default.requestHooks, types_1.RUNTIME_ERRORS.multipleAPIMethodCallForbidden, option_names_1.default.requestHooks);
58
- hooks = lodash_1.flattenDeep(hooks);
59
- assert_type_1.default(hooks);
60
- this.requestHooks = lodash_1.union(this.requestHooks, hooks);
61
- this.apiMethodWasCalled.requestHooks = true;
62
- return this.apiOrigin;
63
- }
64
- _clientScripts$(...scripts) {
65
- if (this.apiMethodWasCalled.clientScripts)
66
- throw new runtime_1.APIError(option_names_1.default.clientScripts, types_1.RUNTIME_ERRORS.multipleAPIMethodCallForbidden, option_names_1.default.clientScripts);
67
- scripts = lodash_1.flattenDeep(scripts);
68
- assert_type_2.default(scripts);
69
- this.clientScripts = lodash_1.union(this.clientScripts, scripts);
70
- this.apiMethodWasCalled.clientScripts = true;
71
- return this.apiOrigin;
72
- }
73
- _timeouts$(timeouts) {
74
- type_assertions_1.assertType(type_assertions_1.is.testTimeouts, 'timeouts', 'test.timeouts', timeouts);
75
- Object.keys(test_timeout_1.default)
76
- .filter(timeout => timeout in timeouts)
77
- .forEach(timeout => {
78
- type_assertions_1.assertType(type_assertions_1.is.nonNegativeNumber, 'timeouts', `test.timeouts.${timeout}`, timeouts[timeout]);
79
- });
80
- this.timeouts = timeouts;
81
- return this.apiOrigin;
82
- }
83
- }
84
- exports.default = Test;
85
- testing_unit_1.default.makeAPIListForChildClass(Test);
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 testing_unit_1 = __importDefault(require("./testing-unit"));
8
+ const unit_type_1 = __importDefault(require("./unit-type"));
9
+ const type_assertions_1 = require("../../errors/runtime/type-assertions");
10
+ const wrap_test_function_1 = __importDefault(require("../wrap-test-function"));
11
+ const assert_type_1 = __importDefault(require("../request-hooks/assert-type"));
12
+ const assert_type_2 = __importDefault(require("../../custom-client-scripts/assert-type"));
13
+ const types_1 = require("../../errors/types");
14
+ const runtime_1 = require("../../errors/runtime");
15
+ const option_names_1 = __importDefault(require("../../configuration/option-names"));
16
+ const testcafe_hammerhead_1 = require("testcafe-hammerhead");
17
+ const test_timeout_1 = __importDefault(require("./test-timeout"));
18
+ class Test extends testing_unit_1.default {
19
+ constructor(testFile) {
20
+ // NOTE: 'fixture' directive can be missing
21
+ const fixture = testFile.currentFixture;
22
+ const pageUrl = fixture && fixture.pageUrl || testcafe_hammerhead_1.SPECIAL_BLANK_PAGE;
23
+ super(testFile, unit_type_1.default.test, pageUrl);
24
+ this.fixture = fixture;
25
+ this.fn = null;
26
+ this.beforeFn = null;
27
+ this.afterFn = null;
28
+ this.timeouts = null;
29
+ if (this.fixture) {
30
+ this.requestHooks = this.fixture.requestHooks.slice();
31
+ this.clientScripts = this.fixture.clientScripts.slice();
32
+ }
33
+ return this.apiOrigin;
34
+ }
35
+ _add(name, fn) {
36
+ type_assertions_1.assertType(type_assertions_1.is.string, 'apiOrigin', 'The test name', name);
37
+ type_assertions_1.assertType(type_assertions_1.is.function, 'apiOrigin', 'The test body', fn);
38
+ type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'apiOrigin', `The fixture of '${name}' test`, this.fixture);
39
+ this.name = name;
40
+ this.fn = wrap_test_function_1.default(fn);
41
+ if (!this.testFile.collectedTests.includes(this))
42
+ this.testFile.collectedTests.push(this);
43
+ return this.apiOrigin;
44
+ }
45
+ _before$(fn) {
46
+ type_assertions_1.assertType(type_assertions_1.is.function, 'before', 'test.before hook', fn);
47
+ this.beforeFn = wrap_test_function_1.default(fn);
48
+ return this.apiOrigin;
49
+ }
50
+ _after$(fn) {
51
+ type_assertions_1.assertType(type_assertions_1.is.function, 'after', 'test.after hook', fn);
52
+ this.afterFn = wrap_test_function_1.default(fn);
53
+ return this.apiOrigin;
54
+ }
55
+ _requestHooks$(...hooks) {
56
+ if (this.apiMethodWasCalled.requestHooks)
57
+ throw new runtime_1.APIError(option_names_1.default.requestHooks, types_1.RUNTIME_ERRORS.multipleAPIMethodCallForbidden, option_names_1.default.requestHooks);
58
+ hooks = lodash_1.flattenDeep(hooks);
59
+ assert_type_1.default(hooks);
60
+ this.requestHooks = lodash_1.union(this.requestHooks, hooks);
61
+ this.apiMethodWasCalled.requestHooks = true;
62
+ return this.apiOrigin;
63
+ }
64
+ _clientScripts$(...scripts) {
65
+ if (this.apiMethodWasCalled.clientScripts)
66
+ throw new runtime_1.APIError(option_names_1.default.clientScripts, types_1.RUNTIME_ERRORS.multipleAPIMethodCallForbidden, option_names_1.default.clientScripts);
67
+ scripts = lodash_1.flattenDeep(scripts);
68
+ assert_type_2.default(scripts);
69
+ this.clientScripts = lodash_1.union(this.clientScripts, scripts);
70
+ this.apiMethodWasCalled.clientScripts = true;
71
+ return this.apiOrigin;
72
+ }
73
+ _timeouts$(timeouts) {
74
+ type_assertions_1.assertType(type_assertions_1.is.testTimeouts, 'timeouts', 'test.timeouts', timeouts);
75
+ Object.keys(test_timeout_1.default)
76
+ .filter(timeout => timeout in timeouts)
77
+ .forEach(timeout => {
78
+ type_assertions_1.assertType(type_assertions_1.is.nonNegativeNumber, 'timeouts', `test.timeouts.${timeout}`, timeouts[timeout]);
79
+ });
80
+ this.timeouts = timeouts;
81
+ return this.apiOrigin;
82
+ }
83
+ }
84
+ exports.default = Test;
85
+ testing_unit_1.default.makeAPIListForChildClass(Test);
86
86
  module.exports = exports.default;
87
87
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBdUQ7QUFDdkQsa0VBQXlDO0FBQ3pDLDREQUFtQztBQUNuQywwRUFBc0U7QUFDdEUsK0VBQXFEO0FBQ3JELCtFQUFpRTtBQUNqRSwwRkFBNkU7QUFDN0UsOENBQW9EO0FBQ3BELGtEQUFnRDtBQUNoRCxvRkFBNEQ7QUFLNUQsNkRBQXlEO0FBRXpELGtFQUF5QztBQUV6QyxNQUFxQixJQUFLLFNBQVEsc0JBQVc7SUFPekMsWUFBb0IsUUFBa0I7UUFDbEMsMkNBQTJDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUF5QixDQUFDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLHdDQUFrQixDQUFDO1FBRWpFLEtBQUssQ0FBQyxRQUFRLEVBQUUsbUJBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLE9BQU8sR0FBSSxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLEVBQUUsR0FBUyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBSSxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNEO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBNEIsQ0FBQztJQUM3QyxD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QUM7UUFFbkUsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBVyxDQUFDO2FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7YUFDdEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2YsNEJBQVUsQ0FBQyxvQkFBRSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxpQkFBaUIsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQTZCLENBQUMsQ0FBQyxDQUFDO1FBQ3RILENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7Q0FDSjtBQW5HRCx1QkFtR0M7QUFFRCxzQkFBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmxhdHRlbkRlZXAgYXMgZmxhdHRlbiwgdW5pb24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFRlc3RpbmdVbml0IGZyb20gJy4vdGVzdGluZy11bml0JztcbmltcG9ydCBVbml0VHlwZSBmcm9tICcuL3VuaXQtdHlwZSc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgd3JhcFRlc3RGdW5jdGlvbiBmcm9tICcuLi93cmFwLXRlc3QtZnVuY3Rpb24nO1xuaW1wb3J0IGFzc2VydFJlcXVlc3RIb29rVHlwZSBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2Fzc2VydC10eXBlJztcbmltcG9ydCBhc3NlcnRDbGllbnRTY3JpcHRUeXBlIGZyb20gJy4uLy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9hc3NlcnQtdHlwZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFRlc3RGaWxlIGZyb20gJy4vdGVzdC1maWxlJztcbmltcG9ydCBGaXh0dXJlIGZyb20gJy4vZml4dHVyZSc7XG5pbXBvcnQgUmVxdWVzdEhvb2sgZnJvbSAnLi4vcmVxdWVzdC1ob29rcy9ob29rJztcbmltcG9ydCBDbGllbnRTY3JpcHRJbml0IGZyb20gJy4uLy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9jbGllbnQtc2NyaXB0LWluaXQnO1xuaW1wb3J0IHsgU1BFQ0lBTF9CTEFOS19QQUdFIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBUZXN0VGltZW91dHMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRlc3RUaW1lb3V0IGZyb20gJy4vdGVzdC10aW1lb3V0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVzdCBleHRlbmRzIFRlc3RpbmdVbml0IHtcbiAgICBwdWJsaWMgZml4dHVyZTogRml4dHVyZTtcbiAgICBwdWJsaWMgZm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgYmVmb3JlRm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgYWZ0ZXJGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyB0aW1lb3V0czogVGVzdFRpbWVvdXRzIHwgbnVsbDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAodGVzdEZpbGU6IFRlc3RGaWxlKSB7XG4gICAgICAgIC8vIE5PVEU6ICdmaXh0dXJlJyBkaXJlY3RpdmUgY2FuIGJlIG1pc3NpbmdcbiAgICAgICAgY29uc3QgZml4dHVyZSA9IHRlc3RGaWxlLmN1cnJlbnRGaXh0dXJlIGFzIEZpeHR1cmU7XG4gICAgICAgIGNvbnN0IHBhZ2VVcmwgPSBmaXh0dXJlICYmIGZpeHR1cmUucGFnZVVybCB8fCBTUEVDSUFMX0JMQU5LX1BBR0U7XG5cbiAgICAgICAgc3VwZXIodGVzdEZpbGUsIFVuaXRUeXBlLnRlc3QsIHBhZ2VVcmwpO1xuXG4gICAgICAgIHRoaXMuZml4dHVyZSAgPSBmaXh0dXJlO1xuICAgICAgICB0aGlzLmZuICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5iZWZvcmVGbiA9IG51bGw7XG4gICAgICAgIHRoaXMuYWZ0ZXJGbiAgPSBudWxsO1xuICAgICAgICB0aGlzLnRpbWVvdXRzID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5maXh0dXJlKSB7XG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RIb29rcyAgPSB0aGlzLmZpeHR1cmUucmVxdWVzdEhvb2tzLnNsaWNlKCk7XG4gICAgICAgICAgICB0aGlzLmNsaWVudFNjcmlwdHMgPSB0aGlzLmZpeHR1cmUuY2xpZW50U2NyaXB0cy5zbGljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luIGFzIHVua25vd24gYXMgVGVzdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2FkZCAobmFtZTogc3RyaW5nLCBmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnYXBpT3JpZ2luJywgJ1RoZSB0ZXN0IG5hbWUnLCBuYW1lKTtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5mdW5jdGlvbiwgJ2FwaU9yaWdpbicsICdUaGUgdGVzdCBib2R5JywgZm4pO1xuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk51bGxPYmplY3QsICdhcGlPcmlnaW4nLCBgVGhlIGZpeHR1cmUgb2YgJyR7bmFtZX0nIHRlc3RgLCB0aGlzLmZpeHR1cmUpO1xuXG4gICAgICAgIHRoaXMubmFtZSAgICAgICAgICA9IG5hbWU7XG4gICAgICAgIHRoaXMuZm4gICAgICAgICAgICA9IHdyYXBUZXN0RnVuY3Rpb24oZm4pO1xuXG4gICAgICAgIGlmICghdGhpcy50ZXN0RmlsZS5jb2xsZWN0ZWRUZXN0cy5pbmNsdWRlcyh0aGlzKSlcbiAgICAgICAgICAgIHRoaXMudGVzdEZpbGUuY29sbGVjdGVkVGVzdHMucHVzaCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmVmb3JlJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYmVmb3JlJywgJ3Rlc3QuYmVmb3JlIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5iZWZvcmVGbiA9IHdyYXBUZXN0RnVuY3Rpb24oZm4pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZnRlciQgKGZuOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5mdW5jdGlvbiwgJ2FmdGVyJywgJ3Rlc3QuYWZ0ZXIgaG9vaycsIGZuKTtcblxuICAgICAgICB0aGlzLmFmdGVyRm4gPSB3cmFwVGVzdEZ1bmN0aW9uKGZuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVxdWVzdEhvb2tzJCAoLi4uaG9va3M6IFJlcXVlc3RIb29rW10pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5yZXF1ZXN0SG9va3MpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoT1BUSU9OX05BTUVTLnJlcXVlc3RIb29rcywgUlVOVElNRV9FUlJPUlMubXVsdGlwbGVBUElNZXRob2RDYWxsRm9yYmlkZGVuLCBPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzKTtcblxuICAgICAgICBob29rcyA9IGZsYXR0ZW4oaG9va3MpO1xuXG4gICAgICAgIGFzc2VydFJlcXVlc3RIb29rVHlwZShob29rcyk7XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgICAgICAgICAgICAgICAgICAgID0gdW5pb24odGhpcy5yZXF1ZXN0SG9va3MsIGhvb2tzKTtcbiAgICAgICAgdGhpcy5hcGlNZXRob2RXYXNDYWxsZWQucmVxdWVzdEhvb2tzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xpZW50U2NyaXB0cyQgKC4uLnNjcmlwdHM6IENsaWVudFNjcmlwdEluaXRbXSk6IEZ1bmN0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLmNsaWVudFNjcmlwdHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMsIFJVTlRJTUVfRVJST1JTLm11bHRpcGxlQVBJTWV0aG9kQ2FsbEZvcmJpZGRlbiwgT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMpO1xuXG4gICAgICAgIHNjcmlwdHMgPSBmbGF0dGVuKHNjcmlwdHMpO1xuXG4gICAgICAgIGFzc2VydENsaWVudFNjcmlwdFR5cGUoc2NyaXB0cyk7XG5cbiAgICAgICAgdGhpcy5jbGllbnRTY3JpcHRzICAgICAgICAgICAgICAgICAgICA9IHVuaW9uKHRoaXMuY2xpZW50U2NyaXB0cywgc2NyaXB0cyk7XG4gICAgICAgIHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLmNsaWVudFNjcmlwdHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90aW1lb3V0cyQgKHRpbWVvdXRzOiBUZXN0VGltZW91dHMpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMudGVzdFRpbWVvdXRzLCAndGltZW91dHMnLCAndGVzdC50aW1lb3V0cycsIHRpbWVvdXRzKTtcblxuICAgICAgICBPYmplY3Qua2V5cyhUZXN0VGltZW91dClcbiAgICAgICAgICAgIC5maWx0ZXIodGltZW91dCA9PiB0aW1lb3V0IGluIHRpbWVvdXRzKVxuICAgICAgICAgICAgLmZvckVhY2godGltZW91dCA9PiB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlciwgJ3RpbWVvdXRzJywgYHRlc3QudGltZW91dHMuJHt0aW1lb3V0fWAsIHRpbWVvdXRzW3RpbWVvdXQgYXMga2V5b2YgVGVzdFRpbWVvdXRzXSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRpbWVvdXRzID0gdGltZW91dHM7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cbn1cblxuVGVzdGluZ1VuaXQubWFrZUFQSUxpc3RGb3JDaGlsZENsYXNzKFRlc3QpO1xuIl19
@@ -1,91 +1,91 @@
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 url_1 = require("url");
7
- const base_unit_1 = __importDefault(require("./base-unit"));
8
- const test_page_url_1 = require("../test-page-url");
9
- const handle_tag_args_1 = __importDefault(require("../../utils/handle-tag-args"));
10
- const delegated_api_1 = require("../../utils/delegated-api");
11
- const type_assertions_1 = require("../../errors/runtime/type-assertions");
12
- const flag_list_1 = __importDefault(require("../../utils/flag-list"));
13
- const option_names_1 = __importDefault(require("../../configuration/option-names"));
14
- class TestingUnit extends base_unit_1.default {
15
- constructor(testFile, unitType, pageUrl) {
16
- super(unitType);
17
- this.testFile = testFile;
18
- this.name = null;
19
- this.pageUrl = pageUrl;
20
- this.authCredentials = null;
21
- this.meta = {};
22
- this.only = false;
23
- this.skip = false;
24
- this.requestHooks = [];
25
- this.clientScripts = [];
26
- this.disablePageReloads = void 0;
27
- this.disablePageCaching = false;
28
- this.apiMethodWasCalled = new flag_list_1.default([option_names_1.default.clientScripts, option_names_1.default.requestHooks]);
29
- const unit = this;
30
- this.apiOrigin = function apiOrigin(...args) {
31
- return unit._add(...args);
32
- };
33
- //@ts-ignore
34
- delegated_api_1.delegateAPI(this.apiOrigin, this.constructor.API_LIST, { handler: this });
35
- }
36
- _only$getter() {
37
- this.only = true;
38
- return this.apiOrigin;
39
- }
40
- _skip$getter() {
41
- this.skip = true;
42
- return this.apiOrigin;
43
- }
44
- _disablePageReloads$getter() {
45
- this.disablePageReloads = true;
46
- return this.apiOrigin;
47
- }
48
- _enablePageReloads$getter() {
49
- this.disablePageReloads = false;
50
- return this.apiOrigin;
51
- }
52
- _page$(url, ...rest) {
53
- this.pageUrl = handle_tag_args_1.default(url, rest);
54
- type_assertions_1.assertType(type_assertions_1.is.string, 'page', 'The page URL', this.pageUrl);
55
- test_page_url_1.assertPageUrl(this.pageUrl, 'page');
56
- this.pageUrl = test_page_url_1.getUrl(this.pageUrl, url_1.pathToFileURL(this.testFile.filename));
57
- return this.apiOrigin;
58
- }
59
- _httpAuth$(credentials) {
60
- type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'httpAuth', 'credentials', credentials);
61
- type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.username', credentials.username);
62
- type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.password', credentials.password);
63
- if (credentials.domain)
64
- type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.domain', credentials.domain);
65
- if (credentials.workstation)
66
- type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.workstation', credentials.workstation);
67
- this.authCredentials = credentials;
68
- return this.apiOrigin;
69
- }
70
- _meta$(key, value) {
71
- type_assertions_1.assertType([type_assertions_1.is.string, type_assertions_1.is.nonNullObject], 'meta', `${this.unitType}.meta`, key);
72
- const data = typeof key === 'string' ? { [key]: value } : key;
73
- Object.keys(data).forEach(propName => {
74
- this.meta[propName] = data[propName];
75
- });
76
- return this.apiOrigin;
77
- }
78
- _disablePageCaching$getter() {
79
- this.disablePageCaching = true;
80
- return this.apiOrigin;
81
- }
82
- static makeAPIListForChildClass(ChildClass) {
83
- //@ts-ignore
84
- ChildClass.API_LIST = TestingUnit.API_LIST.concat(delegated_api_1.getDelegatedAPIList(ChildClass.prototype));
85
- }
86
- }
87
- exports.default = TestingUnit;
88
- // @ts-ignore
89
- TestingUnit.API_LIST = delegated_api_1.getDelegatedAPIList(TestingUnit.prototype);
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 url_1 = require("url");
7
+ const base_unit_1 = __importDefault(require("./base-unit"));
8
+ const test_page_url_1 = require("../test-page-url");
9
+ const handle_tag_args_1 = __importDefault(require("../../utils/handle-tag-args"));
10
+ const delegated_api_1 = require("../../utils/delegated-api");
11
+ const type_assertions_1 = require("../../errors/runtime/type-assertions");
12
+ const flag_list_1 = __importDefault(require("../../utils/flag-list"));
13
+ const option_names_1 = __importDefault(require("../../configuration/option-names"));
14
+ class TestingUnit extends base_unit_1.default {
15
+ constructor(testFile, unitType, pageUrl) {
16
+ super(unitType);
17
+ this.testFile = testFile;
18
+ this.name = null;
19
+ this.pageUrl = pageUrl;
20
+ this.authCredentials = null;
21
+ this.meta = {};
22
+ this.only = false;
23
+ this.skip = false;
24
+ this.requestHooks = [];
25
+ this.clientScripts = [];
26
+ this.disablePageReloads = void 0;
27
+ this.disablePageCaching = false;
28
+ this.apiMethodWasCalled = new flag_list_1.default([option_names_1.default.clientScripts, option_names_1.default.requestHooks]);
29
+ const unit = this;
30
+ this.apiOrigin = function apiOrigin(...args) {
31
+ return unit._add(...args);
32
+ };
33
+ //@ts-ignore
34
+ delegated_api_1.delegateAPI(this.apiOrigin, this.constructor.API_LIST, { handler: this });
35
+ }
36
+ _only$getter() {
37
+ this.only = true;
38
+ return this.apiOrigin;
39
+ }
40
+ _skip$getter() {
41
+ this.skip = true;
42
+ return this.apiOrigin;
43
+ }
44
+ _disablePageReloads$getter() {
45
+ this.disablePageReloads = true;
46
+ return this.apiOrigin;
47
+ }
48
+ _enablePageReloads$getter() {
49
+ this.disablePageReloads = false;
50
+ return this.apiOrigin;
51
+ }
52
+ _page$(url, ...rest) {
53
+ this.pageUrl = handle_tag_args_1.default(url, rest);
54
+ type_assertions_1.assertType(type_assertions_1.is.string, 'page', 'The page URL', this.pageUrl);
55
+ test_page_url_1.assertPageUrl(this.pageUrl, 'page');
56
+ this.pageUrl = test_page_url_1.getUrl(this.pageUrl, url_1.pathToFileURL(this.testFile.filename));
57
+ return this.apiOrigin;
58
+ }
59
+ _httpAuth$(credentials) {
60
+ type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'httpAuth', 'credentials', credentials);
61
+ type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.username', credentials.username);
62
+ type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.password', credentials.password);
63
+ if (credentials.domain)
64
+ type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.domain', credentials.domain);
65
+ if (credentials.workstation)
66
+ type_assertions_1.assertType(type_assertions_1.is.string, 'httpAuth', 'credentials.workstation', credentials.workstation);
67
+ this.authCredentials = credentials;
68
+ return this.apiOrigin;
69
+ }
70
+ _meta$(key, value) {
71
+ type_assertions_1.assertType([type_assertions_1.is.string, type_assertions_1.is.nonNullObject], 'meta', `${this.unitType}.meta`, key);
72
+ const data = typeof key === 'string' ? { [key]: value } : key;
73
+ Object.keys(data).forEach(propName => {
74
+ this.meta[propName] = data[propName];
75
+ });
76
+ return this.apiOrigin;
77
+ }
78
+ _disablePageCaching$getter() {
79
+ this.disablePageCaching = true;
80
+ return this.apiOrigin;
81
+ }
82
+ static makeAPIListForChildClass(ChildClass) {
83
+ //@ts-ignore
84
+ ChildClass.API_LIST = TestingUnit.API_LIST.concat(delegated_api_1.getDelegatedAPIList(ChildClass.prototype));
85
+ }
86
+ }
87
+ exports.default = TestingUnit;
88
+ // @ts-ignore
89
+ TestingUnit.API_LIST = delegated_api_1.getDelegatedAPIList(TestingUnit.prototype);
90
90
  module.exports = exports.default;
91
91
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy11bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdGVzdGluZy11bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQW9DO0FBQ3BDLDREQUFtQztBQUNuQyxvREFBeUQ7QUFDekQsa0ZBQXdEO0FBQ3hELDZEQUE2RTtBQUM3RSwwRUFBc0U7QUFDdEUsc0VBQTZDO0FBQzdDLG9GQUE0RDtBQVE1RCxNQUE4QixXQUFZLFNBQVEsbUJBQVE7SUFldEQsWUFBdUIsUUFBa0IsRUFBRSxRQUFrQixFQUFFLE9BQWU7UUFDMUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLEdBQWMsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQVcsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQWMsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQWMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQWMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUssRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLG1CQUFRLENBQUMsQ0FBQyxzQkFBWSxDQUFDLGFBQWEsRUFBRSxzQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFaEcsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksQ0FBQyxTQUFTLEdB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LE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTywwQkFBMEI7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBRSxVQUFtQjtRQUN2RCxZQUFZO1FBQ1osVUFBVSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0NBQ0o7QUF0SEQsOEJBc0hDO0FBRUQsYUFBYTtBQUNiLFdBQVcsQ0FBQyxRQUFRLEdBQUcsbUNBQW1CLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgQmFzZVVuaXQgZnJvbSAnLi9iYXNlLXVuaXQnO1xuaW1wb3J0IHsgYXNzZXJ0UGFnZVVybCwgZ2V0VXJsIH0gZnJvbSAnLi4vdGVzdC1wYWdlLXVybCc7XG5pbXBvcnQgaGFuZGxlVGFnQXJncyBmcm9tICcuLi8uLi91dGlscy9oYW5kbGUtdGFnLWFyZ3MnO1xuaW1wb3J0IHsgZGVsZWdhdGVBUEksIGdldERlbGVnYXRlZEFQSUxpc3QgfSBmcm9tICcuLi8uLi91dGlscy9kZWxlZ2F0ZWQtYXBpJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCBGbGFnTGlzdCBmcm9tICcuLi8uLi91dGlscy9mbGFnLWxpc3QnO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL29wdGlvbi1uYW1lcyc7XG5pbXBvcnQgVW5pdFR5cGUgZnJvbSAnLi91bml0LXR5cGUnO1xuaW1wb3J0IFJlcXVlc3RIb29rIGZyb20gJy4uL3JlcXVlc3QtaG9va3MvaG9vayc7XG5pbXBvcnQgQ2xpZW50U2NyaXB0SW5pdCBmcm9tICcuLi8uLi9jdXN0b20tY2xpZW50LXNjcmlwdHMvY2xpZW50LXNjcmlwdC1pbml0JztcbmltcG9ydCBUZXN0RmlsZSBmcm9tICcuL3Rlc3QtZmlsZSc7XG5pbXBvcnQgeyBBdXRoQ3JlZGVudGlhbHMsIE1ldGFkYXRhIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBUZXN0aW5nVW5pdCBleHRlbmRzIEJhc2VVbml0IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVzdEZpbGU6IFRlc3RGaWxlO1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgIHB1YmxpYyBwYWdlVXJsOiBzdHJpbmc7XG4gICAgcHVibGljIGF1dGhDcmVkZW50aWFsczogbnVsbCB8IEF1dGhDcmVkZW50aWFscztcbiAgICBwdWJsaWMgbWV0YTogTWV0YWRhdGE7XG4gICAgcHVibGljIG9ubHk6IGJvb2xlYW47XG4gICAgcHVibGljIHNraXA6IGJvb2xlYW47XG4gICAgcHVibGljIHJlcXVlc3RIb29rczogUmVxdWVzdEhvb2tbXTtcbiAgICBwdWJsaWMgY2xpZW50U2NyaXB0czogQ2xpZW50U2NyaXB0SW5pdFtdO1xuICAgIHB1YmxpYyBkaXNhYmxlUGFnZVJlbG9hZHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGRpc2FibGVQYWdlQ2FjaGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgYXBpTWV0aG9kV2FzQ2FsbGVkOiBGbGFnTGlzdDtcbiAgICBwdWJsaWMgYXBpT3JpZ2luOiBGdW5jdGlvbjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvciAodGVzdEZpbGU6IFRlc3RGaWxlLCB1bml0VHlwZTogVW5pdFR5cGUsIHBhZ2VVcmw6IHN0cmluZykge1xuICAgICAgICBzdXBlcih1bml0VHlwZSk7XG5cbiAgICAgICAgdGhpcy50ZXN0RmlsZSA9IHRlc3RGaWxlO1xuXG4gICAgICAgIHRoaXMubmFtZSAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYWdlVXJsICAgICAgICAgPSBwYWdlVXJsO1xuICAgICAgICB0aGlzLmF1dGhDcmVkZW50aWFscyA9IG51bGw7XG4gICAgICAgIHRoaXMubWV0YSAgICAgICAgICAgID0ge307XG4gICAgICAgIHRoaXMub25seSAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2tpcCAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVxdWVzdEhvb2tzICAgID0gW107XG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0cyAgID0gW107XG5cbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSB2b2lkIDA7XG4gICAgICAgIHRoaXMuZGlzYWJsZVBhZ2VDYWNoaW5nID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5hcGlNZXRob2RXYXNDYWxsZWQgPSBuZXcgRmxhZ0xpc3QoW09QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzLCBPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzXSk7XG5cbiAgICAgICAgY29uc3QgdW5pdCA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5hcGlPcmlnaW4gPSBmdW5jdGlvbiBhcGlPcmlnaW4gKC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuaXQuX2FkZCguLi5hcmdzKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgZGVsZWdhdGVBUEkodGhpcy5hcGlPcmlnaW4sIHRoaXMuY29uc3RydWN0b3IuQVBJX0xJU1QsIHsgaGFuZGxlcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2FkZCAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93bjtcblxuICAgIHByaXZhdGUgX29ubHkkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMub25seSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NraXAkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMuc2tpcCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVQYWdlUmVsb2FkcyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9lbmFibGVQYWdlUmVsb2FkcyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFnZSQgKHVybDogc3RyaW5nLCAuLi5yZXN0OiB1bmtub3duW10pOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMucGFnZVVybCA9IGhhbmRsZVRhZ0FyZ3ModXJsLCByZXN0KTtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ3BhZ2UnLCAnVGhlIHBhZ2UgVVJMJywgdGhpcy5wYWdlVXJsKTtcbiAgICAgICAgYXNzZXJ0UGFnZVVybCh0aGlzLnBhZ2VVcmwsICdwYWdlJyk7XG5cbiAgICAgICAgdGhpcy5wYWdlVXJsID0gZ2V0VXJsKHRoaXMucGFnZVVybCwgcGF0aFRvRmlsZVVSTCh0aGlzLnRlc3RGaWxlLmZpbGVuYW1lKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2h0dHBBdXRoJCAoY3JlZGVudGlhbHM6IEF1dGhDcmVkZW50aWFscyk6IEZ1bmN0aW9uIHtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OdWxsT2JqZWN0LCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMnLCBjcmVkZW50aWFscyk7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMudXNlcm5hbWUnLCBjcmVkZW50aWFscy51c2VybmFtZSk7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMucGFzc3dvcmQnLCBjcmVkZW50aWFscy5wYXNzd29yZCk7XG5cbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzLmRvbWFpbilcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMuZG9tYWluJywgY3JlZGVudGlhbHMuZG9tYWluKTtcbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzLndvcmtzdGF0aW9uKVxuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy53b3Jrc3RhdGlvbicsIGNyZWRlbnRpYWxzLndvcmtzdGF0aW9uKTtcblxuICAgICAgICB0aGlzLmF1dGhDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tZXRhJCAoa2V5OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZz4sIHZhbHVlPzogc3RyaW5nKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKFtpcy5zdHJpbmcsIGlzLm5vbk51bGxPYmplY3RdLCAnbWV0YScsIGAke3RoaXMudW5pdFR5cGV9Lm1ldGFgLCBrZXkpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyA/IHsgW2tleV06IHZhbHVlIGFzIHN0cmluZyB9IDoga2V5IGFzIERpY3Rpb25hcnk8c3RyaW5nPjtcblxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHByb3BOYW1lID0+IHtcbiAgICAgICAgICAgIHRoaXMubWV0YVtwcm9wTmFtZV0gPSBkYXRhW3Byb3BOYW1lXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVQYWdlQ2FjaGluZyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZUNhY2hpbmcgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1ha2VBUElMaXN0Rm9yQ2hpbGRDbGFzcyAoQ2hpbGRDbGFzczogdW5rbm93bik6IHZvaWQge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgQ2hpbGRDbGFzcy5BUElfTElTVCA9IFRlc3RpbmdVbml0LkFQSV9MSVNULmNvbmNhdChnZXREZWxlZ2F0ZWRBUElMaXN0KENoaWxkQ2xhc3MucHJvdG90eXBlKSk7XG4gICAgfVxufVxuXG4vLyBAdHMtaWdub3JlXG5UZXN0aW5nVW5pdC5BUElfTElTVCA9IGdldERlbGVnYXRlZEFQSUxpc3QoVGVzdGluZ1VuaXQucHJvdG90eXBlKTtcblxuXG4iXX0=
@@ -1,11 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var UnitType;
4
- (function (UnitType) {
5
- UnitType["test"] = "test";
6
- UnitType["fixture"] = "fixture";
7
- UnitType["testFile"] = "testFile";
8
- })(UnitType || (UnitType = {}));
9
- exports.default = UnitType;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var UnitType;
4
+ (function (UnitType) {
5
+ UnitType["test"] = "test";
6
+ UnitType["fixture"] = "fixture";
7
+ UnitType["testFile"] = "testFile";
8
+ })(UnitType || (UnitType = {}));
9
+ exports.default = UnitType;
10
10
  module.exports = exports.default;
11
11
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdW5pdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSyxRQUlKO0FBSkQsV0FBSyxRQUFRO0lBQ1QseUJBQWEsQ0FBQTtJQUNiLCtCQUFtQixDQUFBO0lBQ25CLGlDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFKSSxRQUFRLEtBQVIsUUFBUSxRQUlaO0FBRUQsa0JBQWUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZW51bSBVbml0VHlwZSB7XG4gICAgdGVzdCA9ICd0ZXN0JyxcbiAgICBmaXh0dXJlID0gJ2ZpeHR1cmUnLFxuICAgIHRlc3RGaWxlID0gJ3Rlc3RGaWxlJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBVbml0VHlwZTtcbiJdfQ==
@@ -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
- const assertion_1 = __importDefault(require("../../test-run/commands/assertion"));
7
- const type_1 = __importDefault(require("../../assertions/type"));
8
- const test_run_1 = require("../../errors/test-run");
9
- class Assertion {
10
- constructor(actual, testController, callsite) {
11
- this._testController = testController;
12
- this._actual = actual;
13
- this._callsite = callsite;
14
- }
15
- then() {
16
- throw new test_run_1.AssertionWithoutMethodCallError(this._callsite);
17
- }
18
- _enqueueAssertion(apiMethodName, assertionArgs) {
19
- let options = assertionArgs.opts || {};
20
- let message = assertionArgs.message;
21
- // NOTE: Assertion options should be specified after the 'message' parameter.
22
- // await t.expect(42).eql(43, 'wrong value', { timeout: 10000 });
23
- // In case of empty assertion message we allowing to specify assertion option in place of assertion message.
24
- // await t.expect(42).eql(43, { timeout: 10000 });
25
- if (typeof message === 'object') {
26
- options = assertionArgs.message;
27
- message = void 0;
28
- }
29
- return this._testController._enqueueCommand(apiMethodName, assertion_1.default, {
30
- assertionType: apiMethodName,
31
- actual: this._actual,
32
- expected: assertionArgs.expected,
33
- expected2: assertionArgs.expected2,
34
- message: message,
35
- options: { timeout: options.timeout, allowUnawaitedPromise: options.allowUnawaitedPromise }
36
- });
37
- }
38
- eql(expected, message, opts) {
39
- return this._enqueueAssertion(type_1.default.eql, { expected, message, opts });
40
- }
41
- notEql(expected, message, opts) {
42
- return this._enqueueAssertion(type_1.default.notEql, { expected, message, opts });
43
- }
44
- ok(message, opts) {
45
- return this._enqueueAssertion(type_1.default.ok, { message, opts });
46
- }
47
- notOk(message, opts) {
48
- return this._enqueueAssertion(type_1.default.notOk, { message, opts });
49
- }
50
- contains(expected, message, opts) {
51
- return this._enqueueAssertion(type_1.default.contains, { expected, message, opts });
52
- }
53
- notContains(expected, message, opts) {
54
- return this._enqueueAssertion(type_1.default.notContains, { expected, message, opts });
55
- }
56
- typeOf(expected, message, opts) {
57
- return this._enqueueAssertion(type_1.default.typeOf, { expected, message, opts });
58
- }
59
- notTypeOf(expected, message, opts) {
60
- return this._enqueueAssertion(type_1.default.notTypeOf, { expected, message, opts });
61
- }
62
- gt(expected, message, opts) {
63
- return this._enqueueAssertion(type_1.default.gt, { expected, message, opts });
64
- }
65
- gte(expected, message, opts) {
66
- return this._enqueueAssertion(type_1.default.gte, { expected, message, opts });
67
- }
68
- lt(expected, message, opts) {
69
- return this._enqueueAssertion(type_1.default.lt, { expected, message, opts });
70
- }
71
- lte(expected, message, opts) {
72
- return this._enqueueAssertion(type_1.default.lte, { expected, message, opts });
73
- }
74
- within(start, finish, message, opts) {
75
- // NOTE: `within` is not available in Chai `assert` interface.
76
- return this._enqueueAssertion(type_1.default.within, { expected: start, expected2: finish, message, opts });
77
- }
78
- notWithin(start, finish, message, opts) {
79
- return this._enqueueAssertion(type_1.default.notWithin, { expected: start, expected2: finish, message, opts });
80
- }
81
- match(expected, message, opts) {
82
- return this._enqueueAssertion(type_1.default.match, { expected, message, opts });
83
- }
84
- notMatch(expected, message, opts) {
85
- return this._enqueueAssertion(type_1.default.notMatch, { expected, message, opts });
86
- }
87
- }
88
- exports.default = Assertion;
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 assertion_1 = __importDefault(require("../../test-run/commands/assertion"));
7
+ const type_1 = __importDefault(require("../../assertions/type"));
8
+ const test_run_1 = require("../../errors/test-run");
9
+ class Assertion {
10
+ constructor(actual, testController, callsite) {
11
+ this._testController = testController;
12
+ this._actual = actual;
13
+ this._callsite = callsite;
14
+ }
15
+ then() {
16
+ throw new test_run_1.AssertionWithoutMethodCallError(this._callsite);
17
+ }
18
+ _enqueueAssertion(apiMethodName, assertionArgs) {
19
+ let options = assertionArgs.opts || {};
20
+ let message = assertionArgs.message;
21
+ // NOTE: Assertion options should be specified after the 'message' parameter.
22
+ // await t.expect(42).eql(43, 'wrong value', { timeout: 10000 });
23
+ // In case of empty assertion message we allowing to specify assertion option in place of assertion message.
24
+ // await t.expect(42).eql(43, { timeout: 10000 });
25
+ if (typeof message === 'object') {
26
+ options = assertionArgs.message;
27
+ message = void 0;
28
+ }
29
+ return this._testController._enqueueCommand(apiMethodName, assertion_1.default, {
30
+ assertionType: apiMethodName,
31
+ actual: this._actual,
32
+ expected: assertionArgs.expected,
33
+ expected2: assertionArgs.expected2,
34
+ message: message,
35
+ options: { timeout: options.timeout, allowUnawaitedPromise: options.allowUnawaitedPromise }
36
+ });
37
+ }
38
+ eql(expected, message, opts) {
39
+ return this._enqueueAssertion(type_1.default.eql, { expected, message, opts });
40
+ }
41
+ notEql(expected, message, opts) {
42
+ return this._enqueueAssertion(type_1.default.notEql, { expected, message, opts });
43
+ }
44
+ ok(message, opts) {
45
+ return this._enqueueAssertion(type_1.default.ok, { message, opts });
46
+ }
47
+ notOk(message, opts) {
48
+ return this._enqueueAssertion(type_1.default.notOk, { message, opts });
49
+ }
50
+ contains(expected, message, opts) {
51
+ return this._enqueueAssertion(type_1.default.contains, { expected, message, opts });
52
+ }
53
+ notContains(expected, message, opts) {
54
+ return this._enqueueAssertion(type_1.default.notContains, { expected, message, opts });
55
+ }
56
+ typeOf(expected, message, opts) {
57
+ return this._enqueueAssertion(type_1.default.typeOf, { expected, message, opts });
58
+ }
59
+ notTypeOf(expected, message, opts) {
60
+ return this._enqueueAssertion(type_1.default.notTypeOf, { expected, message, opts });
61
+ }
62
+ gt(expected, message, opts) {
63
+ return this._enqueueAssertion(type_1.default.gt, { expected, message, opts });
64
+ }
65
+ gte(expected, message, opts) {
66
+ return this._enqueueAssertion(type_1.default.gte, { expected, message, opts });
67
+ }
68
+ lt(expected, message, opts) {
69
+ return this._enqueueAssertion(type_1.default.lt, { expected, message, opts });
70
+ }
71
+ lte(expected, message, opts) {
72
+ return this._enqueueAssertion(type_1.default.lte, { expected, message, opts });
73
+ }
74
+ within(start, finish, message, opts) {
75
+ // NOTE: `within` is not available in Chai `assert` interface.
76
+ return this._enqueueAssertion(type_1.default.within, { expected: start, expected2: finish, message, opts });
77
+ }
78
+ notWithin(start, finish, message, opts) {
79
+ return this._enqueueAssertion(type_1.default.notWithin, { expected: start, expected2: finish, message, opts });
80
+ }
81
+ match(expected, message, opts) {
82
+ return this._enqueueAssertion(type_1.default.match, { expected, message, opts });
83
+ }
84
+ notMatch(expected, message, opts) {
85
+ return this._enqueueAssertion(type_1.default.notMatch, { expected, message, opts });
86
+ }
87
+ }
88
+ exports.default = Assertion;
89
89
  module.exports = exports.default;
90
90
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90ZXN0LWNvbnRyb2xsZXIvYXNzZXJ0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0ZBQWlFO0FBQ2pFLGlFQUFtRDtBQUNuRCxvREFBd0U7QUFZeEUsTUFBcUIsU0FBUztJQUsxQixZQUFvQixNQUFlLEVBQUUsY0FBOEIsRUFBRSxRQUF3QjtRQUN6RixJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFXLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFTLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sSUFBSSwwQ0FBK0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLGlCQUFpQixDQUFFLGFBQXFCLEVBQUUsYUFBNEI7UUFDMUUsSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkMsSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUVwQyw2RUFBNkU7UUFDN0UsaUVBQWlFO1FBQ2pFLDRHQUE0RztRQUM1RyxrREFBa0Q7UUFDbEQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUEyQixDQUFDO1lBQ3BELE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztTQUNwQjtRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLG1CQUFnQixFQUFFO1lBQ3pFLGFBQWEsRUFBRSxhQUFhO1lBQzVCLE1BQU0sRUFBUyxJQUFJLENBQUMsT0FBTztZQUMzQixRQUFRLEVBQU8sYUFBYSxDQUFDLFFBQVE7WUFDckMsU0FBUyxFQUFNLGFBQWEsQ0FBQyxTQUFTO1lBQ3RDLE9BQU8s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QUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRU0sTUFBTSxDQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsT0FBZSxFQUFFLElBQXNCO1FBQ2pGLDhEQUE4RDtRQUM5RCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFTSxTQUFTLENBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxPQUFlLEVBQUUsSUFBc0I7UUFDcEYsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRU0sS0FBSyxDQUFFLFFBQWlCLEVBQUUsT0FBZSxFQUFFLElBQXNCO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLFFBQVEsQ0FBRSxRQUFpQixFQUFFLE9BQWUsRUFBRSxJQUFzQjtRQUN2RSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7Q0FDSjtBQXRHRCw0QkFzR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXNzZXJ0aW9uQ29tbWFuZCBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9hc3NlcnRpb24nO1xuaW1wb3J0IEFTU0VSVElPTl9UWVBFIGZyb20gJy4uLy4uL2Fzc2VydGlvbnMvdHlwZSc7XG5pbXBvcnQgeyBBc3NlcnRpb25XaXRob3V0TWV0aG9kQ2FsbEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3Rlc3QtcnVuJztcbmltcG9ydCBUZXN0Q29udHJvbGxlciBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IENhbGxzaXRlUmVjb3JkIH0gZnJvbSAnY2FsbHNpdGUtcmVjb3JkJztcbmltcG9ydCB7IEFzc2VydGlvbk9wdGlvbnMgfSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9vcHRpb25zJztcblxuaW50ZXJmYWNlIEFzc2VydGlvbkFyZ3Mge1xuICAgIG9wdHM6IEFzc2VydGlvbk9wdGlvbnM7XG4gICAgbWVzc2FnZT86IHN0cmluZyB8IEFzc2VydGlvbk9wdGlvbnM7XG4gICAgZXhwZWN0ZWQ/OiB1bmtub3duO1xuICAgIGV4cGVjdGVkMj86IHVua25vd247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFzc2VydGlvbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGVzdENvbnRyb2xsZXI6IFRlc3RDb250cm9sbGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FjdHVhbDogdW5rbm93bjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jYWxsc2l0ZTogQ2FsbHNpdGVSZWNvcmQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGFjdHVhbDogdW5rbm93biwgdGVzdENvbnRyb2xsZXI6IFRlc3RDb250cm9sbGVyLCBjYWxsc2l0ZTogQ2FsbHNpdGVSZWNvcmQpIHtcbiAgICAgICAgdGhpcy5fdGVzdENvbnRyb2xsZXIgPSB0ZXN0Q29udHJvbGxlcjtcbiAgICAgICAgdGhpcy5fYWN0dWFsICAgICAgICAgPSBhY3R1YWw7XG4gICAgICAgIHRoaXMuX2NhbGxzaXRlICAgICAgID0gY2FsbHNpdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHRoZW4gKCk6IG5ldmVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbldpdGhvdXRNZXRob2RDYWxsRXJyb3IodGhpcy5fY2FsbHNpdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2VucXVldWVBc3NlcnRpb24gKGFwaU1ldGhvZE5hbWU6IHN0cmluZywgYXNzZXJ0aW9uQXJnczogQXNzZXJ0aW9uQXJncyk6ICgpID0+IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGFzc2VydGlvbkFyZ3Mub3B0cyB8fCB7fTtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBhc3NlcnRpb25BcmdzLm1lc3NhZ2U7XG5cbiAgICAgICAgLy8gTk9URTogQXNzZXJ0aW9uIG9wdGlvbnMgc2hvdWxkIGJlIHNwZWNpZmllZCBhZnRlciB0aGUgJ21lc3NhZ2UnIHBhcmFtZXRlci5cbiAgICAgICAgLy8gYXdhaXQgdC5leHBlY3QoNDIpLmVxbCg0MywgJ3dyb25nIHZhbHVlJywgeyB0aW1lb3V0OiAxMDAwMCB9KTtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBlbXB0eSBhc3NlcnRpb24gbWVzc2FnZSB3ZSBhbGxvd2luZyB0byBzcGVjaWZ5IGFzc2VydGlvbiBvcHRpb24gaW4gcGxhY2Ugb2YgYXNzZXJ0aW9uIG1lc3NhZ2UuXG4gICAgICAgIC8vIGF3YWl0IHQuZXhwZWN0KDQyKS5lcWwoNDMsIHsgdGltZW91dDogMTAwMDAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBhc3NlcnRpb25BcmdzLm1lc3NhZ2UgYXMgQXNzZXJ0aW9uT3B0aW9ucztcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2b2lkIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fdGVzdENvbnRyb2xsZXIuX2VucXVldWVDb21tYW5kKGFwaU1ldGhvZE5hbWUsIEFzc2VydGlvbkNvbW1hbmQsIHtcbiAgICAgICAgICAgIGFzc2VydGlvblR5cGU6IGFwaU1ldGhvZE5hbWUsXG4gICAgICAgICAgICBhY3R1YWw6ICAgICAgICB0aGlzLl9hY3R1YWwsXG4gICAgICAgICAgICBleHBlY3RlZDogICAgICBhc3NlcnRpb25BcmdzLmV4cGVjdGVkLFxuICAgICAgICAgICAgZXhwZWN0ZWQyOiAgICAgYXNzZXJ0aW9uQXJncy5leHBlY3RlZDIsXG4gICAgICAgICAgICBtZXNzYWdlOiAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgb3B0aW9uczogICAgICAgeyB0aW1lb3V0OiBvcHRpb25zLnRpbWVvdXQsIGFsbG93VW5hd2FpdGVkUHJvbWlzZTogb3B0aW9ucy5hbGxvd1VuYXdhaXRlZFByb21pc2UgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXFsIChleHBlY3RlZDogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLmVxbCwgeyBleHBlY3RlZCwgbWVzc2FnZSwgb3B0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90RXFsIChleHBlY3RlZDogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLm5vdEVxbCwgeyBleHBlY3RlZCwgbWVzc2FnZSwgb3B0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2sgKG1lc3NhZ2U6IHN0cmluZywgb3B0czogQXNzZXJ0aW9uT3B0aW9ucyk6ICgpID0+IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5xdWV1ZUFzc2VydGlvbihBU1NFUlRJT05fVFlQRS5vaywgeyBtZXNzYWdlLCBvcHRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RPayAobWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLm5vdE9rLCB7IG1lc3NhZ2UsIG9wdHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnRhaW5zIChleHBlY3RlZDogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLmNvbnRhaW5zLCB7IGV4cGVjdGVkLCBtZXNzYWdlLCBvcHRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RDb250YWlucyAoZXhwZWN0ZWQ6IHVua25vd24sIG1lc3NhZ2U6IHN0cmluZywgb3B0czogQXNzZXJ0aW9uT3B0aW9ucyk6ICgpID0+IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5xdWV1ZUFzc2VydGlvbihBU1NFUlRJT05fVFlQRS5ub3RDb250YWlucywgeyBleHBlY3RlZCwgbWVzc2FnZSwgb3B0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHlwZU9mIChleHBlY3RlZDogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLnR5cGVPZiwgeyBleHBlY3RlZCwgbWVzc2FnZSwgb3B0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90VHlwZU9mIChleHBlY3RlZDogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLm5vdFR5cGVPZiwgeyBleHBlY3RlZCwgbWVzc2FnZSwgb3B0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ3QgKGV4cGVjdGVkOiB1bmtub3duLCBtZXNzYWdlOiBzdHJpbmcsIG9wdHM6IEFzc2VydGlvbk9wdGlvbnMpOiAoKSA9PiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VucXVldWVBc3NlcnRpb24oQVNTRVJUSU9OX1RZUEUuZ3QsIHsgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wdHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGd0ZSAoZXhwZWN0ZWQ6IHVua25vd24sIG1lc3NhZ2U6IHN0cmluZywgb3B0czogQXNzZXJ0aW9uT3B0aW9ucyk6ICgpID0+IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5xdWV1ZUFzc2VydGlvbihBU1NFUlRJT05fVFlQRS5ndGUsIHsgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wdHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGx0IChleHBlY3RlZDogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLmx0LCB7IGV4cGVjdGVkLCBtZXNzYWdlLCBvcHRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBsdGUgKGV4cGVjdGVkOiB1bmtub3duLCBtZXNzYWdlOiBzdHJpbmcsIG9wdHM6IEFzc2VydGlvbk9wdGlvbnMpOiAoKSA9PiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VucXVldWVBc3NlcnRpb24oQVNTRVJUSU9OX1RZUEUubHRlLCB7IGV4cGVjdGVkLCBtZXNzYWdlLCBvcHRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoaW4gKHN0YXJ0OiBudW1iZXIsIGZpbmlzaDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcsIG9wdHM6IEFzc2VydGlvbk9wdGlvbnMpOiAoKSA9PiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgLy8gTk9URTogYHdpdGhpbmAgaXMgbm90IGF2YWlsYWJsZSBpbiBDaGFpIGBhc3NlcnRgIGludGVyZmFjZS5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2VucXVldWVBc3NlcnRpb24oQVNTRVJUSU9OX1RZUEUud2l0aGluLCB7IGV4cGVjdGVkOiBzdGFydCwgZXhwZWN0ZWQyOiBmaW5pc2gsIG1lc3NhZ2UsIG9wdHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdFdpdGhpbiAoc3RhcnQ6IG51bWJlciwgZmluaXNoOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZywgb3B0czogQXNzZXJ0aW9uT3B0aW9ucyk6ICgpID0+IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5xdWV1ZUFzc2VydGlvbihBU1NFUlRJT05fVFlQRS5ub3RXaXRoaW4sIHsgZXhwZWN0ZWQ6IHN0YXJ0LCBleHBlY3RlZDI6IGZpbmlzaCwgbWVzc2FnZSwgb3B0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWF0Y2ggKGV4cGVjdGVkOiB1bmtub3duLCBtZXNzYWdlOiBzdHJpbmcsIG9wdHM6IEFzc2VydGlvbk9wdGlvbnMpOiAoKSA9PiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VucXVldWVBc3NlcnRpb24oQVNTRVJUSU9OX1RZUEUubWF0Y2gsIHsgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wdHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdE1hdGNoIChleHBlY3RlZDogdW5rbm93biwgbWVzc2FnZTogc3RyaW5nLCBvcHRzOiBBc3NlcnRpb25PcHRpb25zKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnF1ZXVlQXNzZXJ0aW9uKEFTU0VSVElPTl9UWVBFLm5vdE1hdGNoLCB7IGV4cGVjdGVkLCBtZXNzYWdlLCBvcHRzIH0pO1xuICAgIH1cbn1cbiJdfQ==