testcafe 2.6.0 → 2.6.1
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/CHANGELOG.md +21 -0
- package/bin/testcafe-with-v8-flag-filter.js +10 -16
- package/lib/api/exportable-lib/index.js +1 -11
- package/lib/api/structure/test.js +4 -11
- package/lib/api/test-controller/index.js +3 -10
- package/lib/api/test-run-tracker.js +1 -1
- package/lib/assertions/executor.js +2 -11
- package/lib/browser/connection/gateway/index.js +3 -4
- package/lib/cli/argument-parser/index.js +1 -3
- package/lib/cli/cli.js +3 -11
- package/lib/client/automation/index.js +49 -36
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.js +13 -5
- package/lib/client/core/index.js +14 -8
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/driver/index.js +19 -20
- package/lib/client/driver/index.min.js +1 -1
- package/lib/compiler/babel/load-libs.js +3 -3
- package/lib/compiler/compilers.js +6 -6
- package/lib/compiler/index.js +3 -3
- package/lib/compiler/interfaces.js +1 -1
- package/lib/compiler/test-file/add-export-api.js +3 -3
- package/lib/compiler/test-file/api-based.js +5 -34
- package/lib/compiler/test-file/formats/es-next/compiler.js +4 -4
- package/lib/compiler/test-file/formats/typescript/compiler.js +5 -5
- package/lib/configuration/option-names.js +1 -2
- package/lib/errors/runtime/templates.js +1 -2
- package/lib/errors/types.js +2 -3
- package/lib/index.js +1 -3
- package/lib/live/bootstrapper.js +3 -3
- package/lib/live/test-runner.js +5 -5
- package/lib/native-automation/add-custom-debug-formatters.js +3 -2
- package/lib/native-automation/client/event-descriptor.js +11 -5
- package/lib/native-automation/client/input.js +3 -7
- package/lib/native-automation/request-hooks/event-provider.js +4 -1
- package/lib/native-automation/request-pipeline/context-info.js +4 -1
- package/lib/native-automation/request-pipeline/index.js +39 -19
- package/lib/native-automation/request-pipeline/safe-api.js +10 -7
- package/lib/native-automation/request-pipeline/special-handlers.js +16 -13
- package/lib/native-automation/resource-injector.js +7 -7
- package/lib/native-automation/types.js +1 -1
- package/lib/native-automation/utils/cdp.js +3 -2
- package/lib/role/role.js +4 -39
- package/lib/runner/bootstrapper.js +4 -11
- package/lib/runner/browser-job.js +4 -5
- package/lib/runner/fixture-hook-controller.js +1 -7
- package/lib/runner/index.js +6 -53
- package/lib/runner/interfaces.js +1 -1
- package/lib/runner/task/index.js +2 -4
- package/lib/runner/test-run-controller.js +2 -4
- package/lib/test-run/bookmark.js +5 -23
- package/lib/test-run/commands/service.js +2 -3
- package/lib/test-run/commands/utils.js +4 -2
- package/lib/test-run/index.js +9 -132
- package/lib/testcafe.js +1 -9
- package/lib/utils/debug-loggers.js +4 -2
- package/lib/utils/parse-user-agent.js +17 -2
- package/package.json +3 -4
- package/lib/compiler/test-file/test-file-temp-variable-name.js +0 -6
- package/lib/dashboard/config-storage.js +0 -26
- package/lib/dashboard/connector.js +0 -84
- package/lib/dashboard/documentation-url.js +0 -6
- package/lib/dashboard/formatting.js +0 -26
- package/lib/dashboard/get-dashboard-url.js +0 -10
- package/lib/dashboard/get-default-project-link.js +0 -23
- package/lib/dashboard/get-env-options.js +0 -26
- package/lib/dashboard/index.js +0 -145
- package/lib/dashboard/interfaces.js +0 -3
- package/lib/dashboard/messages.js +0 -21
- package/lib/services/compiler/esm-runtime-holder-name.js +0 -6
- package/lib/services/compiler/host.js +0 -370
- package/lib/services/compiler/interfaces.js +0 -3
- package/lib/services/compiler/io.js +0 -10
- package/lib/services/compiler/protocol.js +0 -17
- package/lib/services/compiler/service-loader.js +0 -18
- package/lib/services/compiler/service.js +0 -362
- package/lib/services/compiler/test-run-proxy.js +0 -157
- package/lib/services/interfaces.js +0 -3
- package/lib/services/process-title.js +0 -10
- package/lib/services/serialization/prepare-options.js +0 -23
- package/lib/services/serialization/replicator/create-replicator.js +0 -58
- package/lib/services/serialization/replicator/interfaces.js +0 -3
- package/lib/services/serialization/replicator/transforms/base-transform.js +0 -16
- package/lib/services/serialization/replicator/transforms/browser-console-messages-transform.js +0 -23
- package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +0 -24
- package/lib/services/serialization/replicator/transforms/command-base-trasform/assertion-command-constructors.js +0 -28
- package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +0 -67
- package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +0 -49
- package/lib/services/serialization/replicator/transforms/command-base-trasform/types.js +0 -3
- package/lib/services/serialization/replicator/transforms/configure-response-event-option-transform.js +0 -21
- package/lib/services/serialization/replicator/transforms/custom-error-transform.js +0 -29
- package/lib/services/serialization/replicator/transforms/function-marker-transform/index.js +0 -21
- package/lib/services/serialization/replicator/transforms/function-marker-transform/marker.js +0 -9
- package/lib/services/serialization/replicator/transforms/promise-marker-transform/index.js +0 -21
- package/lib/services/serialization/replicator/transforms/promise-marker-transform/marker.js +0 -9
- package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +0 -22
- package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/index.js +0 -22
- package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/marker.js +0 -6
- package/lib/services/serialization/replicator/transforms/request-filter-rule-transform.js +0 -23
- package/lib/services/serialization/replicator/transforms/request-hook-event-data-transform.js +0 -41
- package/lib/services/serialization/replicator/transforms/response-mock-transform.js +0 -23
- package/lib/services/serialization/replicator/transforms/role-transform.js +0 -21
- package/lib/services/serialization/replicator/transforms/testcafe-error-list-transform.js +0 -23
- package/lib/services/serialization/replicator/transforms/url-transform.js +0 -23
- package/lib/services/serialization/test-structure.js +0 -91
- package/lib/services/utils/ipc/interfaces.js +0 -29
- package/lib/services/utils/ipc/io.js +0 -109
- package/lib/services/utils/ipc/message.js +0 -84
- package/lib/services/utils/ipc/packet.js +0 -57
- package/lib/services/utils/ipc/proxy.js +0 -94
- package/lib/services/utils/ipc/transport.js +0 -65
- package/lib/services/utils/method-should-not-be-called-error.js +0 -10
package/lib/cli/cli.js
CHANGED
|
@@ -14,7 +14,6 @@ const correct_browsers_and_sources_1 = __importDefault(require("./correct-browse
|
|
|
14
14
|
const __1 = __importDefault(require("../"));
|
|
15
15
|
const debug_1 = __importDefault(require("debug"));
|
|
16
16
|
const log_entry_1 = __importDefault(require("../utils/log-entry"));
|
|
17
|
-
const dashboard_1 = __importDefault(require("../dashboard"));
|
|
18
17
|
const LOGGER = (0, debug_1.default)('testcafe:cli');
|
|
19
18
|
// NOTE: Load the provider pool lazily to reduce startup time
|
|
20
19
|
const lazyRequire = require('import-lazy')(require);
|
|
@@ -60,7 +59,7 @@ async function runTests(argParser) {
|
|
|
60
59
|
const proxyBypass = opts.proxyBypass;
|
|
61
60
|
const configFile = opts.configFile;
|
|
62
61
|
log_1.default.showSpinner();
|
|
63
|
-
const { hostname, ssl, dev,
|
|
62
|
+
const { hostname, ssl, dev, retryTestPages, cache, disableHttp2, v8Flags, disableCrossDomain, esm, } = opts;
|
|
64
63
|
const testCafe = await (0, __1.default)({
|
|
65
64
|
developmentMode: dev,
|
|
66
65
|
isCli: true,
|
|
@@ -68,7 +67,6 @@ async function runTests(argParser) {
|
|
|
68
67
|
port1,
|
|
69
68
|
port2,
|
|
70
69
|
ssl,
|
|
71
|
-
experimentalDebug,
|
|
72
70
|
retryTestPages,
|
|
73
71
|
cache,
|
|
74
72
|
configFile,
|
|
@@ -108,10 +106,6 @@ async function runTests(argParser) {
|
|
|
108
106
|
}
|
|
109
107
|
exit(failed);
|
|
110
108
|
}
|
|
111
|
-
async function runDashboardIntegration(state) {
|
|
112
|
-
await (0, dashboard_1.default)(state);
|
|
113
|
-
exit(0);
|
|
114
|
-
}
|
|
115
109
|
async function listBrowsers(providerName) {
|
|
116
110
|
const provider = await browserProviderPool.getProvider(providerName);
|
|
117
111
|
if (!provider)
|
|
@@ -136,9 +130,7 @@ async function listBrowsers(providerName) {
|
|
|
136
130
|
(0, log_entry_1.default)(LOGGER, process.argv);
|
|
137
131
|
await argParser.parse(process.argv);
|
|
138
132
|
(0, log_entry_1.default)(LOGGER, argParser.opts);
|
|
139
|
-
if (argParser.
|
|
140
|
-
await runDashboardIntegration(argParser.sendReportState);
|
|
141
|
-
else if (argParser.opts.listBrowsers)
|
|
133
|
+
if (argParser.opts.listBrowsers)
|
|
142
134
|
await listBrowsers(argParser.opts.providerName);
|
|
143
135
|
else
|
|
144
136
|
await runTests(argParser);
|
|
@@ -148,4 +140,4 @@ async function listBrowsers(providerName) {
|
|
|
148
140
|
error(err);
|
|
149
141
|
}
|
|
150
142
|
})();
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCx3RUFBa0Q7QUFDbEQsZ0ZBQXVEO0FBQ3ZELGdEQUF3QjtBQUN4QixzRUFBNkM7QUFDN0Msa0dBQXVFO0FBQ3ZFLDRDQUFpQztBQUNqQyxrREFBMEI7QUFDMUIsbUVBQTBDO0FBQzFDLDZEQUFnRDtBQUVoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQUssRUFBQyxjQUFjLENBQUMsQ0FBQztBQUVyQyw2REFBNkQ7QUFDN0QsTUFBTSxXQUFXLEdBQVcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFcEUsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDN0IsSUFBSSxnQkFBZ0IsR0FBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLEdBQWEsS0FBSyxDQUFDO0FBRTlCLFNBQVMsV0FBVyxDQUFFLGdCQUFnQjtJQUNsQyxJQUFJLGlCQUFpQixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDeEMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXhCLGFBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVsQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbkQ7SUFFRCxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRyxDQUFDO1FBQy9CLE9BQU87SUFFWCxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWYsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsSUFBSSxD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QUUsQ0FBQztRQUUxQyxJQUFBLG1CQUFRLEVBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLElBQUEsbUJBQVEsRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxDQUFDLGtCQUFrQjtZQUM1QixNQUFNLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUN4RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNoQyxNQUFNLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDOztZQUVoRCxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sR0FBRyxFQUFFO1FBQ1IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNkO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IsIEFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IENsaUFyZ3VtZW50UGFyc2VyIGZyb20gJy4vYXJndW1lbnQtcGFyc2VyJztcbmltcG9ydCBUZXJtaW5hdGlvbkhhbmRsZXIgZnJvbSAnLi90ZXJtaW5hdGlvbi1oYW5kbGVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2cnO1xuaW1wb3J0IHJlbW90ZXNXaXphcmQgZnJvbSAnLi9yZW1vdGVzLXdpemFyZCc7XG5pbXBvcnQgY29ycmVjdEJyb3dzZXJzQW5kU291cmNlcyBmcm9tICcuL2NvcnJlY3QtYnJvd3NlcnMtYW5kLXNvdXJjZXMnO1xuaW1wb3J0IGNyZWF0ZVRlc3RDYWZlIGZyb20gJy4uLyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGxvZ0VudHJ5IGZyb20gJy4uL3V0aWxzL2xvZy1lbnRyeSc7XG5pbXBvcnQgZGFzaGJvYXJkSW50ZWdyYXRpb24gZnJvbSAnLi4vZGFzaGJvYXJkJztcblxuY29uc3QgTE9HR0VSID0gZGVidWcoJ3Rlc3RjYWZlOmNsaScpO1xuXG4vLyBOT1RFOiBMb2FkIHRoZSBwcm92aWRlciBwb29sIGxhemlseSB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lXG5jb25zdCBsYXp5UmVxdWlyZSAgICAgICAgID0gcmVxdWlyZSgnaW1wb3J0LWxhenknKShyZXF1aXJlKTtcbmNvbnN0IGJyb3dzZXJQcm92aWRlclBvb2wgPSBsYXp5UmVxdWlyZSgnLi4vYnJvd3Nlci9wcm92aWRlci9wb29sJyk7XG5cbmxldCBzaG93TWVzc2FnZU9uRXhpdCA9IHRydWU7XG5sZXQgZXhpdE1lc3NhZ2VTaG93biAgPSBmYWxzZTtcbmxldCBleGl0aW5nICAgICAgICAgICA9IGZhbHNlO1xuXG5mdW5jdGlvbiBleGl0SGFuZGxlciAodGVybWluYXRpb25MZXZlbCkge1xuICAgIGlmIChzaG93TWVzc2FnZU9uRXhpdCAmJiAhZXhpdE1lc3NhZ2VTaG93bikge1xuICAgICAgICBleGl0TWVzc2FnZVNob3duID0gdHJ1ZTtcblxuICAgICAgICBsb2cud3JpdGUoJ1N0b3BwaW5nIFRlc3RDYWZlLi4uJyk7XG5cbiAgICAgICAgcHJvY2Vzcy5vbignZXhpdCcsICgpID0+IGxvZy5oaWRlU3Bpbm5lcih0cnVlKSk7XG4gICAgfVxuXG4gICAgaWYgKGV4aXRpbmcgfHwgdGVybWluYXRpb25MZXZlbCA8IDIpXG4gICAgICAgIHJldHVybjtcblxuICAgIGV4aXRpbmcgPSB0cnVlO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuZnVuY3Rpb24gZXhpdCAoY29kZSkge1xuICAgIGxvZy5oaWRlU3Bpbm5lcih0cnVlKTtcblxuICAgIC8vIE5PVEU6IGdpdmUgYSBwcm9jZXNzIHRpbWUgdG8gZmx1c2ggdGhlIG91dHB1dC5cbiAgICAvLyBJdCdzIG5lY2Vzc2FyeSBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHByb2Nlc3MuZXhpdChjb2RlKSwgMCk7XG59XG5cbmZ1bmN0aW9uIGVycm9yIChlcnIpIHtcbiAgICBsb2cuaGlkZVNwaW5uZXIoKTtcblxuICAgIGxldCBtZXNzYWdlID0gbnVsbDtcblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBHZW5lcmFsRXJyb3IpXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcblxuICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKVxuICAgICAgICBtZXNzYWdlID0gZXJyLmNvbG9yZWRTdGFjaztcblxuICAgIGVsc2VcbiAgICAgICAgbWVzc2FnZSA9IGVyci5zdGFjaztcblxuICAgIGxvZy53cml0ZShjaGFsay5yZWQoJ0VSUk9SICcpICsgbWVzc2FnZSArICdcXG4nKTtcbiAgICBsb2cud3JpdGUoY2hhbGsuZ3JheSgnVHlwZSBcInRlc3RjYWZlIC1oXCIgZm9yIGhlbHAuJykpO1xuXG4gICAgZXhpdCgxKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMgKGFyZ1BhcnNlcikge1xuICAgIGNvbnN0IG9wdHMgICAgICAgID0gYXJnUGFyc2VyLm9wdHM7XG4gICAgY29uc3QgcG9ydDEgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMF07XG4gICAgY29uc3QgcG9ydDIgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMV07XG4gICAgY29uc3QgcHJveHkgICAgICAgPSBvcHRzLnByb3h5O1xuICAgIGNvbnN0IHByb3h5QnlwYXNzID0gb3B0cy5wcm94eUJ5cGFzcztcbiAgICBjb25zdCBjb25maWdGaWxlICA9IG9wdHMuY29uZmlnRmlsZTtcblxuICAgIGxvZy5zaG93U3Bpbm5lcigpO1xuXG4gICAgY29uc3Qge1xuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgc3NsLFxuICAgICAgICBkZXYsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlYnVnLFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICAgICAgZGlzYWJsZUNyb3NzRG9tYWluLFxuICAgICAgICBlc20sXG4gICAgfSA9IG9wdHM7XG5cbiAgICBjb25zdCB0ZXN0Q2FmZSA9IGF3YWl0IGNyZWF0ZVRlc3RDYWZlKHtcbiAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiBkZXYsXG4gICAgICAgIGlzQ2xpOiAgICAgICAgICAgdHJ1ZSxcblxuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgcG9ydDEsXG4gICAgICAgIHBvcnQyLFxuICAgICAgICBzc2wsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlYnVnLFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICAgICAgZGlzYWJsZUNyb3NzRG9tYWluLFxuICAgICAgICBlc20sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMgPSBhd2FpdCBjb3JyZWN0QnJvd3NlcnNBbmRTb3VyY2VzKGFyZ1BhcnNlciwgdGVzdENhZmUuY29uZmlndXJhdGlvbik7XG4gICAgY29uc3QgYXV0b21hdGVkQnJvd3NlcnMgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLmJyb3dzZXJzO1xuICAgIGNvbnN0IHJlbW90ZUJyb3dzZXJzICAgICAgICAgICAgICA9IGF3YWl0IHJlbW90ZXNXaXphcmQodGVzdENhZmUsIGFyZ1BhcnNlci5yZW1vdGVDb3VudCwgb3B0cy5xckNvZGUpO1xuICAgIGNvbnN0IGJyb3dzZXJzICAgICAgICAgICAgICAgICAgICA9IGF1dG9tYXRlZEJyb3dzZXJzLmNvbmNhdChyZW1vdGVCcm93c2Vycyk7XG4gICAgY29uc3Qgc291cmNlcyAgICAgICAgICAgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLnNvdXJjZXM7XG5cbiAgICBjb25zdCBydW5uZXIgPSBvcHRzLmxpdmUgPyB0ZXN0Q2FmZS5jcmVhdGVMaXZlTW9kZVJ1bm5lcigpIDogdGVzdENhZmUuY3JlYXRlUnVubmVyKCk7XG5cbiAgICBsZXQgZmFpbGVkID0gMDtcblxuICAgIHJ1bm5lclxuICAgICAgICAudXNlUHJveHkocHJveHksIHByb3h5QnlwYXNzKVxuICAgICAgICAuc3JjKHNvdXJjZXMpXG4gICAgICAgIC50c0NvbmZpZ1BhdGgoYXJnUGFyc2VyLm9wdHMudHNDb25maWdQYXRoKVxuICAgICAgICAuYnJvd3NlcnMoYnJvd3NlcnMpXG4gICAgICAgIC5yZXBvcnRlcihhcmdQYXJzZXIub3B0cy5yZXBvcnRlcilcbiAgICAgICAgLmNvbmN1cnJlbmN5KGFyZ1BhcnNlci5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAuZmlsdGVyKGFyZ1BhcnNlci5vcHRzLmZpbHRlcilcbiAgICAgICAgLnZpZGVvKG9wdHMudmlkZW8sIG9wdHMudmlkZW9PcHRpb25zLCBvcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zKVxuICAgICAgICAuc2NyZWVuc2hvdHMob3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgLnN0YXJ0QXBwKG9wdHMuYXBwLCBvcHRzLmFwcEluaXREZWxheSlcbiAgICAgICAgLmNsaWVudFNjcmlwdHMoYXJnUGFyc2VyLm9wdHMuY2xpZW50U2NyaXB0cylcbiAgICAgICAgLmNvbXBpbGVyT3B0aW9ucyhhcmdQYXJzZXIub3B0cy5jb21waWxlck9wdGlvbnMpO1xuXG4gICAgcnVubmVyLm9uY2UoJ2RvbmUtYm9vdHN0cmFwcGluZycsICgpID0+IGxvZy5oaWRlU3Bpbm5lcigpKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJ1bk9wdHMgPSBhcmdQYXJzZXIuZ2V0UnVuT3B0aW9ucygpO1xuXG4gICAgICAgIGZhaWxlZCA9IGF3YWl0IHJ1bm5lci5ydW4ocnVuT3B0cyk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICBzaG93TWVzc2FnZU9uRXhpdCA9IGZhbHNlO1xuICAgICAgICBhd2FpdCB0ZXN0Q2FmZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIGV4aXQoZmFpbGVkKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuRGFzaGJvYXJkSW50ZWdyYXRpb24gKHN0YXRlKSB7XG4gICAgYXdhaXQgZGFzaGJvYXJkSW50ZWdyYXRpb24oc3RhdGUpO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdEJyb3dzZXJzIChwcm92aWRlck5hbWUpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IGF3YWl0IGJyb3dzZXJQcm92aWRlclBvb2wuZ2V0UHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcblxuICAgIGlmICghcHJvdmlkZXIpXG4gICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuYnJvd3NlclByb3ZpZGVyTm90Rm91bmQsIHByb3ZpZGVyTmFtZSk7XG5cbiAgICBpZiAocHJvdmlkZXIuaXNNdWx0aUJyb3dzZXIpIHtcbiAgICAgICAgY29uc3QgYnJvd3Nlck5hbWVzID0gYXdhaXQgcHJvdmlkZXIuZ2V0QnJvd3Nlckxpc3QoKTtcblxuICAgICAgICBhd2FpdCBicm93c2VyUHJvdmlkZXJQb29sLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAocHJvdmlkZXJOYW1lID09PSAnbG9jYWxseS1pbnN0YWxsZWQnKVxuICAgICAgICAgICAgY29uc29sZS5sb2coYnJvd3Nlck5hbWVzLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYnJvd3Nlck5hbWVzLm1hcChicm93c2VyTmFtZSA9PiBgXCIkeyBwcm92aWRlck5hbWUgfTokeyBicm93c2VyTmFtZSB9XCJgKS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgY29uc29sZS5sb2coYFwiJHsgcHJvdmlkZXJOYW1lIH1cImApO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuKGFzeW5jIGZ1bmN0aW9uIGNsaSAoKSB7XG4gICAgY29uc3QgdGVybWluYXRpb25IYW5kbGVyID0gbmV3IFRlcm1pbmF0aW9uSGFuZGxlcigpO1xuXG4gICAgdGVybWluYXRpb25IYW5kbGVyLm9uKFRlcm1pbmF0aW9uSGFuZGxlci5URVJNSU5BVElPTl9MRVZFTF9JTkNSRUFTRURfRVZFTlQsIGV4aXRIYW5kbGVyKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGFyZ1BhcnNlciA9IG5ldyBDbGlBcmd1bWVudFBhcnNlcigpO1xuXG4gICAgICAgIGxvZ0VudHJ5KExPR0dFUiwgcHJvY2Vzcy5hcmd2KTtcblxuICAgICAgICBhd2FpdCBhcmdQYXJzZXIucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICAgICAgICBsb2dFbnRyeShMT0dHRVIsIGFyZ1BhcnNlci5vcHRzKTtcblxuICAgICAgICBpZiAoYXJnUGFyc2VyLmlzRGFzaGJvYXJkQ29tbWFuZClcbiAgICAgICAgICAgIGF3YWl0IHJ1bkRhc2hib2FyZEludGVncmF0aW9uKGFyZ1BhcnNlci5zZW5kUmVwb3J0U3RhdGUpO1xuICAgICAgICBlbHNlIGlmIChhcmdQYXJzZXIub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICBhd2FpdCBsaXN0QnJvd3NlcnMoYXJnUGFyc2VyLm9wdHMucHJvdmlkZXJOYW1lKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgcnVuVGVzdHMoYXJnUGFyc2VyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBzaG93TWVzc2FnZU9uRXhpdCA9IGZhbHNlO1xuICAgICAgICBlcnJvcihlcnIpO1xuICAgIH1cbn0pKCk7XG5cbiJdfQ==
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCx3RUFBa0Q7QUFDbEQsZ0ZBQXVEO0FBQ3ZELGdEQUF3QjtBQUN4QixzRUFBNkM7QUFDN0Msa0dBQXVFO0FBQ3ZFLDRDQUFpQztBQUNqQyxrREFBMEI7QUFDMUIsbUVBQTBDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLElBQUEsZUFBSyxFQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXJDLDZEQUE2RDtBQUM3RCxNQUFNLFdBQVcsR0FBVyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUQsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUVwRSxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUM3QixJQUFJLGdCQUFnQixHQUFJLEtBQUssQ0FBQztBQUM5QixJQUFJLE9BQU8sR0FBYSxLQUFLLENBQUM7QUFFOUIsU0FBUyxXQUFXLENBQUUsZ0JBQWdCO0lBQ2xDLElBQUksaUJBQWlCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtRQUN4QyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFeEIsYUFBRyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWxDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNuRDtJQUVELElBQUksT0FBTyxJQUFJLGdCQUFnQixHQUFHLENBQUM7UUFDL0IsT0FBTztJQUVYLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFZixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUUsSUFBSTtJQUNm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QVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUMzQixNQUFNLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDOztZQUVoRCxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sR0FBRyxFQUFFO1FBQ1IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNkO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IsIEFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IENsaUFyZ3VtZW50UGFyc2VyIGZyb20gJy4vYXJndW1lbnQtcGFyc2VyJztcbmltcG9ydCBUZXJtaW5hdGlvbkhhbmRsZXIgZnJvbSAnLi90ZXJtaW5hdGlvbi1oYW5kbGVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2cnO1xuaW1wb3J0IHJlbW90ZXNXaXphcmQgZnJvbSAnLi9yZW1vdGVzLXdpemFyZCc7XG5pbXBvcnQgY29ycmVjdEJyb3dzZXJzQW5kU291cmNlcyBmcm9tICcuL2NvcnJlY3QtYnJvd3NlcnMtYW5kLXNvdXJjZXMnO1xuaW1wb3J0IGNyZWF0ZVRlc3RDYWZlIGZyb20gJy4uLyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGxvZ0VudHJ5IGZyb20gJy4uL3V0aWxzL2xvZy1lbnRyeSc7XG5cbmNvbnN0IExPR0dFUiA9IGRlYnVnKCd0ZXN0Y2FmZTpjbGknKTtcblxuLy8gTk9URTogTG9hZCB0aGUgcHJvdmlkZXIgcG9vbCBsYXppbHkgdG8gcmVkdWNlIHN0YXJ0dXAgdGltZVxuY29uc3QgbGF6eVJlcXVpcmUgICAgICAgICA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCBicm93c2VyUHJvdmlkZXJQb29sID0gbGF6eVJlcXVpcmUoJy4uL2Jyb3dzZXIvcHJvdmlkZXIvcG9vbCcpO1xuXG5sZXQgc2hvd01lc3NhZ2VPbkV4aXQgPSB0cnVlO1xubGV0IGV4aXRNZXNzYWdlU2hvd24gID0gZmFsc2U7XG5sZXQgZXhpdGluZyAgICAgICAgICAgPSBmYWxzZTtcblxuZnVuY3Rpb24gZXhpdEhhbmRsZXIgKHRlcm1pbmF0aW9uTGV2ZWwpIHtcbiAgICBpZiAoc2hvd01lc3NhZ2VPbkV4aXQgJiYgIWV4aXRNZXNzYWdlU2hvd24pIHtcbiAgICAgICAgZXhpdE1lc3NhZ2VTaG93biA9IHRydWU7XG5cbiAgICAgICAgbG9nLndyaXRlKCdTdG9wcGluZyBUZXN0Q2FmZS4uLicpO1xuXG4gICAgICAgIHByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiBsb2cuaGlkZVNwaW5uZXIodHJ1ZSkpO1xuICAgIH1cblxuICAgIGlmIChleGl0aW5nIHx8IHRlcm1pbmF0aW9uTGV2ZWwgPCAyKVxuICAgICAgICByZXR1cm47XG5cbiAgICBleGl0aW5nID0gdHJ1ZTtcblxuICAgIGV4aXQoMCk7XG59XG5cbmZ1bmN0aW9uIGV4aXQgKGNvZGUpIHtcbiAgICBsb2cuaGlkZVNwaW5uZXIodHJ1ZSk7XG5cbiAgICAvLyBOT1RFOiBnaXZlIGEgcHJvY2VzcyB0aW1lIHRvIGZsdXNoIHRoZSBvdXRwdXQuXG4gICAgLy8gSXQncyBuZWNlc3NhcnkgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoY29kZSksIDApO1xufVxuXG5mdW5jdGlvbiBlcnJvciAoZXJyKSB7XG4gICAgbG9nLmhpZGVTcGlubmVyKCk7XG5cbiAgICBsZXQgbWVzc2FnZSA9IG51bGw7XG5cbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgR2VuZXJhbEVycm9yKVxuICAgICAgICBtZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG5cbiAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBBUElFcnJvcilcbiAgICAgICAgbWVzc2FnZSA9IGVyci5jb2xvcmVkU3RhY2s7XG5cbiAgICBlbHNlXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIuc3RhY2s7XG5cbiAgICBsb2cud3JpdGUoY2hhbGsucmVkKCdFUlJPUiAnKSArIG1lc3NhZ2UgKyAnXFxuJyk7XG4gICAgbG9nLndyaXRlKGNoYWxrLmdyYXkoJ1R5cGUgXCJ0ZXN0Y2FmZSAtaFwiIGZvciBoZWxwLicpKTtcblxuICAgIGV4aXQoMSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzIChhcmdQYXJzZXIpIHtcbiAgICBjb25zdCBvcHRzICAgICAgICA9IGFyZ1BhcnNlci5vcHRzO1xuICAgIGNvbnN0IHBvcnQxICAgICAgID0gb3B0cy5wb3J0cyAmJiBvcHRzLnBvcnRzWzBdO1xuICAgIGNvbnN0IHBvcnQyICAgICAgID0gb3B0cy5wb3J0cyAmJiBvcHRzLnBvcnRzWzFdO1xuICAgIGNvbnN0IHByb3h5ICAgICAgID0gb3B0cy5wcm94eTtcbiAgICBjb25zdCBwcm94eUJ5cGFzcyA9IG9wdHMucHJveHlCeXBhc3M7XG4gICAgY29uc3QgY29uZmlnRmlsZSAgPSBvcHRzLmNvbmZpZ0ZpbGU7XG5cbiAgICBsb2cuc2hvd1NwaW5uZXIoKTtcblxuICAgIGNvbnN0IHtcbiAgICAgICAgaG9zdG5hbWUsXG4gICAgICAgIHNzbCxcbiAgICAgICAgZGV2LFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICAgICAgZGlzYWJsZUNyb3NzRG9tYWluLFxuICAgICAgICBlc20sXG4gICAgfSA9IG9wdHM7XG5cbiAgICBjb25zdCB0ZXN0Q2FmZSA9IGF3YWl0IGNyZWF0ZVRlc3RDYWZlKHtcbiAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiBkZXYsXG4gICAgICAgIGlzQ2xpOiAgICAgICAgICAgdHJ1ZSxcblxuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgcG9ydDEsXG4gICAgICAgIHBvcnQyLFxuICAgICAgICBzc2wsXG4gICAgICAgIHJldHJ5VGVzdFBhZ2VzLFxuICAgICAgICBjYWNoZSxcbiAgICAgICAgY29uZmlnRmlsZSxcbiAgICAgICAgZGlzYWJsZUh0dHAyLFxuICAgICAgICB2OEZsYWdzLFxuICAgICAgICBkaXNhYmxlQ3Jvc3NEb21haW4sXG4gICAgICAgIGVzbSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvcnJlY3RlZEJyb3dzZXJzQW5kU291cmNlcyA9IGF3YWl0IGNvcnJlY3RCcm93c2Vyc0FuZFNvdXJjZXMoYXJnUGFyc2VyLCB0ZXN0Q2FmZS5jb25maWd1cmF0aW9uKTtcbiAgICBjb25zdCBhdXRvbWF0ZWRCcm93c2VycyAgICAgICAgICAgPSBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMuYnJvd3NlcnM7XG4gICAgY29uc3QgcmVtb3RlQnJvd3NlcnMgICAgICAgICAgICAgID0gYXdhaXQgcmVtb3Rlc1dpemFyZCh0ZXN0Q2FmZSwgYXJnUGFyc2VyLnJlbW90ZUNvdW50LCBvcHRzLnFyQ29kZSk7XG4gICAgY29uc3QgYnJvd3NlcnMgICAgICAgICAgICAgICAgICAgID0gYXV0b21hdGVkQnJvd3NlcnMuY29uY2F0KHJlbW90ZUJyb3dzZXJzKTtcbiAgICBjb25zdCBzb3VyY2VzICAgICAgICAgICAgICAgICAgICAgPSBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMuc291cmNlcztcblxuICAgIGNvbnN0IHJ1bm5lciA9IG9wdHMubGl2ZSA/IHRlc3RDYWZlLmNyZWF0ZUxpdmVNb2RlUnVubmVyKCkgOiB0ZXN0Q2FmZS5jcmVhdGVSdW5uZXIoKTtcblxuICAgIGxldCBmYWlsZWQgPSAwO1xuXG4gICAgcnVubmVyXG4gICAgICAgIC51c2VQcm94eShwcm94eSwgcHJveHlCeXBhc3MpXG4gICAgICAgIC5zcmMoc291cmNlcylcbiAgICAgICAgLnRzQ29uZmlnUGF0aChhcmdQYXJzZXIub3B0cy50c0NvbmZpZ1BhdGgpXG4gICAgICAgIC5icm93c2Vycyhicm93c2VycylcbiAgICAgICAgLnJlcG9ydGVyKGFyZ1BhcnNlci5vcHRzLnJlcG9ydGVyKVxuICAgICAgICAuY29uY3VycmVuY3koYXJnUGFyc2VyLm9wdHMuY29uY3VycmVuY3kpXG4gICAgICAgIC5maWx0ZXIoYXJnUGFyc2VyLm9wdHMuZmlsdGVyKVxuICAgICAgICAudmlkZW8ob3B0cy52aWRlbywgb3B0cy52aWRlb09wdGlvbnMsIG9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMpXG4gICAgICAgIC5zY3JlZW5zaG90cyhvcHRzLnNjcmVlbnNob3RzKVxuICAgICAgICAuc3RhcnRBcHAob3B0cy5hcHAsIG9wdHMuYXBwSW5pdERlbGF5KVxuICAgICAgICAuY2xpZW50U2NyaXB0cyhhcmdQYXJzZXIub3B0cy5jbGllbnRTY3JpcHRzKVxuICAgICAgICAuY29tcGlsZXJPcHRpb25zKGFyZ1BhcnNlci5vcHRzLmNvbXBpbGVyT3B0aW9ucyk7XG5cbiAgICBydW5uZXIub25jZSgnZG9uZS1ib290c3RyYXBwaW5nJywgKCkgPT4gbG9nLmhpZGVTcGlubmVyKCkpO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcnVuT3B0cyA9IGFyZ1BhcnNlci5nZXRSdW5PcHRpb25zKCk7XG5cbiAgICAgICAgZmFpbGVkID0gYXdhaXQgcnVubmVyLnJ1bihydW5PcHRzKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHNob3dNZXNzYWdlT25FeGl0ID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IHRlc3RDYWZlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgZXhpdChmYWlsZWQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsaXN0QnJvd3NlcnMgKHByb3ZpZGVyTmFtZSkge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gYXdhaXQgYnJvd3NlclByb3ZpZGVyUG9vbC5nZXRQcm92aWRlcihwcm92aWRlck5hbWUpO1xuXG4gICAgaWYgKCFwcm92aWRlcilcbiAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5icm93c2VyUHJvdmlkZXJOb3RGb3VuZCwgcHJvdmlkZXJOYW1lKTtcblxuICAgIGlmIChwcm92aWRlci5pc011bHRpQnJvd3Nlcikge1xuICAgICAgICBjb25zdCBicm93c2VyTmFtZXMgPSBhd2FpdCBwcm92aWRlci5nZXRCcm93c2VyTGlzdCgpO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJQcm92aWRlclBvb2wuZGlzcG9zZSgpO1xuXG4gICAgICAgIGlmIChwcm92aWRlck5hbWUgPT09ICdsb2NhbGx5LWluc3RhbGxlZCcpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhicm93c2VyTmFtZXMuam9pbignXFxuJykpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhicm93c2VyTmFtZXMubWFwKGJyb3dzZXJOYW1lID0+IGBcIiR7IHByb3ZpZGVyTmFtZSB9OiR7IGJyb3dzZXJOYW1lIH1cImApLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICBjb25zb2xlLmxvZyhgXCIkeyBwcm92aWRlck5hbWUgfVwiYCk7XG5cbiAgICBleGl0KDApO1xufVxuXG4oYXN5bmMgZnVuY3Rpb24gY2xpICgpIHtcbiAgICBjb25zdCB0ZXJtaW5hdGlvbkhhbmRsZXIgPSBuZXcgVGVybWluYXRpb25IYW5kbGVyKCk7XG5cbiAgICB0ZXJtaW5hdGlvbkhhbmRsZXIub24oVGVybWluYXRpb25IYW5kbGVyLlRFUk1JTkFUSU9OX0xFVkVMX0lOQ1JFQVNFRF9FVkVOVCwgZXhpdEhhbmRsZXIpO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYXJnUGFyc2VyID0gbmV3IENsaUFyZ3VtZW50UGFyc2VyKCk7XG5cbiAgICAgICAgbG9nRW50cnkoTE9HR0VSLCBwcm9jZXNzLmFyZ3YpO1xuXG4gICAgICAgIGF3YWl0IGFyZ1BhcnNlci5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuXG4gICAgICAgIGxvZ0VudHJ5KExPR0dFUiwgYXJnUGFyc2VyLm9wdHMpO1xuXG4gICAgICAgIGlmIChhcmdQYXJzZXIub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICBhd2FpdCBsaXN0QnJvd3NlcnMoYXJnUGFyc2VyLm9wdHMucHJvdmlkZXJOYW1lKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgcnVuVGVzdHMoYXJnUGFyc2VyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBzaG93TWVzc2FnZU9uRXhpdCA9IGZhbHNlO1xuICAgICAgICBlcnJvcihlcnIpO1xuICAgIH1cbn0pKCk7XG5cbiJdfQ==
|
|
@@ -117,6 +117,18 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
117
117
|
function __() { this.constructor = d; }
|
|
118
118
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
119
119
|
}
|
|
120
|
+
var __assign = function () {
|
|
121
|
+
__assign = Object.assign || function __assign(t) {
|
|
122
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
123
|
+
s = arguments[i];
|
|
124
|
+
for (var p in s)
|
|
125
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
126
|
+
t[p] = s[p];
|
|
127
|
+
}
|
|
128
|
+
return t;
|
|
129
|
+
};
|
|
130
|
+
return __assign.apply(this, arguments);
|
|
131
|
+
};
|
|
120
132
|
function __awaiter(thisArg, _arguments, P, generator) {
|
|
121
133
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
122
134
|
return new (P || (P = Promise$e))(function (resolve, reject) {
|
|
@@ -2896,7 +2908,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
2896
2908
|
var _a;
|
|
2897
2909
|
return __generator(this, function (_b) {
|
|
2898
2910
|
switch (_b.label) {
|
|
2899
|
-
case 0: return [4 /*yield*/, ((_a = this.nativeAutomationInput) === null || _a === void 0 ? void 0 : _a.createMouseMoveEvent(currPosition))];
|
|
2911
|
+
case 0: return [4 /*yield*/, ((_a = this.nativeAutomationInput) === null || _a === void 0 ? void 0 : _a.createMouseMoveEvent(currPosition, this.modifiers))];
|
|
2900
2912
|
case 1:
|
|
2901
2913
|
moveEvent = _b.sent();
|
|
2902
2914
|
events_1.push(moveEvent);
|
|
@@ -3167,7 +3179,8 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3167
3179
|
return 'left';
|
|
3168
3180
|
}
|
|
3169
3181
|
|
|
3170
|
-
var
|
|
3182
|
+
var utils = hammerhead__default.utils, eventSandbox = hammerhead__default.eventSandbox, nativeMethods$7 = hammerhead__default.nativeMethods;
|
|
3183
|
+
var messageSandbox$1 = eventSandbox.message;
|
|
3171
3184
|
var MOUSE_EVENT_OPTIONS = {
|
|
3172
3185
|
clickCount: 1,
|
|
3173
3186
|
};
|
|
@@ -3230,10 +3243,14 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3230
3243
|
var CDPEventDescriptor = /** @class */ (function () {
|
|
3231
3244
|
function CDPEventDescriptor() {
|
|
3232
3245
|
}
|
|
3246
|
+
CDPEventDescriptor._isNonCharKeyModifier = function (modifiers) {
|
|
3247
|
+
var nonCharModifiers = [KeyModifierValues.ctrl, KeyModifierValues.alt, KeyModifierValues.meta];
|
|
3248
|
+
return nativeMethods$7.arrayIndexOf.call(nonCharModifiers, modifiers) > -1;
|
|
3249
|
+
};
|
|
3233
3250
|
CDPEventDescriptor._getKeyDownEventText = function (options) {
|
|
3234
3251
|
if (options.isNewLine)
|
|
3235
3252
|
return '\r';
|
|
3236
|
-
if (options.keyProperty.length === 1)
|
|
3253
|
+
if (options.keyProperty.length === 1 && !CDPEventDescriptor._isNonCharKeyModifier(options.modifiers))
|
|
3237
3254
|
return options.keyProperty;
|
|
3238
3255
|
return '';
|
|
3239
3256
|
};
|
|
@@ -3263,7 +3280,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3263
3280
|
case 0: return [4 /*yield*/, calculateIFrameTopLeftPoint()];
|
|
3264
3281
|
case 1:
|
|
3265
3282
|
_a = _b.sent(), x = _a.x, y = _a.y;
|
|
3266
|
-
return [2 /*return*/,
|
|
3283
|
+
return [2 /*return*/, utils.extend({
|
|
3267
3284
|
x: options.options.clientX + x,
|
|
3268
3285
|
y: options.options.clientY + y,
|
|
3269
3286
|
modifiers: calculateKeyModifiersValue(options.options),
|
|
@@ -3343,17 +3360,13 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3343
3360
|
});
|
|
3344
3361
|
});
|
|
3345
3362
|
};
|
|
3346
|
-
NativeAutomationInput.prototype.createMouseMoveEvent = function (currPosition) {
|
|
3363
|
+
NativeAutomationInput.prototype.createMouseMoveEvent = function (currPosition, modifiers) {
|
|
3347
3364
|
return __awaiter(this, void 0, void 0, function () {
|
|
3348
3365
|
var options;
|
|
3349
3366
|
return __generator(this, function (_a) {
|
|
3350
3367
|
switch (_a.label) {
|
|
3351
3368
|
case 0: return [4 /*yield*/, CDPEventDescriptor.createMouseEventOptions('mouseMoved', {
|
|
3352
|
-
options: {
|
|
3353
|
-
clientX: currPosition.x,
|
|
3354
|
-
clientY: currPosition.y,
|
|
3355
|
-
button: 'none',
|
|
3356
|
-
},
|
|
3369
|
+
options: __assign({ clientX: currPosition.x, clientY: currPosition.y, button: 'none' }, modifiers),
|
|
3357
3370
|
})];
|
|
3358
3371
|
case 1:
|
|
3359
3372
|
options = _a.sent();
|
|
@@ -3736,7 +3749,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3736
3749
|
}(VisibleElementAutomation));
|
|
3737
3750
|
|
|
3738
3751
|
var Promise$4 = hammerhead__default.Promise;
|
|
3739
|
-
var nativeMethods$
|
|
3752
|
+
var nativeMethods$8 = hammerhead__default.nativeMethods;
|
|
3740
3753
|
var browserUtils$3 = hammerhead__default.utils.browser;
|
|
3741
3754
|
var focusBlurSandbox = hammerhead__default.eventSandbox.focusBlur;
|
|
3742
3755
|
var contentEditable = testCafeCore__default.contentEditable;
|
|
@@ -3811,7 +3824,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3811
3824
|
preventScrolling = false;
|
|
3812
3825
|
if (!isElementFocusable && !isContentEditable) {
|
|
3813
3826
|
curDocument = domUtils$1.findDocument(elementForFocus);
|
|
3814
|
-
curActiveElement = nativeMethods$
|
|
3827
|
+
curActiveElement = nativeMethods$8.documentActiveElementGetter.call(curDocument);
|
|
3815
3828
|
isActiveElementBody = domUtils$1.isBodyElement(curActiveElement);
|
|
3816
3829
|
focusableParent = domUtils$1.isBodyElement(elementForFocus) ?
|
|
3817
3830
|
elementForFocus : domUtils$1.getFocusableParent(elementForFocus);
|
|
@@ -3865,7 +3878,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3865
3878
|
var browserUtils$4 = hammerhead__default.utils.browser;
|
|
3866
3879
|
var eventSimulator$3 = hammerhead__default.eventSandbox.eventSimulator;
|
|
3867
3880
|
var listeners$2 = hammerhead__default.eventSandbox.listeners;
|
|
3868
|
-
var nativeMethods$
|
|
3881
|
+
var nativeMethods$9 = hammerhead__default.nativeMethods;
|
|
3869
3882
|
var domUtils$2 = testCafeCore__default.domUtils;
|
|
3870
3883
|
var styleUtils$2 = testCafeCore__default.styleUtils;
|
|
3871
3884
|
var selectController = testCafeCore__default.selectController;
|
|
@@ -3895,7 +3908,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3895
3908
|
var _this = this;
|
|
3896
3909
|
var focusRaised = false;
|
|
3897
3910
|
var ensureFocusRaised = function (e) {
|
|
3898
|
-
focusRaised = nativeMethods$
|
|
3911
|
+
focusRaised = nativeMethods$9.eventTargetGetter.call(e) === _this.input;
|
|
3899
3912
|
};
|
|
3900
3913
|
listeners$2.addInternalEventBeforeListener(window, ['focus'], ensureFocusRaised);
|
|
3901
3914
|
_super.prototype.run.call(this);
|
|
@@ -4398,7 +4411,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4398
4411
|
var featureDetection$1 = hammerhead__default.utils.featureDetection;
|
|
4399
4412
|
var eventSimulator$6 = hammerhead__default.eventSandbox.eventSimulator;
|
|
4400
4413
|
var focusBlurSandbox$1 = hammerhead__default.eventSandbox.focusBlur;
|
|
4401
|
-
var nativeMethods$
|
|
4414
|
+
var nativeMethods$a = hammerhead__default.nativeMethods;
|
|
4402
4415
|
var domUtils$5 = testCafeCore__default.domUtils;
|
|
4403
4416
|
var styleUtils$4 = testCafeCore__default.styleUtils;
|
|
4404
4417
|
var delay$1 = testCafeCore__default.delay;
|
|
@@ -4423,7 +4436,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4423
4436
|
var selectedIndex = this.parentSelect.selectedIndex;
|
|
4424
4437
|
this.childIndex = isOption ? domUtils$5.getElementIndexInParent(this.parentSelect, this.element) :
|
|
4425
4438
|
domUtils$5.getElementIndexInParent(this.parentSelect, this.element);
|
|
4426
|
-
var parent_1 = nativeMethods$
|
|
4439
|
+
var parent_1 = nativeMethods$a.nodeParentNodeGetter.call(this.element);
|
|
4427
4440
|
var parentOptGroup = domUtils$5.isOptionGroupElement(parent_1) ? parent_1 : null;
|
|
4428
4441
|
var isDisabled = this.element.disabled || parentOptGroup && parentOptGroup.disabled;
|
|
4429
4442
|
this.clickCausesChange = isOption && !isDisabled && this.childIndex !== selectedIndex;
|
|
@@ -4628,7 +4641,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4628
4641
|
return DragAndDropState;
|
|
4629
4642
|
}());
|
|
4630
4643
|
|
|
4631
|
-
var nativeMethods$
|
|
4644
|
+
var nativeMethods$b = hammerhead__default.nativeMethods;
|
|
4632
4645
|
var featureDetection$3 = hammerhead__default.utils.featureDetection;
|
|
4633
4646
|
var htmlUtils$1 = hammerhead__default.utils.html;
|
|
4634
4647
|
var urlUtils = hammerhead__default.utils.url;
|
|
@@ -4642,7 +4655,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4642
4655
|
while (parentNode) {
|
|
4643
4656
|
if (parentNode.draggable)
|
|
4644
4657
|
return parentNode;
|
|
4645
|
-
parentNode = nativeMethods$
|
|
4658
|
+
parentNode = nativeMethods$b.nodeParentNodeGetter.call(parentNode);
|
|
4646
4659
|
}
|
|
4647
4660
|
return null;
|
|
4648
4661
|
}
|
|
@@ -4708,7 +4721,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4708
4721
|
var srcAttr = isLink ? 'href' : 'src';
|
|
4709
4722
|
var parsedUrl = urlUtils.parseProxyUrl(_this.dragElement[srcAttr]);
|
|
4710
4723
|
var src = parsedUrl ? parsedUrl.destUrl : _this.dragElement[srcAttr];
|
|
4711
|
-
var outerHTML = htmlUtils$1.cleanUpHtml(nativeMethods$
|
|
4724
|
+
var outerHTML = htmlUtils$1.cleanUpHtml(nativeMethods$b.elementOuterHTMLGetter.call(_this.dragElement));
|
|
4712
4725
|
_this.dragAndDropState.dataTransfer.setData('text/plain', src);
|
|
4713
4726
|
_this.dragAndDropState.dataTransfer.setData('text/uri-list', src);
|
|
4714
4727
|
_this.dragAndDropState.dataTransfer.setData('text/html', outerHTML);
|
|
@@ -4929,10 +4942,10 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4929
4942
|
}(VisibleElementAutomation));
|
|
4930
4943
|
|
|
4931
4944
|
var browserUtils$8 = hammerhead__default.utils.browser;
|
|
4932
|
-
var eventSandbox = hammerhead__default.sandbox.event;
|
|
4945
|
+
var eventSandbox$1 = hammerhead__default.sandbox.event;
|
|
4933
4946
|
var eventSimulator$9 = hammerhead__default.eventSandbox.eventSimulator;
|
|
4934
4947
|
var listeners$4 = hammerhead__default.eventSandbox.listeners;
|
|
4935
|
-
var nativeMethods$
|
|
4948
|
+
var nativeMethods$c = hammerhead__default.nativeMethods;
|
|
4936
4949
|
var domUtils$7 = testCafeCore__default.domUtils;
|
|
4937
4950
|
var contentEditable$1 = testCafeCore__default.contentEditable;
|
|
4938
4951
|
var textSelection$1 = testCafeCore__default.textSelection;
|
|
@@ -4952,7 +4965,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4952
4965
|
}
|
|
4953
4966
|
function _updateSelectionAfterDeletionContent(element, selection) {
|
|
4954
4967
|
var startNode = selection.startPos.node;
|
|
4955
|
-
var startParent = nativeMethods$
|
|
4968
|
+
var startParent = nativeMethods$c.nodeParentNodeGetter.call(startNode);
|
|
4956
4969
|
var hasStartParent = startParent && startNode.parentElement;
|
|
4957
4970
|
var browserRequiresSelectionUpdating = browserUtils$8.isChrome && browserUtils$8.version < 58 || browserUtils$8.isSafari;
|
|
4958
4971
|
if (browserRequiresSelectionUpdating || !hasStartParent || !domUtils$7.isElementContainsNode(element, startNode)) {
|
|
@@ -4971,11 +4984,11 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4971
4984
|
var nodeForTyping = document.createTextNode(text);
|
|
4972
4985
|
var textLength = text.length;
|
|
4973
4986
|
var selectPosition = { node: nodeForTyping, offset: textLength };
|
|
4974
|
-
var parent = nativeMethods$
|
|
4987
|
+
var parent = nativeMethods$c.nodeParentNodeGetter.call(elementNode);
|
|
4975
4988
|
if (domUtils$7.getTagName(elementNode) === 'br')
|
|
4976
4989
|
parent.insertBefore(nodeForTyping, elementNode);
|
|
4977
4990
|
else if (offset > 0) {
|
|
4978
|
-
var childNodes = nativeMethods$
|
|
4991
|
+
var childNodes = nativeMethods$c.nodeChildNodesGetter.call(elementNode);
|
|
4979
4992
|
elementNode.insertBefore(nodeForTyping, childNodes[offset]);
|
|
4980
4993
|
}
|
|
4981
4994
|
else
|
|
@@ -5039,12 +5052,12 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
5039
5052
|
}
|
|
5040
5053
|
if (browserUtils$8.isSafari) {
|
|
5041
5054
|
listeners$4.addInternalEventBeforeListener(window, ['textInput'], onSafariTextInput);
|
|
5042
|
-
eventSandbox.on(eventSandbox.EVENT_PREVENTED_EVENT, onSafariPreventTextInput);
|
|
5055
|
+
eventSandbox$1.on(eventSandbox$1.EVENT_PREVENTED_EVENT, onSafariPreventTextInput);
|
|
5043
5056
|
}
|
|
5044
5057
|
var isInputEventRequired = browserUtils$8.isFirefox || eventSimulator$9.textInput(element, text) || forceInputInSafari;
|
|
5045
5058
|
if (browserUtils$8.isSafari) {
|
|
5046
5059
|
listeners$4.removeInternalEventBeforeListener(window, ['textInput'], onSafariTextInput);
|
|
5047
|
-
eventSandbox.off(eventSandbox.EVENT_PREVENTED_EVENT, onSafariPreventTextInput);
|
|
5060
|
+
eventSandbox$1.off(eventSandbox$1.EVENT_PREVENTED_EVENT, onSafariPreventTextInput);
|
|
5048
5061
|
}
|
|
5049
5062
|
return isInputEventRequired || browserUtils$8.isIE11;
|
|
5050
5063
|
}
|
|
@@ -5164,7 +5177,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
5164
5177
|
return key.length === 1 && (key >= 'a' && key <= 'z' || key >= 'A' && key <= 'Z');
|
|
5165
5178
|
}
|
|
5166
5179
|
|
|
5167
|
-
var nativeMethods$
|
|
5180
|
+
var nativeMethods$d = hammerhead__default.nativeMethods;
|
|
5168
5181
|
var browserUtils$9 = hammerhead__default.utils.browser;
|
|
5169
5182
|
var focusBlurSandbox$3 = hammerhead__default.eventSandbox.focusBlur;
|
|
5170
5183
|
var Promise$8 = hammerhead__default.Promise;
|
|
@@ -5212,9 +5225,9 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
5212
5225
|
var activeElement = getActiveElement$1(doc);
|
|
5213
5226
|
var activeElementInIframe = null;
|
|
5214
5227
|
if (activeElement && testCafeCore.domUtils.isIframeElement(activeElement) &&
|
|
5215
|
-
nativeMethods$
|
|
5228
|
+
nativeMethods$d.contentDocumentGetter.call(activeElement)) {
|
|
5216
5229
|
try {
|
|
5217
|
-
activeElementInIframe = getDeepActiveElement(nativeMethods$
|
|
5230
|
+
activeElementInIframe = getDeepActiveElement(nativeMethods$d.contentDocumentGetter.call(activeElement));
|
|
5218
5231
|
}
|
|
5219
5232
|
catch (e) { // eslint-disable-line no-empty
|
|
5220
5233
|
}
|
|
@@ -5268,7 +5281,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
5268
5281
|
return checkedRadioButtonElementWithSameName || element;
|
|
5269
5282
|
}
|
|
5270
5283
|
function activeElementHasNegativeTabIndex(doc) {
|
|
5271
|
-
var activeElement = nativeMethods$
|
|
5284
|
+
var activeElement = nativeMethods$d.documentActiveElementGetter.call(doc);
|
|
5272
5285
|
var activeElementTabIndex = activeElement && getTabIndexAttributeIntValue(activeElement);
|
|
5273
5286
|
return activeElement && activeElementTabIndex < 0;
|
|
5274
5287
|
}
|
|
@@ -6025,7 +6038,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
6025
6038
|
|
|
6026
6039
|
var Promise$a = hammerhead__default.Promise;
|
|
6027
6040
|
var messageSandbox$4 = hammerhead__default.eventSandbox.message;
|
|
6028
|
-
var nativeMethods$
|
|
6041
|
+
var nativeMethods$e = hammerhead__default.nativeMethods;
|
|
6029
6042
|
var PRESS_REQUEST_CMD = 'automation|press|request';
|
|
6030
6043
|
var PRESS_RESPONSE_CMD = 'automation|press|response';
|
|
6031
6044
|
// Setup cross-iframe interaction
|
|
@@ -6165,13 +6178,13 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
6165
6178
|
var _this = this;
|
|
6166
6179
|
var activeElement = testCafeCore.domUtils.getActiveElement();
|
|
6167
6180
|
var activeElementIsIframe = testCafeCore.domUtils.isIframeElement(activeElement);
|
|
6168
|
-
if (!isIframeWindow(window) && activeElementIsIframe && nativeMethods$
|
|
6181
|
+
if (!isIframeWindow(window) && activeElementIsIframe && nativeMethods$e.contentWindowGetter.call(activeElement)) {
|
|
6169
6182
|
var msg = {
|
|
6170
6183
|
cmd: PRESS_REQUEST_CMD,
|
|
6171
6184
|
keyCombinations: this.keyCombinations,
|
|
6172
6185
|
options: this.options,
|
|
6173
6186
|
};
|
|
6174
|
-
return testCafeCore.sendRequestToFrame(msg, PRESS_RESPONSE_CMD, nativeMethods$
|
|
6187
|
+
return testCafeCore.sendRequestToFrame(msg, PRESS_RESPONSE_CMD, nativeMethods$e.contentWindowGetter.call(activeElement));
|
|
6175
6188
|
}
|
|
6176
6189
|
if (this.nativeAutomationInput) {
|
|
6177
6190
|
var eventSequence = this._calculateCDPEventSequence();
|
|
@@ -7077,11 +7090,11 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
7077
7090
|
exports$1.getElementFromPoint = getElementFromPoint$2;
|
|
7078
7091
|
// NOTE: for testing purposes
|
|
7079
7092
|
exports$1.MoveAutomation = MoveAutomation;
|
|
7080
|
-
var nativeMethods$
|
|
7093
|
+
var nativeMethods$f = hammerhead__default.nativeMethods;
|
|
7081
7094
|
var evalIframeScript = hammerhead__default.EVENTS.evalIframeScript;
|
|
7082
|
-
nativeMethods$
|
|
7095
|
+
nativeMethods$f.objectDefineProperty(window, '%testCafeAutomation%', { configurable: true, value: exports$1 });
|
|
7083
7096
|
// eslint-disable-next-line no-undef
|
|
7084
|
-
hammerhead__default.on(evalIframeScript, function (e) { return initTestCafeAutomation(nativeMethods$
|
|
7097
|
+
hammerhead__default.on(evalIframeScript, function (e) { return initTestCafeAutomation(nativeMethods$f.contentWindowGetter.call(e.iframe), true); });
|
|
7085
7098
|
|
|
7086
7099
|
}(window['%hammerhead%'], window['%hammerhead%'].Promise, window['%testCafeCore%'], window['%testCafeUI%']));
|
|
7087
7100
|
|