testcafe 2.6.2 → 3.4.0
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.
- package/lib/api/exportable-lib/index.js +5 -1
- package/lib/api/request-hooks/request-logger.js +6 -3
- package/lib/api/structure/fixture.js +6 -1
- package/lib/api/structure/interfaces.js +1 -1
- package/lib/api/structure/test-file.js +2 -2
- package/lib/api/structure/testing-unit.js +2 -1
- package/lib/api/test-controller/assertion.js +1 -1
- package/lib/api/test-controller/index.js +9 -19
- package/lib/api/test-page-url.js +2 -2
- package/lib/assertions/executor.js +1 -1
- package/lib/browser/connection/gateway/index.js +1 -4
- package/lib/browser/connection/index.js +6 -1
- package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +4 -1
- package/lib/cli/argument-parser/index.js +3 -8
- package/lib/cli/remotes-wizard.js +3 -1
- package/lib/client/automation/index.js +153 -192
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/automation/playback/press/shortcut-type.js +24 -0
- package/lib/client/browser/idle-page/index.html.mustache +1 -1
- package/lib/client/browser/idle-page/index.js +5 -1
- package/lib/client/core/index.js +101 -330
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/utils/array.js +3 -18
- package/lib/client/core/utils/dom.js +12 -32
- package/lib/client/driver/index.js +65 -77
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/driver/status.js +1 -2
- package/lib/client/test-run/index.js.mustache +1 -6
- package/lib/client/ui/index.js +77 -50
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client/ui/styles.css +81 -3
- package/lib/client-functions/client-function-builder.js +7 -28
- package/lib/client-functions/selectors/add-api.js +3 -61
- package/lib/client-functions/selectors/selector-builder.js +3 -6
- package/lib/client-functions/selectors/selector-text-filter.js +1 -3
- package/lib/compiler/test-file/formats/dev-tools/compiler.js +8 -2
- package/lib/compiler/test-file/formats/typescript/compiler.js +2 -1
- package/lib/configuration/configuration-base.js +10 -8
- package/lib/configuration/default-values.js +3 -3
- package/lib/configuration/option-names.js +2 -3
- package/lib/configuration/run-option-names.js +2 -2
- package/lib/configuration/testcafe-configuration.js +4 -12
- package/lib/configuration/types.js +1 -1
- package/lib/custom-client-scripts/client-script.js +4 -1
- package/lib/custom-client-scripts/routing.js +3 -4
- package/lib/errors/get-callsite.js +3 -3
- package/lib/errors/runtime/index.js +64 -5
- package/lib/errors/runtime/templates.js +24 -15
- package/lib/errors/test-run/render-error-template/utils.js +2 -2
- package/lib/errors/test-run/templates.js +2 -2
- package/lib/errors/test-run/utils.js +2 -2
- package/lib/errors/types.js +5 -2
- package/lib/index.js +6 -4
- package/lib/native-automation/client/deps/hammerhead.js +25 -0
- package/lib/native-automation/client/event-descriptor.js +14 -1
- package/lib/native-automation/client/input.js +17 -5
- package/lib/native-automation/client/key-press/utils.js +13 -2
- package/lib/native-automation/cookie-provider.js +15 -4
- package/lib/native-automation/index.js +3 -2
- package/lib/native-automation/request-hooks/event-factory/request-paused-event-based.js +9 -5
- package/lib/native-automation/request-hooks/event-provider.js +14 -4
- package/lib/native-automation/request-pipeline/index.js +77 -48
- package/lib/native-automation/request-pipeline/safe-api.js +15 -10
- package/lib/native-automation/request-pipeline/test-run-bridge.js +13 -1
- package/lib/native-automation/resource-injector.js +3 -1
- package/lib/native-automation/types.js +1 -1
- package/lib/native-automation/utils/headers.js +2 -10
- package/lib/notifications/warning-message.js +3 -4
- package/lib/reporter/index.js +30 -21
- package/lib/reporter/module-prefix.js +6 -0
- package/lib/reporter/plugin-host.js +3 -12
- package/lib/role/index.js +1 -4
- package/lib/role/role.js +9 -1
- package/lib/runner/bootstrapper.js +45 -16
- package/lib/runner/browser-job.js +33 -5
- package/lib/runner/fixture-hook-controller.js +4 -3
- package/lib/runner/index.js +4 -19
- package/lib/runner/task/index.js +2 -4
- package/lib/runner/test-run-controller.js +24 -9
- package/lib/screenshots/capturer.js +8 -19
- package/lib/screenshots/index.js +4 -23
- package/lib/test-run/bookmark.js +1 -1
- package/lib/test-run/commands/observation.js +2 -10
- package/lib/test-run/commands/service.js +2 -9
- package/lib/test-run/commands/type.js +1 -2
- package/lib/test-run/index.js +10 -20
- package/lib/test-run/request/create-request-options.js +1 -1
- package/lib/test-run/request/interfaces.js +1 -1
- package/lib/test-run/request/send.js +2 -2
- package/lib/testcafe.js +3 -2
- package/lib/utils/debug-loggers.js +9 -2
- package/lib/utils/escape-unsafe-chars.js +13 -0
- package/lib/utils/get-browser.js +3 -2
- package/lib/utils/get-options/index.js +2 -4
- package/lib/utils/get-renderes.js +2 -2
- package/lib/utils/get-test-and-fixture-info.js +20 -0
- package/lib/utils/get-testcafe-version.js +3 -3
- package/lib/utils/lowercase-object-keys.js +12 -0
- package/lib/utils/match-collection.js +3 -3
- package/lib/utils/prerender-callsite.js +1 -1
- package/lib/utils/render-callsite-sync.js +2 -2
- package/lib/utils/reporter.js +8 -4
- package/lib/video-recorder/recorder.js +2 -2
- package/package.json +25 -27
- package/ts-defs/index.d.ts +49 -12
- package/ts-defs/selectors.d.ts +42 -8
- package/ts-defs/testcafe-scripts.d.ts +52 -8
- package/CHANGELOG.md +0 -4879
- package/lib/client/driver/command-executors/client-functions/selector-executor/check-element-delay.js +0 -5
- package/lib/client-functions/selector-api-execution-mode.js +0 -22
- package/lib/custom-client-scripts/get-url.js +0 -8
- package/lib/utils/is-repl.js +0 -12
|
@@ -53,7 +53,7 @@ class VideoRecorder extends events_1.EventEmitter {
|
|
|
53
53
|
const problematicPlaceholderListStr = (0, string_1.getConcatenatedValuesString)(placeholders);
|
|
54
54
|
const suffix = (0, string_1.getPluralSuffix)(placeholders);
|
|
55
55
|
const verb = (0, string_1.getToBeInPastTense)(placeholders);
|
|
56
|
-
this.warningLog.addWarning(warning_message_1.default.problematicPathPatternPlaceholderForVideoRecording,
|
|
56
|
+
this.warningLog.addWarning(warning_message_1.default.problematicPathPatternPlaceholderForVideoRecording, suffix, problematicPlaceholderListStr, suffix, verb);
|
|
57
57
|
}
|
|
58
58
|
_getTargetVideoPath(testRunRecorder) {
|
|
59
59
|
const data = Object.assign(testRunRecorder.testRunInfo, { now: this.timeStamp });
|
|
@@ -148,4 +148,4 @@ class VideoRecorder extends events_1.EventEmitter {
|
|
|
148
148
|
}
|
|
149
149
|
exports.default = VideoRecorder;
|
|
150
150
|
module.exports = exports.default;
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmlkZW8tcmVjb3JkZXIvcmVjb3JkZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0JBQXFDO0FBQ3JDLDRDQUFvQjtBQUNwQixpREFBMEM7QUFDMUMsd0RBQStCO0FBQy9CLDZFQUFvRDtBQUNwRCx5RUFBZ0Q7QUFDaEQsdUZBQWdFO0FBQ2hFLDRDQUl5QjtBQUV6Qix3RkFBNkQ7QUFDN0QsbUNBQXNDO0FBQ3RDLHlGQUErRDtBQUUvRCxNQUFNLFlBQVksR0FBRyxJQUFBLGVBQUssRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRXRELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQztBQUM5QixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFFaEMsTUFBcUIsYUFBYyxTQUFRLHFCQUFZO0lBQ25ELFlBQWEsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsVUFBVSxHQUFVLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFZLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFVLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBVSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBSyxZQUFZLENBQUM7UUFFdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFN0IsSUFBSSxDQUFDLGFBQWEs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QUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0o7QUFsTEQsZ0NBa0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IGpvaW4sIGRpcm5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBzcGF3blN5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBtYWtlRGlyIGZyb20gJ21ha2UtZGlyJztcbmltcG9ydCBUZW1wRGlyZWN0b3J5IGZyb20gJy4uL3V0aWxzL3RlbXAtZGlyZWN0b3J5JztcbmltcG9ydCBQYXRoUGF0dGVybiBmcm9tICcuLi91dGlscy9wYXRoLXBhdHRlcm4nO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRVMgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLW1lc3NhZ2UnO1xuaW1wb3J0IHtcbiAgICBnZXRQbHVyYWxTdWZmaXgsXG4gICAgZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nLFxuICAgIGdldFRvQmVJblBhc3RUZW5zZSxcbn0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcblxuaW1wb3J0IFRlc3RSdW5WaWRlb1JlY29yZGVyIGZyb20gJy4vdGVzdC1ydW4tdmlkZW8tcmVjb3JkZXInO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBjcmVhdGVTYWZlTGlzdGVuZXIgZnJvbSAnLi4vdXRpbHMvY3JlYXRlLXNhZmUtbGlzdGVuZXInO1xuXG5jb25zdCBERUJVR19MT0dHRVIgPSBkZWJ1ZygndGVzdGNhZmU6dmlkZW8tcmVjb3JkZXInKTtcblxuY29uc3QgVklERU9fRVhURU5TSU9OID0gJ21wNCc7XG5jb25zdCBURU1QX0RJUl9QUkVGSVggPSAndmlkZW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1JlY29yZGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBjb25zdHJ1Y3RvciAoYnJvd3NlckpvYiwgYmFzZVBhdGgsIG9wdHMsIGVuY29kaW5nT3B0cywgd2FybmluZ0xvZykge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckpvYiAgICAgICAgPSBicm93c2VySm9iO1xuICAgICAgICB0aGlzLmJhc2VQYXRoICAgICAgICAgID0gYmFzZVBhdGg7XG4gICAgICAgIHRoaXMuZmFpbGVkT25seSAgICAgICAgPSBvcHRzLmZhaWxlZE9ubHk7XG4gICAgICAgIHRoaXMuc2luZ2xlRmlsZSAgICAgICAgPSBvcHRzLnNpbmdsZUZpbGU7XG4gICAgICAgIHRoaXMuZmZtcGVnUGF0aCAgICAgICAgPSBvcHRzLmZmbXBlZ1BhdGg7XG4gICAgICAgIHRoaXMuY3VzdG9tUGF0aFBhdHRlcm4gPSBvcHRzLnBhdGhQYXR0ZXJuO1xuICAgICAgICB0aGlzLnRpbWVTdGFtcCAgICAgICAgID0gb3B0cy50aW1lU3RhbXA7XG4gICAgICAgIHRoaXMuZW5jb2RpbmdPcHRpb25zICAgPSBlbmNvZGluZ09wdHM7XG5cbiAgICAgICAgdGhpcy53YXJuaW5nTG9nID0gd2FybmluZ0xvZztcblxuICAgICAgICB0aGlzLnRlbXBEaXJlY3RvcnkgPSBuZXcgVGVtcERpcmVjdG9yeShURU1QX0RJUl9QUkVGSVgpO1xuXG4gICAgICAgIHRoaXMuZmlyc3RGaWxlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnRlc3RSdW5WaWRlb1JlY29yZGVycyA9IHt9O1xuXG4gICAgICAgIHRoaXMuX2Fzc2lnbkV2ZW50SGFuZGxlcnMoYnJvd3NlckpvYik7XG4gICAgfVxuXG4gICAgX2NyZWF0ZVNhZmVMaXN0ZW5lciAobGlzdGVuZXIpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNhZmVMaXN0ZW5lcih0aGlzLCBsaXN0ZW5lciwgREVCVUdfTE9HR0VSKTtcbiAgICB9XG5cbiAgICBfYXNzaWduRXZlbnRIYW5kbGVycyAoYnJvd3NlckpvYikge1xuICAgICAgICBicm93c2VySm9iLm9uY2UoJ3N0YXJ0JywgdGhpcy5fY3JlYXRlU2FmZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGVtcERpcmVjdG9yeUluaXRpYWxpemVkUHJvbWlzZSA9IHRoaXMuX29uQnJvd3NlckpvYlN0YXJ0KCk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRlbXBEaXJlY3RvcnlJbml0aWFsaXplZFByb21pc2U7XG4gICAgICAgIH0pKTtcblxuICAgICAgICBicm93c2VySm9iLm9uY2UoJ2RvbmUnLCB0aGlzLl9jcmVhdGVTYWZlTGlzdGVuZXIodGhpcy5fb25Ccm93c2VySm9iRG9uZSkpO1xuICAgICAgICBicm93c2VySm9iLm9uKCd0ZXN0LXJ1bi1jcmVhdGUnLCB0aGlzLl9jcmVhdGVTYWZlTGlzdGVuZXIodGhpcy5fb25UZXN0UnVuQ3JlYXRlKSk7XG4gICAgICAgIGJyb3dzZXJKb2Iub24oJ3Rlc3QtcnVuLXJlYWR5JywgdGhpcy5fY3JlYXRlU2FmZUxpc3RlbmVyKHRoaXMuX29uVGVzdFJ1blJlYWR5KSk7XG4gICAgICAgIGJyb3dzZXJKb2Iub24oJ3Rlc3QtcnVuLWJlZm9yZS1kb25lJywgdGhpcy5fY3JlYXRlU2FmZUxpc3RlbmVyKHRoaXMuX29uVGVzdFJ1bkJlZm9yZURvbmUpKTtcbiAgICAgICAgYnJvd3NlckpvYi5vbigndGVzdC1ydW4tcmVzdGFydCcsIHRoaXMuX2NyZWF0ZVNhZmVMaXN0ZW5lcih0aGlzLl9vblRlc3RSdW5SZXN0YXJ0KSk7XG4gICAgfVxuXG4gICAgX2FkZFByb2JsZW1hdGljUGxhY2Vob2xkZXJzV2FybmluZyAocGxhY2Vob2xkZXJzKSB7XG4gICAgICAgIGNvbnN0IHByb2JsZW1hdGljUGxhY2Vob2xkZXJMaXN0U3RyID0gZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nKHBsYWNlaG9sZGVycyk7XG4gICAgICAgIGNvbnN0IHN1ZmZpeCAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0UGx1cmFsU3VmZml4KHBsYWNlaG9sZGVycyk7XG4gICAgICAgIGNvbnN0IHZlcmIgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0VG9CZUluUGFzdFRlbnNlKHBsYWNlaG9sZGVycyk7XG5cbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcoV0FSTklOR19NRVNTQUdFUy5wcm9ibGVtYXRpY1BhdGhQYXR0ZXJuUGxhY2Vob2xkZXJGb3JWaWRlb1JlY29yZGluZywgcHJvYmxlbWF0aWNQbGFjZWhvbGRlckxpc3RTdHIsIHN1ZmZpeCwgc3VmZml4LCB2ZXJiKTtcbiAgICB9XG5cbiAgICBfZ2V0VGFyZ2V0VmlkZW9QYXRoICh0ZXN0UnVuUmVjb3JkZXIpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IE9iamVjdC5hc3NpZ24odGVzdFJ1blJlY29yZGVyLnRlc3RSdW5JbmZvLCB7IG5vdzogdGhpcy50aW1lU3RhbXAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRmlsZSkge1xuICAgICAgICAgICAgZGF0YS50ZXN0SW5kZXggPSBudWxsO1xuICAgICAgICAgICAgZGF0YS5maXh0dXJlID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGEudGVzdCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXRoUGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybih0aGlzLmN1c3RvbVBhdGhQYXR0ZXJuLCBWSURFT19FWFRFTlNJT04sIGRhdGEpO1xuXG4gICAgICAgIHBhdGhQYXR0ZXJuLm9uKCdwcm9ibGVtYXRpYy1wbGFjZWhvbGRlcnMtZm91bmQnLCAoeyBwbGFjZWhvbGRlcnMgfSkgPT4gdGhpcy5fYWRkUHJvYmxlbWF0aWNQbGFjZWhvbGRlcnNXYXJuaW5nKHBsYWNlaG9sZGVycykpO1xuXG4gICAgICAgIHJldHVybiBqb2luKHRoaXMuYmFzZVBhdGgsIHBhdGhQYXR0ZXJuLmdldFBhdGgoKSk7XG4gICAgfVxuXG4gICAgX2NvbmNhdFZpZGVvICh0YXJnZXRWaWRlb1BhdGgsIHsgdGVtcFZpZGVvUGF0aCwgdGVtcE1lcmdlQ29uZmlnUGF0aCwgdG1wTWVyZ2VOYW1lIH0pIHtcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpcnN0RmlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0ZW1wTWVyZ2VDb25maWdQYXRoLCBgXG4gICAgICAgICAgICBmaWxlICcke3RhcmdldFZpZGVvUGF0aH0nXG4gICAgICAgICAgICBmaWxlICcke3RlbXBWaWRlb1BhdGh9J1xuICAgICAgICBgKTtcblxuICAgICAgICBzcGF3blN5bmModGhpcy5mZm1wZWdQYXRoLCBbJy15JywgJy1mJywgJ2NvbmNhdCcsICctc2FmZScsICcwJywgJy1pJywgdGVtcE1lcmdlQ29uZmlnUGF0aCwgJy1jJywgJ2NvcHknLCB0bXBNZXJnZU5hbWVdLCB7IHN0ZGlvOiAnaWdub3JlJyB9KTtcbiAgICAgICAgZnMuY29weUZpbGVTeW5jKHRtcE1lcmdlTmFtZSwgdGVtcFZpZGVvUGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX29uQnJvd3NlckpvYlN0YXJ0ICgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy50ZW1wRGlyZWN0b3J5LmluaXQoKTtcbiAgICB9XG5cbiAgICBhc3luYyBfb25Ccm93c2VySm9iRG9uZSAoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudGVtcERpcmVjdG9yeS5kaXNwb3NlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX29uVGVzdFJ1bkNyZWF0ZSAodGVzdFJ1bkluZm8pIHtcbiAgICAgICAgaWYgKHRlc3RSdW5JbmZvLmxlZ2FjeSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCB0aGlzLnRlbXBEaXJlY3RvcnlJbml0aWFsaXplZFByb21pc2U7XG5cbiAgICAgICAgY29uc3QgcmVjb3JkaW5nT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHBhdGg6ICAgICAgICAgICAgdGhpcy50ZW1wRGlyZWN0b3J5LnBhdGgsXG4gICAgICAgICAgICBmZm1wZWdQYXRoOiAgICAgIHRoaXMuZmZtcGVnUGF0aCxcbiAgICAgICAgICAgIGVuY29kaW5nT3B0aW9uczogdGhpcy5lbmNvZGluZ09wdGlvbnMsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGVzdFJ1blZpZGVvUmVjb3JkZXIgPSB0aGlzLl9jcmVhdGVUZXN0UnVuVmlkZW9SZWNvcmRlcih0ZXN0UnVuSW5mbywgcmVjb3JkaW5nT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGlzVmlkZW9TdXBwb3J0ZWQgICAgID0gYXdhaXQgdGVzdFJ1blZpZGVvUmVjb3JkZXIuaXNWaWRlb1N1cHBvcnRlZCgpO1xuXG4gICAgICAgIGlmICghaXNWaWRlb1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcoV0FSTklOR19NRVNTQUdFUy52aWRlb05vdFN1cHBvcnRlZEJ5QnJvd3NlciwgdGVzdFJ1blZpZGVvUmVjb3JkZXIudGVzdFJ1bkluZm8uYWxpYXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNWaWRlb0VuYWJsZWQgPSBhd2FpdCB0ZXN0UnVuVmlkZW9SZWNvcmRlci5pc1ZpZGVvRW5hYmxlZCgpO1xuXG4gICAgICAgIGlmICghaXNWaWRlb0VuYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgdGVzdFJ1blZpZGVvUmVjb3JkZXIuaW5pdCgpO1xuXG4gICAgICAgIHRoaXMudGVzdFJ1blZpZGVvUmVjb3JkZXJzW3Rlc3RSdW5WaWRlb1JlY29yZGVyLmluZGV4XSA9IHRlc3RSdW5WaWRlb1JlY29yZGVyO1xuICAgIH1cblxuICAgIF9jcmVhdGVUZXN0UnVuVmlkZW9SZWNvcmRlciAodGVzdFJ1bkluZm8sIHJlY29yZGluZ09wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXN0UnVuVmlkZW9SZWNvcmRlcih0ZXN0UnVuSW5mbywgcmVjb3JkaW5nT3B0aW9ucywgdGhpcy53YXJuaW5nTG9nKTtcbiAgICB9XG5cbiAgICBhc3luYyBfb25UZXN0UnVuUmVhZHkgKHsgaW5kZXggfSkge1xuICAgICAgICBjb25zdCB0ZXN0UnVuUmVjb3JkZXIgPSB0aGlzLnRlc3RSdW5WaWRlb1JlY29yZGVyc1tpbmRleF07XG5cbiAgICAgICAgaWYgKCF0ZXN0UnVuUmVjb3JkZXIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgdGVzdFJ1blJlY29yZGVyLnN0YXJ0Q2FwdHVyaW5nKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX29uVGVzdFJ1blJlc3RhcnQgKHsgaW5kZXggfSkge1xuICAgICAgICBjb25zdCB0ZXN0UnVuUmVjb3JkZXIgPSB0aGlzLnRlc3RSdW5WaWRlb1JlY29yZGVyc1tpbmRleF07XG5cbiAgICAgICAgaWYgKCF0ZXN0UnVuUmVjb3JkZXIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGVzdFJ1blJlY29yZGVyLm9uVGVzdFJ1blJlc3RhcnQoKTtcbiAgICB9XG5cbiAgICBhc3luYyBfb25UZXN0UnVuQmVmb3JlRG9uZSAoeyBpbmRleCB9KSB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5SZWNvcmRlciA9IHRoaXMudGVzdFJ1blZpZGVvUmVjb3JkZXJzW2luZGV4XTtcblxuICAgICAgICBpZiAoIXRlc3RSdW5SZWNvcmRlcilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBkZWxldGUgdGhpcy50ZXN0UnVuVmlkZW9SZWNvcmRlcnNbaW5kZXhdO1xuXG4gICAgICAgIGF3YWl0IHRlc3RSdW5SZWNvcmRlci5maW5pc2hDYXB0dXJpbmcoKTtcblxuICAgICAgICBpZiAodGhpcy5mYWlsZWRPbmx5ICYmICF0ZXN0UnVuUmVjb3JkZXIuaGFzRXJyb3JzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHZpZGVvUGF0aCA9IHRoaXMuX2dldFRhcmdldFZpZGVvUGF0aCh0ZXN0UnVuUmVjb3JkZXIpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX3NhdmVGaWxlcyh0ZXN0UnVuUmVjb3JkZXIsIHZpZGVvUGF0aCk7XG5cbiAgICAgICAgY29uc3QgdGVzdFJ1blZpZGVvU2F2ZWRFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICB0ZXN0UnVuOiAgICB0ZXN0UnVuUmVjb3JkZXIudGVzdFJ1bixcbiAgICAgICAgICAgIHZpZGVvUGF0aCxcbiAgICAgICAgICAgIHNpbmdsZUZpbGU6ICEhdGhpcy5zaW5nbGVGaWxlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy5zaW5nbGVGaWxlKVxuICAgICAgICAgICAgdGVzdFJ1blZpZGVvU2F2ZWRFdmVudEFyZ3MudGltZWNvZGVzID0gdGVzdFJ1blJlY29yZGVyLnRlc3RSdW5JbmZvLnRpbWVjb2RlcztcblxuICAgICAgICB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXZpZGVvLXNhdmVkJywgdGVzdFJ1blZpZGVvU2F2ZWRFdmVudEFyZ3MpO1xuICAgIH1cblxuICAgIGFzeW5jIF9zYXZlRmlsZXMgKHRlc3RSdW5SZWNvcmRlciwgdmlkZW9QYXRoKSB7XG4gICAgICAgIGF3YWl0IG1ha2VEaXIoZGlybmFtZSh2aWRlb1BhdGgpKTtcblxuICAgICAgICBpZiAodGhpcy5zaW5nbGVGaWxlKVxuICAgICAgICAgICAgdGhpcy5fY29uY2F0VmlkZW8odmlkZW9QYXRoLCB0ZXN0UnVuUmVjb3JkZXIudGVtcEZpbGVzKTtcblxuICAgICAgICBmcy5jb3B5RmlsZVN5bmModGVzdFJ1blJlY29yZGVyLnRlbXBGaWxlcy50ZW1wVmlkZW9QYXRoLCB2aWRlb1BhdGgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmlkZW8tcmVjb3JkZXIvcmVjb3JkZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0JBQXFDO0FBQ3JDLDRDQUFvQjtBQUNwQixpREFBMEM7QUFDMUMsd0RBQStCO0FBQy9CLDZFQUFvRDtBQUNwRCx5RUFBZ0Q7QUFDaEQsdUZBQWdFO0FBQ2hFLDRDQUl5QjtBQUV6Qix3RkFBNkQ7QUFDN0QsbUNBQXNDO0FBQ3RDLHlGQUErRDtBQUUvRCxNQUFNLFlBQVksR0FBRyxJQUFBLGVBQUssRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRXRELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQztBQUM5QixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFFaEMsTUFBcUIsYUFBYyxTQUFRLHFCQUFZO0lBQ25ELFlBQWEsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsVUFBVSxHQUFVLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFZLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFVLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBVSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBSyxZQUFZLENBQUM7UUFFdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFN0IsSUFBSSxDQUFDLGFBQWEs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QUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0o7QUFsTEQsZ0NBa0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IGpvaW4sIGRpcm5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBzcGF3blN5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBtYWtlRGlyIGZyb20gJ21ha2UtZGlyJztcbmltcG9ydCBUZW1wRGlyZWN0b3J5IGZyb20gJy4uL3V0aWxzL3RlbXAtZGlyZWN0b3J5JztcbmltcG9ydCBQYXRoUGF0dGVybiBmcm9tICcuLi91dGlscy9wYXRoLXBhdHRlcm4nO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRVMgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLW1lc3NhZ2UnO1xuaW1wb3J0IHtcbiAgICBnZXRQbHVyYWxTdWZmaXgsXG4gICAgZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nLFxuICAgIGdldFRvQmVJblBhc3RUZW5zZSxcbn0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcblxuaW1wb3J0IFRlc3RSdW5WaWRlb1JlY29yZGVyIGZyb20gJy4vdGVzdC1ydW4tdmlkZW8tcmVjb3JkZXInO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBjcmVhdGVTYWZlTGlzdGVuZXIgZnJvbSAnLi4vdXRpbHMvY3JlYXRlLXNhZmUtbGlzdGVuZXInO1xuXG5jb25zdCBERUJVR19MT0dHRVIgPSBkZWJ1ZygndGVzdGNhZmU6dmlkZW8tcmVjb3JkZXInKTtcblxuY29uc3QgVklERU9fRVhURU5TSU9OID0gJ21wNCc7XG5jb25zdCBURU1QX0RJUl9QUkVGSVggPSAndmlkZW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1JlY29yZGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBjb25zdHJ1Y3RvciAoYnJvd3NlckpvYiwgYmFzZVBhdGgsIG9wdHMsIGVuY29kaW5nT3B0cywgd2FybmluZ0xvZykge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckpvYiAgICAgICAgPSBicm93c2VySm9iO1xuICAgICAgICB0aGlzLmJhc2VQYXRoICAgICAgICAgID0gYmFzZVBhdGg7XG4gICAgICAgIHRoaXMuZmFpbGVkT25seSAgICAgICAgPSBvcHRzLmZhaWxlZE9ubHk7XG4gICAgICAgIHRoaXMuc2luZ2xlRmlsZSAgICAgICAgPSBvcHRzLnNpbmdsZUZpbGU7XG4gICAgICAgIHRoaXMuZmZtcGVnUGF0aCAgICAgICAgPSBvcHRzLmZmbXBlZ1BhdGg7XG4gICAgICAgIHRoaXMuY3VzdG9tUGF0aFBhdHRlcm4gPSBvcHRzLnBhdGhQYXR0ZXJuO1xuICAgICAgICB0aGlzLnRpbWVTdGFtcCAgICAgICAgID0gb3B0cy50aW1lU3RhbXA7XG4gICAgICAgIHRoaXMuZW5jb2RpbmdPcHRpb25zICAgPSBlbmNvZGluZ09wdHM7XG5cbiAgICAgICAgdGhpcy53YXJuaW5nTG9nID0gd2FybmluZ0xvZztcblxuICAgICAgICB0aGlzLnRlbXBEaXJlY3RvcnkgPSBuZXcgVGVtcERpcmVjdG9yeShURU1QX0RJUl9QUkVGSVgpO1xuXG4gICAgICAgIHRoaXMuZmlyc3RGaWxlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnRlc3RSdW5WaWRlb1JlY29yZGVycyA9IHt9O1xuXG4gICAgICAgIHRoaXMuX2Fzc2lnbkV2ZW50SGFuZGxlcnMoYnJvd3NlckpvYik7XG4gICAgfVxuXG4gICAgX2NyZWF0ZVNhZmVMaXN0ZW5lciAobGlzdGVuZXIpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNhZmVMaXN0ZW5lcih0aGlzLCBsaXN0ZW5lciwgREVCVUdfTE9HR0VSKTtcbiAgICB9XG5cbiAgICBfYXNzaWduRXZlbnRIYW5kbGVycyAoYnJvd3NlckpvYikge1xuICAgICAgICBicm93c2VySm9iLm9uY2UoJ3N0YXJ0JywgdGhpcy5fY3JlYXRlU2FmZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGVtcERpcmVjdG9yeUluaXRpYWxpemVkUHJvbWlzZSA9IHRoaXMuX29uQnJvd3NlckpvYlN0YXJ0KCk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRlbXBEaXJlY3RvcnlJbml0aWFsaXplZFByb21pc2U7XG4gICAgICAgIH0pKTtcblxuICAgICAgICBicm93c2VySm9iLm9uY2UoJ2RvbmUnLCB0aGlzLl9jcmVhdGVTYWZlTGlzdGVuZXIodGhpcy5fb25Ccm93c2VySm9iRG9uZSkpO1xuICAgICAgICBicm93c2VySm9iLm9uKCd0ZXN0LXJ1bi1jcmVhdGUnLCB0aGlzLl9jcmVhdGVTYWZlTGlzdGVuZXIodGhpcy5fb25UZXN0UnVuQ3JlYXRlKSk7XG4gICAgICAgIGJyb3dzZXJKb2Iub24oJ3Rlc3QtcnVuLXJlYWR5JywgdGhpcy5fY3JlYXRlU2FmZUxpc3RlbmVyKHRoaXMuX29uVGVzdFJ1blJlYWR5KSk7XG4gICAgICAgIGJyb3dzZXJKb2Iub24oJ3Rlc3QtcnVuLWJlZm9yZS1kb25lJywgdGhpcy5fY3JlYXRlU2FmZUxpc3RlbmVyKHRoaXMuX29uVGVzdFJ1bkJlZm9yZURvbmUpKTtcbiAgICAgICAgYnJvd3NlckpvYi5vbigndGVzdC1ydW4tcmVzdGFydCcsIHRoaXMuX2NyZWF0ZVNhZmVMaXN0ZW5lcih0aGlzLl9vblRlc3RSdW5SZXN0YXJ0KSk7XG4gICAgfVxuXG4gICAgX2FkZFByb2JsZW1hdGljUGxhY2Vob2xkZXJzV2FybmluZyAocGxhY2Vob2xkZXJzKSB7XG4gICAgICAgIGNvbnN0IHByb2JsZW1hdGljUGxhY2Vob2xkZXJMaXN0U3RyID0gZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nKHBsYWNlaG9sZGVycyk7XG4gICAgICAgIGNvbnN0IHN1ZmZpeCAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0UGx1cmFsU3VmZml4KHBsYWNlaG9sZGVycyk7XG4gICAgICAgIGNvbnN0IHZlcmIgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0VG9CZUluUGFzdFRlbnNlKHBsYWNlaG9sZGVycyk7XG5cbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcoV0FSTklOR19NRVNTQUdFUy5wcm9ibGVtYXRpY1BhdGhQYXR0ZXJuUGxhY2Vob2xkZXJGb3JWaWRlb1JlY29yZGluZywgc3VmZml4LCBwcm9ibGVtYXRpY1BsYWNlaG9sZGVyTGlzdFN0ciwgc3VmZml4LCB2ZXJiKTtcbiAgICB9XG5cbiAgICBfZ2V0VGFyZ2V0VmlkZW9QYXRoICh0ZXN0UnVuUmVjb3JkZXIpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IE9iamVjdC5hc3NpZ24odGVzdFJ1blJlY29yZGVyLnRlc3RSdW5JbmZvLCB7IG5vdzogdGhpcy50aW1lU3RhbXAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRmlsZSkge1xuICAgICAgICAgICAgZGF0YS50ZXN0SW5kZXggPSBudWxsO1xuICAgICAgICAgICAgZGF0YS5maXh0dXJlID0gbnVsbDtcbiAgICAgICAgICAgIGRhdGEudGVzdCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXRoUGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybih0aGlzLmN1c3RvbVBhdGhQYXR0ZXJuLCBWSURFT19FWFRFTlNJT04sIGRhdGEpO1xuXG4gICAgICAgIHBhdGhQYXR0ZXJuLm9uKCdwcm9ibGVtYXRpYy1wbGFjZWhvbGRlcnMtZm91bmQnLCAoeyBwbGFjZWhvbGRlcnMgfSkgPT4gdGhpcy5fYWRkUHJvYmxlbWF0aWNQbGFjZWhvbGRlcnNXYXJuaW5nKHBsYWNlaG9sZGVycykpO1xuXG4gICAgICAgIHJldHVybiBqb2luKHRoaXMuYmFzZVBhdGgsIHBhdGhQYXR0ZXJuLmdldFBhdGgoKSk7XG4gICAgfVxuXG4gICAgX2NvbmNhdFZpZGVvICh0YXJnZXRWaWRlb1BhdGgsIHsgdGVtcFZpZGVvUGF0aCwgdGVtcE1lcmdlQ29uZmlnUGF0aCwgdG1wTWVyZ2VOYW1lIH0pIHtcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpcnN0RmlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0ZW1wTWVyZ2VDb25maWdQYXRoLCBgXG4gICAgICAgICAgICBmaWxlICcke3RhcmdldFZpZGVvUGF0aH0nXG4gICAgICAgICAgICBmaWxlICcke3RlbXBWaWRlb1BhdGh9J1xuICAgICAgICBgKTtcblxuICAgICAgICBzcGF3blN5bmModGhpcy5mZm1wZWdQYXRoLCBbJy15JywgJy1mJywgJ2NvbmNhdCcsICctc2FmZScsICcwJywgJy1pJywgdGVtcE1lcmdlQ29uZmlnUGF0aCwgJy1jJywgJ2NvcHknLCB0bXBNZXJnZU5hbWVdLCB7IHN0ZGlvOiAnaWdub3JlJyB9KTtcbiAgICAgICAgZnMuY29weUZpbGVTeW5jKHRtcE1lcmdlTmFtZSwgdGVtcFZpZGVvUGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX29uQnJvd3NlckpvYlN0YXJ0ICgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy50ZW1wRGlyZWN0b3J5LmluaXQoKTtcbiAgICB9XG5cbiAgICBhc3luYyBfb25Ccm93c2VySm9iRG9uZSAoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudGVtcERpcmVjdG9yeS5kaXNwb3NlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX29uVGVzdFJ1bkNyZWF0ZSAodGVzdFJ1bkluZm8pIHtcbiAgICAgICAgaWYgKHRlc3RSdW5JbmZvLmxlZ2FjeSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCB0aGlzLnRlbXBEaXJlY3RvcnlJbml0aWFsaXplZFByb21pc2U7XG5cbiAgICAgICAgY29uc3QgcmVjb3JkaW5nT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHBhdGg6ICAgICAgICAgICAgdGhpcy50ZW1wRGlyZWN0b3J5LnBhdGgsXG4gICAgICAgICAgICBmZm1wZWdQYXRoOiAgICAgIHRoaXMuZmZtcGVnUGF0aCxcbiAgICAgICAgICAgIGVuY29kaW5nT3B0aW9uczogdGhpcy5lbmNvZGluZ09wdGlvbnMsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGVzdFJ1blZpZGVvUmVjb3JkZXIgPSB0aGlzLl9jcmVhdGVUZXN0UnVuVmlkZW9SZWNvcmRlcih0ZXN0UnVuSW5mbywgcmVjb3JkaW5nT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGlzVmlkZW9TdXBwb3J0ZWQgICAgID0gYXdhaXQgdGVzdFJ1blZpZGVvUmVjb3JkZXIuaXNWaWRlb1N1cHBvcnRlZCgpO1xuXG4gICAgICAgIGlmICghaXNWaWRlb1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcoV0FSTklOR19NRVNTQUdFUy52aWRlb05vdFN1cHBvcnRlZEJ5QnJvd3NlciwgdGVzdFJ1blZpZGVvUmVjb3JkZXIudGVzdFJ1bkluZm8uYWxpYXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNWaWRlb0VuYWJsZWQgPSBhd2FpdCB0ZXN0UnVuVmlkZW9SZWNvcmRlci5pc1ZpZGVvRW5hYmxlZCgpO1xuXG4gICAgICAgIGlmICghaXNWaWRlb0VuYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgdGVzdFJ1blZpZGVvUmVjb3JkZXIuaW5pdCgpO1xuXG4gICAgICAgIHRoaXMudGVzdFJ1blZpZGVvUmVjb3JkZXJzW3Rlc3RSdW5WaWRlb1JlY29yZGVyLmluZGV4XSA9IHRlc3RSdW5WaWRlb1JlY29yZGVyO1xuICAgIH1cblxuICAgIF9jcmVhdGVUZXN0UnVuVmlkZW9SZWNvcmRlciAodGVzdFJ1bkluZm8sIHJlY29yZGluZ09wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXN0UnVuVmlkZW9SZWNvcmRlcih0ZXN0UnVuSW5mbywgcmVjb3JkaW5nT3B0aW9ucywgdGhpcy53YXJuaW5nTG9nKTtcbiAgICB9XG5cbiAgICBhc3luYyBfb25UZXN0UnVuUmVhZHkgKHsgaW5kZXggfSkge1xuICAgICAgICBjb25zdCB0ZXN0UnVuUmVjb3JkZXIgPSB0aGlzLnRlc3RSdW5WaWRlb1JlY29yZGVyc1tpbmRleF07XG5cbiAgICAgICAgaWYgKCF0ZXN0UnVuUmVjb3JkZXIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgdGVzdFJ1blJlY29yZGVyLnN0YXJ0Q2FwdHVyaW5nKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX29uVGVzdFJ1blJlc3RhcnQgKHsgaW5kZXggfSkge1xuICAgICAgICBjb25zdCB0ZXN0UnVuUmVjb3JkZXIgPSB0aGlzLnRlc3RSdW5WaWRlb1JlY29yZGVyc1tpbmRleF07XG5cbiAgICAgICAgaWYgKCF0ZXN0UnVuUmVjb3JkZXIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGVzdFJ1blJlY29yZGVyLm9uVGVzdFJ1blJlc3RhcnQoKTtcbiAgICB9XG5cbiAgICBhc3luYyBfb25UZXN0UnVuQmVmb3JlRG9uZSAoeyBpbmRleCB9KSB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5SZWNvcmRlciA9IHRoaXMudGVzdFJ1blZpZGVvUmVjb3JkZXJzW2luZGV4XTtcblxuICAgICAgICBpZiAoIXRlc3RSdW5SZWNvcmRlcilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBkZWxldGUgdGhpcy50ZXN0UnVuVmlkZW9SZWNvcmRlcnNbaW5kZXhdO1xuXG4gICAgICAgIGF3YWl0IHRlc3RSdW5SZWNvcmRlci5maW5pc2hDYXB0dXJpbmcoKTtcblxuICAgICAgICBpZiAodGhpcy5mYWlsZWRPbmx5ICYmICF0ZXN0UnVuUmVjb3JkZXIuaGFzRXJyb3JzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHZpZGVvUGF0aCA9IHRoaXMuX2dldFRhcmdldFZpZGVvUGF0aCh0ZXN0UnVuUmVjb3JkZXIpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX3NhdmVGaWxlcyh0ZXN0UnVuUmVjb3JkZXIsIHZpZGVvUGF0aCk7XG5cbiAgICAgICAgY29uc3QgdGVzdFJ1blZpZGVvU2F2ZWRFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICB0ZXN0UnVuOiAgICB0ZXN0UnVuUmVjb3JkZXIudGVzdFJ1bixcbiAgICAgICAgICAgIHZpZGVvUGF0aCxcbiAgICAgICAgICAgIHNpbmdsZUZpbGU6ICEhdGhpcy5zaW5nbGVGaWxlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy5zaW5nbGVGaWxlKVxuICAgICAgICAgICAgdGVzdFJ1blZpZGVvU2F2ZWRFdmVudEFyZ3MudGltZWNvZGVzID0gdGVzdFJ1blJlY29yZGVyLnRlc3RSdW5JbmZvLnRpbWVjb2RlcztcblxuICAgICAgICB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXZpZGVvLXNhdmVkJywgdGVzdFJ1blZpZGVvU2F2ZWRFdmVudEFyZ3MpO1xuICAgIH1cblxuICAgIGFzeW5jIF9zYXZlRmlsZXMgKHRlc3RSdW5SZWNvcmRlciwgdmlkZW9QYXRoKSB7XG4gICAgICAgIGF3YWl0IG1ha2VEaXIoZGlybmFtZSh2aWRlb1BhdGgpKTtcblxuICAgICAgICBpZiAodGhpcy5zaW5nbGVGaWxlKVxuICAgICAgICAgICAgdGhpcy5fY29uY2F0VmlkZW8odmlkZW9QYXRoLCB0ZXN0UnVuUmVjb3JkZXIudGVtcEZpbGVzKTtcblxuICAgICAgICBmcy5jb3B5RmlsZVN5bmModGVzdFJ1blJlY29yZGVyLnRlbXBGaWxlcy50ZW1wVmlkZW9QYXRoLCB2aWRlb1BhdGgpO1xuICAgIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "testcafe",
|
|
3
3
|
"description": "Automated browser testing for the modern web development stack.",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "3.4.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Developer Express Inc.",
|
|
8
8
|
"url": "https://www.devexpress.com/"
|
|
@@ -61,34 +61,33 @@
|
|
|
61
61
|
"prepublishOnly": "publish-please guard"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@babel/core": "^7.
|
|
65
|
-
"@babel/plugin-proposal-async-generator-functions": "^7.
|
|
66
|
-
"@babel/plugin-proposal-class-properties": "^7.
|
|
67
|
-
"@babel/plugin-proposal-decorators": "^7.
|
|
68
|
-
"@babel/plugin-proposal-object-rest-spread": "^7.
|
|
69
|
-
"@babel/plugin-proposal-private-methods": "^7.
|
|
64
|
+
"@babel/core": "^7.23.2",
|
|
65
|
+
"@babel/plugin-proposal-async-generator-functions": "^7.20.7",
|
|
66
|
+
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
67
|
+
"@babel/plugin-proposal-decorators": "^7.23.2",
|
|
68
|
+
"@babel/plugin-proposal-object-rest-spread": "^7.20.7",
|
|
69
|
+
"@babel/plugin-proposal-private-methods": "^7.18.6",
|
|
70
70
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
71
71
|
"@babel/plugin-syntax-import-meta": "^7.10.4",
|
|
72
|
-
"@babel/plugin-transform-async-to-generator": "^7.
|
|
73
|
-
"@babel/plugin-transform-exponentiation-operator": "^7.
|
|
74
|
-
"@babel/plugin-transform-for-of": "^7.
|
|
75
|
-
"@babel/plugin-transform-runtime": "^7.
|
|
76
|
-
"@babel/preset-env": "^7.
|
|
77
|
-
"@babel/preset-flow": "^7.
|
|
78
|
-
"@babel/preset-react": "^7.
|
|
79
|
-
"@babel/runtime": "^7.
|
|
72
|
+
"@babel/plugin-transform-async-to-generator": "^7.22.5",
|
|
73
|
+
"@babel/plugin-transform-exponentiation-operator": "^7.22.5",
|
|
74
|
+
"@babel/plugin-transform-for-of": "^7.22.15",
|
|
75
|
+
"@babel/plugin-transform-runtime": "^7.23.2",
|
|
76
|
+
"@babel/preset-env": "^7.23.2",
|
|
77
|
+
"@babel/preset-flow": "^7.22.15",
|
|
78
|
+
"@babel/preset-react": "^7.22.15",
|
|
79
|
+
"@babel/runtime": "^7.23.2",
|
|
80
80
|
"@devexpress/bin-v8-flags-filter": "^1.3.0",
|
|
81
|
-
"@
|
|
81
|
+
"@devexpress/callsite-record": "^4.1.6",
|
|
82
82
|
"@types/node": "^12.20.10",
|
|
83
83
|
"async-exit-hook": "^1.1.2",
|
|
84
84
|
"babel-plugin-module-resolver": "^5.0.0",
|
|
85
85
|
"babel-plugin-syntax-trailing-function-commas": "^6.22.0",
|
|
86
86
|
"bowser": "^2.8.1",
|
|
87
87
|
"callsite": "^1.0.0",
|
|
88
|
-
"callsite-record": "^4.0.0",
|
|
89
88
|
"chai": "4.3.4",
|
|
90
89
|
"chalk": "^2.3.0",
|
|
91
|
-
"chrome-remote-interface": "^0.32.
|
|
90
|
+
"chrome-remote-interface": "^0.32.2",
|
|
92
91
|
"coffeescript": "^2.3.1",
|
|
93
92
|
"commander": "^8.3.0",
|
|
94
93
|
"debug": "^4.3.1",
|
|
@@ -100,7 +99,7 @@
|
|
|
100
99
|
"email-validator": "^2.0.4",
|
|
101
100
|
"emittery": "^0.4.1",
|
|
102
101
|
"endpoint-utils": "^1.0.2",
|
|
103
|
-
"error-stack-parser": "^1.
|
|
102
|
+
"error-stack-parser": "^2.1.4",
|
|
104
103
|
"execa": "^4.0.3",
|
|
105
104
|
"get-os-info": "^1.0.2",
|
|
106
105
|
"globby": "^11.0.4",
|
|
@@ -138,12 +137,12 @@
|
|
|
138
137
|
"resolve-cwd": "^1.0.0",
|
|
139
138
|
"resolve-from": "^4.0.0",
|
|
140
139
|
"sanitize-filename": "^1.6.0",
|
|
141
|
-
"semver": "^5.
|
|
140
|
+
"semver": "^7.5.3",
|
|
142
141
|
"set-cookie-parser": "^2.5.1",
|
|
143
142
|
"source-map-support": "^0.5.16",
|
|
144
143
|
"strip-bom": "^2.0.0",
|
|
145
|
-
"testcafe-browser-tools": "2.0.
|
|
146
|
-
"testcafe-hammerhead": "31.
|
|
144
|
+
"testcafe-browser-tools": "2.0.26",
|
|
145
|
+
"testcafe-hammerhead": "31.6.3",
|
|
147
146
|
"testcafe-legacy-api": "5.1.6",
|
|
148
147
|
"testcafe-reporter-json": "^2.1.0",
|
|
149
148
|
"testcafe-reporter-list": "^2.2.0",
|
|
@@ -161,7 +160,7 @@
|
|
|
161
160
|
},
|
|
162
161
|
"devDependencies": {
|
|
163
162
|
"@ffmpeg-installer/ffmpeg": "^1.0.17",
|
|
164
|
-
"@ffprobe-installer/ffprobe": "^1.
|
|
163
|
+
"@ffprobe-installer/ffprobe": "^2.1.1",
|
|
165
164
|
"@rollup/plugin-alias": "^3.1.1",
|
|
166
165
|
"@rollup/plugin-commonjs": "^11.0.2",
|
|
167
166
|
"@rollup/plugin-inject": "^4.0.2",
|
|
@@ -175,7 +174,7 @@
|
|
|
175
174
|
"@types/mime-db": "^1.27.0",
|
|
176
175
|
"@types/mustache": "^0.8.32",
|
|
177
176
|
"@types/prompts": "^2.0.14",
|
|
178
|
-
"@types/semver": "^7.
|
|
177
|
+
"@types/semver": "^7.5.0",
|
|
179
178
|
"@types/set-cookie-parser": "^2.4.2",
|
|
180
179
|
"@types/source-map-support": "^0.5.0",
|
|
181
180
|
"@types/useragent": "^2.1.1",
|
|
@@ -209,7 +208,7 @@
|
|
|
209
208
|
"gulp-git": "^2.4.2",
|
|
210
209
|
"gulp-less": "^4.0.0",
|
|
211
210
|
"gulp-ll-next": "^2.1.0",
|
|
212
|
-
"gulp-mocha-simple": "^
|
|
211
|
+
"gulp-mocha-simple": "^2.0.0",
|
|
213
212
|
"gulp-mustache": "^3.0.1",
|
|
214
213
|
"gulp-prompt": "^1.0.1",
|
|
215
214
|
"gulp-qunit-harness": "^1.0.3",
|
|
@@ -222,7 +221,7 @@
|
|
|
222
221
|
"markdownlint": "^0.19.0",
|
|
223
222
|
"merge-stream": "^1.0.1",
|
|
224
223
|
"minimist": "^1.2.0",
|
|
225
|
-
"mocha-reporter-spec-with-retries": "0.0
|
|
224
|
+
"mocha-reporter-spec-with-retries": "1.0.0",
|
|
226
225
|
"multer": "^1.1.0",
|
|
227
226
|
"npm-auditor": "^1.1.1",
|
|
228
227
|
"open": "^6.4.0",
|
|
@@ -235,7 +234,6 @@
|
|
|
235
234
|
"rollup": "2.16.1",
|
|
236
235
|
"rollup-plugin-typescript2": "^0.32.1",
|
|
237
236
|
"run-sequence": "^1.2.2",
|
|
238
|
-
"saucelabs-connector": "^1.0.0",
|
|
239
237
|
"serve-static": "^1.10.0",
|
|
240
238
|
"sinon": "^7.3.0",
|
|
241
239
|
"stack-chain": "^2.0.0",
|
package/ts-defs/index.d.ts
CHANGED
|
@@ -1510,16 +1510,18 @@ declare module 'testcafe' {
|
|
|
1510
1510
|
* Specifies the fixture hook that is executed before the start of the first test in the fixture.
|
|
1511
1511
|
*
|
|
1512
1512
|
* @param fn - An asynchronous hook function that contains initialization or clean-up code.
|
|
1513
|
-
* @param fn `ctx` -
|
|
1513
|
+
* @param fn `ctx` - An object that you can use to store variables. Accessible in both fixture hooks and test code.
|
|
1514
|
+
* @param fn `info` - An object that contains information about the fixture: its name, metadata and path.
|
|
1514
1515
|
*/
|
|
1515
|
-
before(fn: (ctx: {[key: string]: any}) => Promise<any>): this;
|
|
1516
|
+
before(fn: (ctx: {[key: string]: any}, info: FixtureInfo) => Promise<any>): this;
|
|
1516
1517
|
/**
|
|
1517
1518
|
* Specifies the fixture hook that is executed after the end of the last test in the fixture.
|
|
1518
1519
|
*
|
|
1519
1520
|
* @param fn - An asynchronous hook function that contains initialization or clean-up code.
|
|
1520
|
-
* @param fn `ctx` -
|
|
1521
|
+
* @param fn `ctx` - An object that you can use to store variables. Accessible in both fixture hooks and test code.
|
|
1522
|
+
* @param fn `info` - An object that contains information about the fixture: its name, metadata and path.
|
|
1521
1523
|
*/
|
|
1522
|
-
after(fn: (ctx: {[key: string]: any}) => Promise<any>): this;
|
|
1524
|
+
after(fn: (ctx: {[key: string]: any}, info: FixtureInfo) => Promise<any>): this;
|
|
1523
1525
|
/**
|
|
1524
1526
|
* Specifies the hook that is executed on the start of each test in the fixture.
|
|
1525
1527
|
*
|
|
@@ -1552,19 +1554,23 @@ declare module 'testcafe' {
|
|
|
1552
1554
|
* Disables page reloading which would happen right before each test in this fixture.
|
|
1553
1555
|
*/
|
|
1554
1556
|
disablePageReloads: this;
|
|
1557
|
+
/**
|
|
1558
|
+
* Disables the global concurrency setting for this fixture.
|
|
1559
|
+
*/
|
|
1560
|
+
disableConcurrency: this;
|
|
1555
1561
|
/**
|
|
1556
1562
|
* Specifies the additional information for all tests in the fixture. This information can be used in reports.
|
|
1557
1563
|
*
|
|
1558
1564
|
* @param key - The name of the metadata entry
|
|
1559
1565
|
* @param value - The value of the metadata entry
|
|
1560
1566
|
*/
|
|
1561
|
-
meta(key: string, value:
|
|
1567
|
+
meta(key: string, value: unknown): this;
|
|
1562
1568
|
/**
|
|
1563
1569
|
* Specifies the additional information for all tests in the fixture. This information can be used in reports.
|
|
1564
1570
|
*
|
|
1565
1571
|
* @param data - Key-value pairs
|
|
1566
1572
|
*/
|
|
1567
|
-
meta(data:
|
|
1573
|
+
meta(data: Metadata): this;
|
|
1568
1574
|
/**
|
|
1569
1575
|
* Attaches hooks to all tests in the fixture
|
|
1570
1576
|
*
|
|
@@ -1646,13 +1652,13 @@ declare module 'testcafe' {
|
|
|
1646
1652
|
* @param key - The name of the metadata entry
|
|
1647
1653
|
* @param value - The value of the metadata entry
|
|
1648
1654
|
*/
|
|
1649
|
-
meta(key: string, value:
|
|
1655
|
+
meta(key: string, value: unknown): this;
|
|
1650
1656
|
/**
|
|
1651
1657
|
* Specifies the additional information for the test. This information can be used in reports.
|
|
1652
1658
|
*
|
|
1653
1659
|
* @param data - Key-value pairs
|
|
1654
1660
|
*/
|
|
1655
|
-
meta(data:
|
|
1661
|
+
meta(data: Metadata): this;
|
|
1656
1662
|
/**
|
|
1657
1663
|
* Attaches hooks to the test
|
|
1658
1664
|
*
|
|
@@ -1753,6 +1759,10 @@ declare module 'testcafe' {
|
|
|
1753
1759
|
* Formatted string with the browser's and operating system's name and version.
|
|
1754
1760
|
*/
|
|
1755
1761
|
prettyUserAgent: string;
|
|
1762
|
+
/**
|
|
1763
|
+
* Indicates whether TestCafe uses native automation.
|
|
1764
|
+
*/
|
|
1765
|
+
nativeAutomation: boolean;
|
|
1756
1766
|
}
|
|
1757
1767
|
|
|
1758
1768
|
type WindowDescriptor = unknown;
|
|
@@ -1792,6 +1802,14 @@ declare module 'testcafe' {
|
|
|
1792
1802
|
* Returns an object that contains registered custom actions.
|
|
1793
1803
|
*/
|
|
1794
1804
|
readonly customActions: CustomActions;
|
|
1805
|
+
/**
|
|
1806
|
+
* Returns information about the current test.
|
|
1807
|
+
*/
|
|
1808
|
+
readonly test: TestInfo;
|
|
1809
|
+
/**
|
|
1810
|
+
* Returns information about the current fixture.
|
|
1811
|
+
*/
|
|
1812
|
+
readonly fixture: FixtureInfo;
|
|
1795
1813
|
/**
|
|
1796
1814
|
* Dispatches an event over a specified webpage element.
|
|
1797
1815
|
*
|
|
@@ -2413,6 +2431,22 @@ declare module 'testcafe' {
|
|
|
2413
2431
|
pageUrl?: string | RegExp;
|
|
2414
2432
|
}
|
|
2415
2433
|
|
|
2434
|
+
// // Test Info
|
|
2435
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
2436
|
+
|
|
2437
|
+
type Metadata = Record<string, unknown>;
|
|
2438
|
+
|
|
2439
|
+
interface TestInfo {
|
|
2440
|
+
name: string;
|
|
2441
|
+
meta: Metadata;
|
|
2442
|
+
}
|
|
2443
|
+
|
|
2444
|
+
interface FixtureInfo {
|
|
2445
|
+
name: string;
|
|
2446
|
+
meta: Metadata;
|
|
2447
|
+
path: string;
|
|
2448
|
+
}
|
|
2449
|
+
|
|
2416
2450
|
type TlsOptions = import('tls').TlsOptions;
|
|
2417
2451
|
|
|
2418
2452
|
interface AppOptions {
|
|
@@ -2448,8 +2482,6 @@ declare module 'testcafe' {
|
|
|
2448
2482
|
|
|
2449
2483
|
type ClientScriptOptions = ClientScript | ClientScript [];
|
|
2450
2484
|
|
|
2451
|
-
type Metadata = Record<string, string>;
|
|
2452
|
-
|
|
2453
2485
|
/**
|
|
2454
2486
|
* Allows you to select which tests should be run.
|
|
2455
2487
|
*
|
|
@@ -2673,9 +2705,9 @@ declare module 'testcafe' {
|
|
|
2673
2705
|
*/
|
|
2674
2706
|
disableMultipleWindows: boolean;
|
|
2675
2707
|
/**
|
|
2676
|
-
*
|
|
2708
|
+
* Disables native automation of Chromium-based browsers. Use this option to speed up browser automation and increase test stability.
|
|
2677
2709
|
*/
|
|
2678
|
-
|
|
2710
|
+
disableNativeAutomation: boolean;
|
|
2679
2711
|
}
|
|
2680
2712
|
|
|
2681
2713
|
interface StartOptions {
|
|
@@ -2956,6 +2988,11 @@ declare module 'testcafe' {
|
|
|
2956
2988
|
*/
|
|
2957
2989
|
export const userVariables: UserVariables;
|
|
2958
2990
|
|
|
2991
|
+
/**
|
|
2992
|
+
* String which represents TestCafe version
|
|
2993
|
+
*/
|
|
2994
|
+
export const version: string;
|
|
2995
|
+
|
|
2959
2996
|
export const fixture: FixtureFn;
|
|
2960
2997
|
export const test: TestFn;
|
|
2961
2998
|
|
package/ts-defs/selectors.d.ts
CHANGED
|
@@ -1508,16 +1508,18 @@ declare module 'testcafe' {
|
|
|
1508
1508
|
* Specifies the fixture hook that is executed before the start of the first test in the fixture.
|
|
1509
1509
|
*
|
|
1510
1510
|
* @param fn - An asynchronous hook function that contains initialization or clean-up code.
|
|
1511
|
-
* @param fn `ctx` -
|
|
1511
|
+
* @param fn `ctx` - An object that you can use to store variables. Accessible in both fixture hooks and test code.
|
|
1512
|
+
* @param fn `info` - An object that contains information about the fixture: its name, metadata and path.
|
|
1512
1513
|
*/
|
|
1513
|
-
before(fn: (ctx: {[key: string]: any}) => Promise<any>): this;
|
|
1514
|
+
before(fn: (ctx: {[key: string]: any}, info: FixtureInfo) => Promise<any>): this;
|
|
1514
1515
|
/**
|
|
1515
1516
|
* Specifies the fixture hook that is executed after the end of the last test in the fixture.
|
|
1516
1517
|
*
|
|
1517
1518
|
* @param fn - An asynchronous hook function that contains initialization or clean-up code.
|
|
1518
|
-
* @param fn `ctx` -
|
|
1519
|
+
* @param fn `ctx` - An object that you can use to store variables. Accessible in both fixture hooks and test code.
|
|
1520
|
+
* @param fn `info` - An object that contains information about the fixture: its name, metadata and path.
|
|
1519
1521
|
*/
|
|
1520
|
-
after(fn: (ctx: {[key: string]: any}) => Promise<any>): this;
|
|
1522
|
+
after(fn: (ctx: {[key: string]: any}, info: FixtureInfo) => Promise<any>): this;
|
|
1521
1523
|
/**
|
|
1522
1524
|
* Specifies the hook that is executed on the start of each test in the fixture.
|
|
1523
1525
|
*
|
|
@@ -1550,19 +1552,23 @@ declare module 'testcafe' {
|
|
|
1550
1552
|
* Disables page reloading which would happen right before each test in this fixture.
|
|
1551
1553
|
*/
|
|
1552
1554
|
disablePageReloads: this;
|
|
1555
|
+
/**
|
|
1556
|
+
* Disables the global concurrency setting for this fixture.
|
|
1557
|
+
*/
|
|
1558
|
+
disableConcurrency: this;
|
|
1553
1559
|
/**
|
|
1554
1560
|
* Specifies the additional information for all tests in the fixture. This information can be used in reports.
|
|
1555
1561
|
*
|
|
1556
1562
|
* @param key - The name of the metadata entry
|
|
1557
1563
|
* @param value - The value of the metadata entry
|
|
1558
1564
|
*/
|
|
1559
|
-
meta(key: string, value:
|
|
1565
|
+
meta(key: string, value: unknown): this;
|
|
1560
1566
|
/**
|
|
1561
1567
|
* Specifies the additional information for all tests in the fixture. This information can be used in reports.
|
|
1562
1568
|
*
|
|
1563
1569
|
* @param data - Key-value pairs
|
|
1564
1570
|
*/
|
|
1565
|
-
meta(data:
|
|
1571
|
+
meta(data: Metadata): this;
|
|
1566
1572
|
/**
|
|
1567
1573
|
* Attaches hooks to all tests in the fixture
|
|
1568
1574
|
*
|
|
@@ -1644,13 +1650,13 @@ declare module 'testcafe' {
|
|
|
1644
1650
|
* @param key - The name of the metadata entry
|
|
1645
1651
|
* @param value - The value of the metadata entry
|
|
1646
1652
|
*/
|
|
1647
|
-
meta(key: string, value:
|
|
1653
|
+
meta(key: string, value: unknown): this;
|
|
1648
1654
|
/**
|
|
1649
1655
|
* Specifies the additional information for the test. This information can be used in reports.
|
|
1650
1656
|
*
|
|
1651
1657
|
* @param data - Key-value pairs
|
|
1652
1658
|
*/
|
|
1653
|
-
meta(data:
|
|
1659
|
+
meta(data: Metadata): this;
|
|
1654
1660
|
/**
|
|
1655
1661
|
* Attaches hooks to the test
|
|
1656
1662
|
*
|
|
@@ -1751,6 +1757,10 @@ declare module 'testcafe' {
|
|
|
1751
1757
|
* Formatted string with the browser's and operating system's name and version.
|
|
1752
1758
|
*/
|
|
1753
1759
|
prettyUserAgent: string;
|
|
1760
|
+
/**
|
|
1761
|
+
* Indicates whether TestCafe uses native automation.
|
|
1762
|
+
*/
|
|
1763
|
+
nativeAutomation: boolean;
|
|
1754
1764
|
}
|
|
1755
1765
|
|
|
1756
1766
|
type WindowDescriptor = unknown;
|
|
@@ -1790,6 +1800,14 @@ declare module 'testcafe' {
|
|
|
1790
1800
|
* Returns an object that contains registered custom actions.
|
|
1791
1801
|
*/
|
|
1792
1802
|
readonly customActions: CustomActions;
|
|
1803
|
+
/**
|
|
1804
|
+
* Returns information about the current test.
|
|
1805
|
+
*/
|
|
1806
|
+
readonly test: TestInfo;
|
|
1807
|
+
/**
|
|
1808
|
+
* Returns information about the current fixture.
|
|
1809
|
+
*/
|
|
1810
|
+
readonly fixture: FixtureInfo;
|
|
1793
1811
|
/**
|
|
1794
1812
|
* Dispatches an event over a specified webpage element.
|
|
1795
1813
|
*
|
|
@@ -2411,6 +2429,22 @@ declare module 'testcafe' {
|
|
|
2411
2429
|
pageUrl?: string | RegExp;
|
|
2412
2430
|
}
|
|
2413
2431
|
|
|
2432
|
+
// // Test Info
|
|
2433
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
2434
|
+
|
|
2435
|
+
type Metadata = Record<string, unknown>;
|
|
2436
|
+
|
|
2437
|
+
interface TestInfo {
|
|
2438
|
+
name: string;
|
|
2439
|
+
meta: Metadata;
|
|
2440
|
+
}
|
|
2441
|
+
|
|
2442
|
+
interface FixtureInfo {
|
|
2443
|
+
name: string;
|
|
2444
|
+
meta: Metadata;
|
|
2445
|
+
path: string;
|
|
2446
|
+
}
|
|
2447
|
+
|
|
2414
2448
|
/**
|
|
2415
2449
|
* Creates a selector.
|
|
2416
2450
|
*
|
|
@@ -1508,16 +1508,18 @@ declare module 'testcafe' {
|
|
|
1508
1508
|
* Specifies the fixture hook that is executed before the start of the first test in the fixture.
|
|
1509
1509
|
*
|
|
1510
1510
|
* @param fn - An asynchronous hook function that contains initialization or clean-up code.
|
|
1511
|
-
* @param fn `ctx` -
|
|
1511
|
+
* @param fn `ctx` - An object that you can use to store variables. Accessible in both fixture hooks and test code.
|
|
1512
|
+
* @param fn `info` - An object that contains information about the fixture: its name, metadata and path.
|
|
1512
1513
|
*/
|
|
1513
|
-
before(fn: (ctx: {[key: string]: any}) => Promise<any>): this;
|
|
1514
|
+
before(fn: (ctx: {[key: string]: any}, info: FixtureInfo) => Promise<any>): this;
|
|
1514
1515
|
/**
|
|
1515
1516
|
* Specifies the fixture hook that is executed after the end of the last test in the fixture.
|
|
1516
1517
|
*
|
|
1517
1518
|
* @param fn - An asynchronous hook function that contains initialization or clean-up code.
|
|
1518
|
-
* @param fn `ctx` -
|
|
1519
|
+
* @param fn `ctx` - An object that you can use to store variables. Accessible in both fixture hooks and test code.
|
|
1520
|
+
* @param fn `info` - An object that contains information about the fixture: its name, metadata and path.
|
|
1519
1521
|
*/
|
|
1520
|
-
after(fn: (ctx: {[key: string]: any}) => Promise<any>): this;
|
|
1522
|
+
after(fn: (ctx: {[key: string]: any}, info: FixtureInfo) => Promise<any>): this;
|
|
1521
1523
|
/**
|
|
1522
1524
|
* Specifies the hook that is executed on the start of each test in the fixture.
|
|
1523
1525
|
*
|
|
@@ -1550,19 +1552,23 @@ declare module 'testcafe' {
|
|
|
1550
1552
|
* Disables page reloading which would happen right before each test in this fixture.
|
|
1551
1553
|
*/
|
|
1552
1554
|
disablePageReloads: this;
|
|
1555
|
+
/**
|
|
1556
|
+
* Disables the global concurrency setting for this fixture.
|
|
1557
|
+
*/
|
|
1558
|
+
disableConcurrency: this;
|
|
1553
1559
|
/**
|
|
1554
1560
|
* Specifies the additional information for all tests in the fixture. This information can be used in reports.
|
|
1555
1561
|
*
|
|
1556
1562
|
* @param key - The name of the metadata entry
|
|
1557
1563
|
* @param value - The value of the metadata entry
|
|
1558
1564
|
*/
|
|
1559
|
-
meta(key: string, value:
|
|
1565
|
+
meta(key: string, value: unknown): this;
|
|
1560
1566
|
/**
|
|
1561
1567
|
* Specifies the additional information for all tests in the fixture. This information can be used in reports.
|
|
1562
1568
|
*
|
|
1563
1569
|
* @param data - Key-value pairs
|
|
1564
1570
|
*/
|
|
1565
|
-
meta(data:
|
|
1571
|
+
meta(data: Metadata): this;
|
|
1566
1572
|
/**
|
|
1567
1573
|
* Attaches hooks to all tests in the fixture
|
|
1568
1574
|
*
|
|
@@ -1644,13 +1650,13 @@ declare module 'testcafe' {
|
|
|
1644
1650
|
* @param key - The name of the metadata entry
|
|
1645
1651
|
* @param value - The value of the metadata entry
|
|
1646
1652
|
*/
|
|
1647
|
-
meta(key: string, value:
|
|
1653
|
+
meta(key: string, value: unknown): this;
|
|
1648
1654
|
/**
|
|
1649
1655
|
* Specifies the additional information for the test. This information can be used in reports.
|
|
1650
1656
|
*
|
|
1651
1657
|
* @param data - Key-value pairs
|
|
1652
1658
|
*/
|
|
1653
|
-
meta(data:
|
|
1659
|
+
meta(data: Metadata): this;
|
|
1654
1660
|
/**
|
|
1655
1661
|
* Attaches hooks to the test
|
|
1656
1662
|
*
|
|
@@ -1751,6 +1757,10 @@ declare module 'testcafe' {
|
|
|
1751
1757
|
* Formatted string with the browser's and operating system's name and version.
|
|
1752
1758
|
*/
|
|
1753
1759
|
prettyUserAgent: string;
|
|
1760
|
+
/**
|
|
1761
|
+
* Indicates whether TestCafe uses native automation.
|
|
1762
|
+
*/
|
|
1763
|
+
nativeAutomation: boolean;
|
|
1754
1764
|
}
|
|
1755
1765
|
|
|
1756
1766
|
type WindowDescriptor = unknown;
|
|
@@ -1790,6 +1800,14 @@ declare module 'testcafe' {
|
|
|
1790
1800
|
* Returns an object that contains registered custom actions.
|
|
1791
1801
|
*/
|
|
1792
1802
|
readonly customActions: CustomActions;
|
|
1803
|
+
/**
|
|
1804
|
+
* Returns information about the current test.
|
|
1805
|
+
*/
|
|
1806
|
+
readonly test: TestInfo;
|
|
1807
|
+
/**
|
|
1808
|
+
* Returns information about the current fixture.
|
|
1809
|
+
*/
|
|
1810
|
+
readonly fixture: FixtureInfo;
|
|
1793
1811
|
/**
|
|
1794
1812
|
* Dispatches an event over a specified webpage element.
|
|
1795
1813
|
*
|
|
@@ -2411,6 +2429,22 @@ declare module 'testcafe' {
|
|
|
2411
2429
|
pageUrl?: string | RegExp;
|
|
2412
2430
|
}
|
|
2413
2431
|
|
|
2432
|
+
// // Test Info
|
|
2433
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
2434
|
+
|
|
2435
|
+
type Metadata = Record<string, unknown>;
|
|
2436
|
+
|
|
2437
|
+
interface TestInfo {
|
|
2438
|
+
name: string;
|
|
2439
|
+
meta: Metadata;
|
|
2440
|
+
}
|
|
2441
|
+
|
|
2442
|
+
interface FixtureInfo {
|
|
2443
|
+
name: string;
|
|
2444
|
+
meta: Metadata;
|
|
2445
|
+
path: string;
|
|
2446
|
+
}
|
|
2447
|
+
|
|
2414
2448
|
/**
|
|
2415
2449
|
* Creates a selector.
|
|
2416
2450
|
*
|
|
@@ -2460,6 +2494,11 @@ declare module 'testcafe' {
|
|
|
2460
2494
|
*/
|
|
2461
2495
|
export const userVariables: UserVariables;
|
|
2462
2496
|
|
|
2497
|
+
/**
|
|
2498
|
+
* String which represents TestCafe version
|
|
2499
|
+
*/
|
|
2500
|
+
export const version: string;
|
|
2501
|
+
|
|
2463
2502
|
export const fixture: FixtureFn;
|
|
2464
2503
|
export const test: TestFn;
|
|
2465
2504
|
}
|
|
@@ -2514,6 +2553,11 @@ declare module 'testcafe' {
|
|
|
2514
2553
|
*/
|
|
2515
2554
|
export const userVariables: UserVariables;
|
|
2516
2555
|
|
|
2556
|
+
/**
|
|
2557
|
+
* String which represents TestCafe version
|
|
2558
|
+
*/
|
|
2559
|
+
export const version: string;
|
|
2560
|
+
|
|
2517
2561
|
export const fixture: FixtureFn;
|
|
2518
2562
|
export const test: TestFn;
|
|
2519
2563
|
}
|