testplane 9.0.0-rc.4 → 9.0.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/build/package.json +15 -15
- package/build/src/base-testplane.d.ts +6 -2
- package/build/src/base-testplane.js +18 -5
- package/build/src/base-testplane.js.map +1 -1
- package/build/src/browser/browser.d.ts +2 -0
- package/build/src/browser/browser.js +8 -4
- package/build/src/browser/browser.js.map +1 -1
- package/build/src/browser/calibrator.js +19 -17
- package/build/src/browser/calibrator.js.map +1 -1
- package/build/src/browser/camera/index.d.ts +6 -2
- package/build/src/browser/camera/index.js +18 -14
- package/build/src/browser/camera/index.js.map +1 -1
- package/build/src/browser/camera/utils.d.ts +11 -1
- package/build/src/browser/camera/utils.js +27 -1
- package/build/src/browser/camera/utils.js.map +1 -1
- package/build/src/browser/cdp/connection.d.ts +2 -39
- package/build/src/browser/cdp/connection.js +73 -353
- package/build/src/browser/cdp/connection.js.map +1 -1
- package/build/src/browser/cdp/constants.d.ts +0 -10
- package/build/src/browser/cdp/constants.js +1 -11
- package/build/src/browser/cdp/constants.js.map +1 -1
- package/build/src/browser/cdp/domains/css.d.ts +14 -6
- package/build/src/browser/cdp/domains/css.js +4 -0
- package/build/src/browser/cdp/domains/css.js.map +1 -1
- package/build/src/browser/cdp/domains/debugger.d.ts +1 -1
- package/build/src/browser/cdp/domains/fetch.d.ts +163 -0
- package/build/src/browser/cdp/domains/fetch.js +51 -0
- package/build/src/browser/cdp/domains/fetch.js.map +1 -0
- package/build/src/browser/cdp/domains/network.d.ts +290 -0
- package/build/src/browser/cdp/domains/network.js +75 -0
- package/build/src/browser/cdp/domains/network.js.map +1 -0
- package/build/src/browser/cdp/domains/page.d.ts +378 -0
- package/build/src/browser/cdp/domains/page.js +114 -0
- package/build/src/browser/cdp/domains/page.js.map +1 -0
- package/build/src/browser/cdp/emitter.d.ts +2 -1
- package/build/src/browser/cdp/emitter.js +2 -2
- package/build/src/browser/cdp/emitter.js.map +1 -1
- package/build/src/browser/cdp/error.d.ts +14 -20
- package/build/src/browser/cdp/error.js +29 -32
- package/build/src/browser/cdp/error.js.map +1 -1
- package/build/src/browser/cdp/index.d.ts +6 -0
- package/build/src/browser/cdp/index.js +21 -6
- package/build/src/browser/cdp/index.js.map +1 -1
- package/build/src/browser/cdp/selectivity/constants.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/constants.js +3 -1
- package/build/src/browser/cdp/selectivity/constants.js.map +1 -1
- package/build/src/browser/cdp/selectivity/css-selectivity.d.ts +13 -3
- package/build/src/browser/cdp/selectivity/css-selectivity.js +211 -62
- package/build/src/browser/cdp/selectivity/css-selectivity.js.map +1 -1
- package/build/src/browser/cdp/selectivity/fs-cache.d.ts +12 -0
- package/build/src/browser/cdp/selectivity/fs-cache.js +122 -0
- package/build/src/browser/cdp/selectivity/fs-cache.js.map +1 -0
- package/build/src/browser/cdp/selectivity/hash-provider.d.ts +1 -0
- package/build/src/browser/cdp/selectivity/hash-provider.js +5 -3
- package/build/src/browser/cdp/selectivity/hash-provider.js.map +1 -1
- package/build/src/browser/cdp/selectivity/hash-reader.d.ts +2 -3
- package/build/src/browser/cdp/selectivity/hash-reader.js +39 -26
- package/build/src/browser/cdp/selectivity/hash-reader.js.map +1 -1
- package/build/src/browser/cdp/selectivity/hash-writer.d.ts +2 -2
- package/build/src/browser/cdp/selectivity/hash-writer.js +16 -62
- package/build/src/browser/cdp/selectivity/hash-writer.js.map +1 -1
- package/build/src/browser/cdp/selectivity/index.d.ts +6 -2
- package/build/src/browser/cdp/selectivity/index.js +147 -24
- package/build/src/browser/cdp/selectivity/index.js.map +1 -1
- package/build/src/browser/cdp/selectivity/js-selectivity.d.ts +11 -4
- package/build/src/browser/cdp/selectivity/js-selectivity.js +200 -87
- package/build/src/browser/cdp/selectivity/js-selectivity.js.map +1 -1
- package/build/src/browser/cdp/selectivity/json-utils.d.ts +5 -0
- package/build/src/browser/cdp/selectivity/json-utils.js +19 -9
- package/build/src/browser/cdp/selectivity/json-utils.js.map +1 -1
- package/build/src/browser/cdp/selectivity/merge-dumps/index.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/index.js +28 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/index.js.map +1 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.js +39 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-hashes.js.map +1 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.d.ts +2 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.js +129 -0
- package/build/src/browser/cdp/selectivity/merge-dumps/merge-tests.js.map +1 -0
- package/build/src/browser/cdp/selectivity/modes.d.ts +4 -0
- package/build/src/browser/cdp/selectivity/modes.js +11 -0
- package/build/src/browser/cdp/selectivity/modes.js.map +1 -0
- package/build/src/browser/cdp/selectivity/runner.d.ts +5 -0
- package/build/src/browser/cdp/selectivity/runner.js +114 -22
- package/build/src/browser/cdp/selectivity/runner.js.map +1 -1
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.js +1 -1
- package/build/src/browser/cdp/selectivity/test-dependencies-reader.js.map +1 -1
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.js +1 -1
- package/build/src/browser/cdp/selectivity/test-dependencies-writer.js.map +1 -1
- package/build/src/browser/cdp/selectivity/testplane-selectivity.d.ts +3 -1
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js +64 -13
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js.map +1 -1
- package/build/src/browser/cdp/selectivity/types.d.ts +6 -0
- package/build/src/browser/cdp/selectivity/types.js.map +1 -1
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.d.ts +7 -0
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.js +25 -0
- package/build/src/browser/cdp/selectivity/used-dumps-tracker.js.map +1 -0
- package/build/src/browser/cdp/selectivity/utils.d.ts +18 -9
- package/build/src/browser/cdp/selectivity/utils.js +111 -34
- package/build/src/browser/cdp/selectivity/utils.js.map +1 -1
- package/build/src/browser/cdp/types.d.ts +214 -0
- package/build/src/browser/cdp/utils.d.ts +0 -6
- package/build/src/browser/cdp/utils.js +1 -6
- package/build/src/browser/cdp/utils.js.map +1 -1
- package/build/src/browser/client-bridge/index.js +7 -4
- package/build/src/browser/client-bridge/index.js.map +1 -1
- package/build/src/browser/client-scripts/browser-utils/build/bundle.compat.js +1 -1
- package/build/src/browser/client-scripts/browser-utils/build/bundle.native.js +1 -1
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/lib.compat.js +9 -1
- package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/lib.native.js +5 -1
- package/build/src/browser/client-scripts/calibrate.js +10 -3
- package/build/src/browser/client-scripts/rrweb-record.min.js +2 -2
- package/build/src/browser/client-scripts/screen-shooter/build/bundle.compat.js +35 -23
- package/build/src/browser/client-scripts/screen-shooter/build/bundle.native.js +20 -16
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/implementation.js +21 -8
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/operations.js +57 -29
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/dom.js +25 -1
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/lib.compat.js +9 -1
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/lib.native.js +5 -1
- package/build/src/browser/commands/assert-view/errors/image-diff-error.d.ts +1 -0
- package/build/src/browser/commands/assert-view/index.js +41 -15
- package/build/src/browser/commands/assert-view/index.js.map +1 -1
- package/build/src/browser/commands/openAndWait.js +23 -26
- package/build/src/browser/commands/openAndWait.js.map +1 -1
- package/build/src/browser/commands/restoreState/index.js +19 -8
- package/build/src/browser/commands/restoreState/index.js.map +1 -1
- package/build/src/browser/commands/saveState/index.d.ts +1 -2
- package/build/src/browser/commands/saveState/index.js +8 -12
- package/build/src/browser/commands/saveState/index.js.map +1 -1
- package/build/src/browser/commands/switchToRepl.js +27 -9
- package/build/src/browser/commands/switchToRepl.js.map +1 -1
- package/build/src/browser/existing-browser.d.ts +2 -0
- package/build/src/browser/existing-browser.js +15 -0
- package/build/src/browser/existing-browser.js.map +1 -1
- package/build/src/browser/history/index.d.ts +8 -1
- package/build/src/browser/history/index.js +46 -17
- package/build/src/browser/history/index.js.map +1 -1
- package/build/src/browser/history/rrweb.d.ts +3 -1
- package/build/src/browser/history/rrweb.js +158 -29
- package/build/src/browser/history/rrweb.js.map +1 -1
- package/build/src/browser/isomorphic/tsconfig.tsbuildinfo +1 -1
- package/build/src/browser/new-browser.d.ts +2 -1
- package/build/src/browser/new-browser.js +9 -12
- package/build/src/browser/new-browser.js.map +1 -1
- package/build/src/browser/screen-shooter/composite-image/index.d.ts +23 -0
- package/build/src/browser/screen-shooter/composite-image/index.js +161 -14
- package/build/src/browser/screen-shooter/composite-image/index.js.map +1 -1
- package/build/src/browser/screen-shooter/debug.d.ts +3 -0
- package/build/src/browser/screen-shooter/debug.js +25 -0
- package/build/src/browser/screen-shooter/debug.js.map +1 -0
- package/build/src/browser/screen-shooter/elements-screen-shooter.d.ts +0 -1
- package/build/src/browser/screen-shooter/elements-screen-shooter.js +120 -61
- package/build/src/browser/screen-shooter/elements-screen-shooter.js.map +1 -1
- package/build/src/browser/screen-shooter/full-page-screen-shooter.d.ts +3 -2
- package/build/src/browser/screen-shooter/full-page-screen-shooter.js +19 -15
- package/build/src/browser/screen-shooter/full-page-screen-shooter.js.map +1 -1
- package/build/src/browser/screen-shooter/operations/index.d.ts +1 -0
- package/build/src/browser/screen-shooter/operations/index.js +3 -1
- package/build/src/browser/screen-shooter/operations/index.js.map +1 -1
- package/build/src/browser/screen-shooter/operations/pointer-events.js +7 -0
- package/build/src/browser/screen-shooter/operations/pointer-events.js.map +1 -1
- package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.d.ts +6 -0
- package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.js +147 -0
- package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.js.map +1 -0
- package/build/src/browser/screen-shooter/viewport-screen-shooter.d.ts +2 -1
- package/build/src/browser/screen-shooter/viewport-screen-shooter.js +3 -5
- package/build/src/browser/screen-shooter/viewport-screen-shooter.js.map +1 -1
- package/build/src/browser/types.d.ts +6 -4
- package/build/src/browser/wsdriver/compression.d.ts +5 -0
- package/build/src/browser/wsdriver/compression.js +79 -0
- package/build/src/browser/wsdriver/compression.js.map +1 -0
- package/build/src/browser/wsdriver/constants.d.ts +11 -0
- package/build/src/browser/wsdriver/constants.js +15 -0
- package/build/src/browser/wsdriver/constants.js.map +1 -0
- package/build/src/browser/wsdriver/debug.d.ts +2 -0
- package/build/src/browser/wsdriver/debug.js +9 -0
- package/build/src/browser/wsdriver/debug.js.map +1 -0
- package/build/src/browser/wsdriver/error.d.ts +18 -0
- package/build/src/browser/wsdriver/error.js +36 -0
- package/build/src/browser/wsdriver/error.js.map +1 -0
- package/build/src/browser/wsdriver/index.d.ts +23 -0
- package/build/src/browser/wsdriver/index.js +261 -0
- package/build/src/browser/wsdriver/index.js.map +1 -0
- package/build/src/browser/wsdriver/request.d.ts +10 -0
- package/build/src/browser/wsdriver/request.js +58 -0
- package/build/src/browser/wsdriver/request.js.map +1 -0
- package/build/src/browser/wsdriver/response.d.ts +3 -0
- package/build/src/browser/wsdriver/response.js +111 -0
- package/build/src/browser/wsdriver/response.js.map +1 -0
- package/build/src/browser/wsdriver/types.d.ts +71 -0
- package/build/src/browser/wsdriver/types.js +27 -0
- package/build/src/browser/wsdriver/types.js.map +1 -0
- package/build/src/browser-installer/chromium/utils.js +1 -0
- package/build/src/browser-installer/chromium/utils.js.map +1 -1
- package/build/src/browser-installer/utils.js +50 -3
- package/build/src/browser-installer/utils.js.map +1 -1
- package/build/src/browser-pool/basic-pool.js +3 -1
- package/build/src/browser-pool/basic-pool.js.map +1 -1
- package/build/src/cli/commands/selectivity-merge-dumps/index.d.ts +2 -0
- package/build/src/cli/commands/selectivity-merge-dumps/index.js +50 -0
- package/build/src/cli/commands/selectivity-merge-dumps/index.js.map +1 -0
- package/build/src/cli/constants.d.ts +1 -0
- package/build/src/cli/constants.js +1 -0
- package/build/src/cli/constants.js.map +1 -1
- package/build/src/cli/index.js +13 -19
- package/build/src/cli/index.js.map +1 -1
- package/build/src/cli/repl-options.d.ts +3 -0
- package/build/src/cli/repl-options.js +16 -0
- package/build/src/cli/repl-options.js.map +1 -0
- package/build/src/config/browser-options.js +11 -3
- package/build/src/config/browser-options.js.map +1 -1
- package/build/src/config/defaults.d.ts +7 -2
- package/build/src/config/defaults.js +10 -5
- package/build/src/config/defaults.js.map +1 -1
- package/build/src/config/index.d.ts +10 -6
- package/build/src/config/index.js +67 -42
- package/build/src/config/index.js.map +1 -1
- package/build/src/config/types.d.ts +59 -14
- package/build/src/config/types.js +15 -5
- package/build/src/config/types.js.map +1 -1
- package/build/src/config/utils.d.ts +2 -2
- package/build/src/config/utils.js +11 -6
- package/build/src/config/utils.js.map +1 -1
- package/build/src/constants/config.d.ts +0 -1
- package/build/src/constants/config.js +1 -2
- package/build/src/constants/config.js.map +1 -1
- package/build/src/constants/png.d.ts +1 -0
- package/build/src/constants/repl.d.ts +2 -0
- package/build/src/constants/repl.js +6 -0
- package/build/src/constants/repl.js.map +1 -0
- package/build/src/dev-server/index.d.ts +1 -1
- package/build/src/dev-server/index.js +1 -1
- package/build/src/dev-server/index.js.map +1 -1
- package/build/src/globals.d.ts +7 -0
- package/build/src/globals.js +10 -0
- package/build/src/globals.js.map +1 -0
- package/build/src/image.d.ts +6 -1
- package/build/src/image.js +56 -2
- package/build/src/image.js.map +1 -1
- package/build/src/index.d.ts +3 -13
- package/build/src/index.js +5 -1
- package/build/src/index.js.map +1 -1
- package/build/src/runner/browser-env/vite/browser-modules/driver.js +6 -8
- package/build/src/runner/browser-env/vite/browser-modules/driver.js.map +1 -1
- package/build/src/runner/browser-env/vite/browser-modules/tsconfig.tsbuildinfo +1 -1
- package/build/src/runner/browser-env/vite/browser-modules/types.d.ts +1 -1
- package/build/src/runner/index.js +1 -0
- package/build/src/runner/index.js.map +1 -1
- package/build/src/runner/suite-monitor.d.ts +1 -1
- package/build/src/runner/test-runner/regular-test-runner.js +2 -2
- package/build/src/runner/test-runner/regular-test-runner.js.map +1 -1
- package/build/src/signal-handler.d.ts +2 -2
- package/build/src/signal-handler.js +24 -11
- package/build/src/signal-handler.js.map +1 -1
- package/build/src/test-reader/mocha-reader/mocha-event-bus.d.ts +1 -1
- package/build/src/test-reader/test-parser.js +3 -3
- package/build/src/test-reader/test-parser.js.map +1 -1
- package/build/src/testplane.d.ts +4 -5
- package/build/src/testplane.js +20 -10
- package/build/src/testplane.js.map +1 -1
- package/build/src/types/globals.d.ts +16 -0
- package/build/src/types/globals.js +3 -0
- package/build/src/types/globals.js.map +1 -0
- package/build/src/types/index.d.ts +2 -3
- package/build/src/utils/crypto.d.ts +1 -0
- package/build/src/utils/crypto.js +2 -1
- package/build/src/utils/crypto.js.map +1 -1
- package/build/src/utils/eight-bit-rgba-to-png.d.ts +1 -0
- package/build/src/utils/repl-instrumentation/index.d.ts +1 -0
- package/build/src/utils/repl-instrumentation/index.js +46 -0
- package/build/src/utils/repl-instrumentation/index.js.map +1 -0
- package/build/src/utils/repl-instrumentation/typescript.d.ts +7 -0
- package/build/src/utils/repl-instrumentation/typescript.js +307 -0
- package/build/src/utils/repl-instrumentation/typescript.js.map +1 -0
- package/build/src/utils/repl-module-hooks.d.ts +1 -0
- package/build/src/utils/repl-module-hooks.js +181 -0
- package/build/src/utils/repl-module-hooks.js.map +1 -0
- package/build/src/utils/workers-registry.d.ts +2 -2
- package/build/src/utils/workers-registry.js +1 -0
- package/build/src/utils/workers-registry.js.map +1 -1
- package/build/src/vendors/expect-webdriverio/matchers-overrides.d.ts +49 -0
- package/build/src/vendors/expect-webdriverio/matchers-overrides.js +3 -0
- package/build/src/vendors/expect-webdriverio/matchers-overrides.js.map +1 -0
- package/build/src/worker/runner/browser-pool.js +4 -1
- package/build/src/worker/runner/browser-pool.js.map +1 -1
- package/build/src/worker/runner/index.js +6 -3
- package/build/src/worker/runner/index.js.map +1 -1
- package/build/src/worker/runner/sequence-test-parser.js +5 -7
- package/build/src/worker/runner/sequence-test-parser.js.map +1 -1
- package/build/src/worker/runner/test-runner/capture-fail-screenshot.js +2 -3
- package/build/src/worker/runner/test-runner/capture-fail-screenshot.js.map +1 -1
- package/build/src/worker/runner/test-runner/execution-thread.d.ts +0 -1
- package/build/src/worker/runner/test-runner/execution-thread.js +0 -5
- package/build/src/worker/runner/test-runner/execution-thread.js.map +1 -1
- package/build/src/worker/runner/test-runner/index.d.ts +1 -0
- package/build/src/worker/runner/test-runner/index.js +47 -2
- package/build/src/worker/runner/test-runner/index.js.map +1 -1
- package/build/src/worker/testplane-facade.js +5 -3
- package/build/src/worker/testplane-facade.js.map +1 -1
- package/build/src/worker/testplane.d.ts +1 -0
- package/build/src/worker/testplane.js +4 -1
- package/build/src/worker/testplane.js.map +1 -1
- package/build/src/ws-connection/constants.d.ts +13 -0
- package/build/src/ws-connection/constants.js +17 -0
- package/build/src/ws-connection/constants.js.map +1 -0
- package/build/src/ws-connection/error.d.ts +52 -0
- package/build/src/ws-connection/error.js +84 -0
- package/build/src/ws-connection/error.js.map +1 -0
- package/build/src/ws-connection/index.d.ts +83 -0
- package/build/src/ws-connection/index.js +397 -0
- package/build/src/ws-connection/index.js.map +1 -0
- package/build/src/ws-connection/utils.d.ts +6 -0
- package/build/src/ws-connection/utils.js +9 -0
- package/build/src/ws-connection/utils.js.map +1 -0
- package/package.json +15 -15
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.WSDriverRequestAgent = void 0;
|
|
27
|
+
const http_1 = require("http");
|
|
28
|
+
const node_util_1 = require("node:util");
|
|
29
|
+
const debug_1 = require("./debug");
|
|
30
|
+
const error_1 = require("./error");
|
|
31
|
+
const constants_1 = require("./constants");
|
|
32
|
+
const types_1 = require("./types");
|
|
33
|
+
const logger = __importStar(require("../../utils/logger"));
|
|
34
|
+
const ws_connection_1 = require("../../ws-connection");
|
|
35
|
+
const constants_2 = require("../../ws-connection/constants");
|
|
36
|
+
const error_2 = require("../../ws-connection/error");
|
|
37
|
+
const response_1 = require("./response");
|
|
38
|
+
const request_1 = require("./request");
|
|
39
|
+
const utils_1 = require("../../ws-connection/utils");
|
|
40
|
+
class WSDriverRequestAgent {
|
|
41
|
+
constructor(wsdWsEndpoint, { sessionId, headers, requestTimeout, clientSupportedCompressionTypes }) {
|
|
42
|
+
headers ||= {};
|
|
43
|
+
headers[constants_1.WSD_ACCEPT_ENCODING_HEADER] = clientSupportedCompressionTypes.join(", ");
|
|
44
|
+
this._wsConnection = new ws_connection_1.WsConnection(wsdWsEndpoint, {
|
|
45
|
+
headers,
|
|
46
|
+
debugFn: debug_1.debugWSDriver,
|
|
47
|
+
retries: {
|
|
48
|
+
count: constants_1.WSD_CONNECTION_RETRIES,
|
|
49
|
+
baseDelay: constants_1.WSD_CONNECTION_RETRY_BASE_DELAY,
|
|
50
|
+
},
|
|
51
|
+
timeouts: {
|
|
52
|
+
request: requestTimeout,
|
|
53
|
+
createSession: constants_1.WSD_CONNECTION_TIMEOUT,
|
|
54
|
+
},
|
|
55
|
+
errors: {
|
|
56
|
+
ConnectionEstablishment: error_1.WSDriverRequestAgentEstablishmentError,
|
|
57
|
+
ConnectionBreak: error_1.WSDriverRequestAgentBreakError,
|
|
58
|
+
ConnectionTerminated: error_1.WSDriverRequestAgentTerminatedError,
|
|
59
|
+
ConnectionTimeout: error_1.WSDriverRequestAgentTimeoutError,
|
|
60
|
+
RequestTimeout: error_1.WSDriverRequestTimeoutError,
|
|
61
|
+
},
|
|
62
|
+
onMessage: this._onMessage.bind(this),
|
|
63
|
+
});
|
|
64
|
+
this._clientSupportedCompressionTypes = clientSupportedCompressionTypes;
|
|
65
|
+
this._sessionId = sessionId;
|
|
66
|
+
this._sessionPrefix = `/session/${sessionId}/`;
|
|
67
|
+
}
|
|
68
|
+
/** @description Creates WSDriverRequestAgent without establishing it */
|
|
69
|
+
static create({ sessionId, sessionCaps, headers = {}, browserConfig, }) {
|
|
70
|
+
if (!sessionCaps["se:wsdriver"]) {
|
|
71
|
+
throw new error_1.WSDriverError({ message: "Couldn't determine wsdriver endpoint" });
|
|
72
|
+
}
|
|
73
|
+
if (!sessionCaps["se:wsdriverVersion"]) {
|
|
74
|
+
throw new error_1.WSDriverError({ message: "Couldn't determine wsdriver supported versions" });
|
|
75
|
+
}
|
|
76
|
+
const wsdriverEndpoint = sessionCaps["se:wsdriver"];
|
|
77
|
+
const wsdriverSupportedVersions = sessionCaps["se:wsdriverVersion"].split(", ").map(Number).filter(Boolean);
|
|
78
|
+
const requestTimeout = browserConfig.httpTimeout;
|
|
79
|
+
const supportedVersions = wsdriverSupportedVersions.reduce((acc, val) => {
|
|
80
|
+
acc[val] = true;
|
|
81
|
+
return acc;
|
|
82
|
+
}, {});
|
|
83
|
+
const clientSupportedCompressionTypes = ["zstd" in process.versions ? "zstd" : null, "gzip"].filter(Boolean);
|
|
84
|
+
return new this(wsdriverEndpoint, {
|
|
85
|
+
sessionId,
|
|
86
|
+
headers,
|
|
87
|
+
requestTimeout,
|
|
88
|
+
clientSupportedCompressionTypes,
|
|
89
|
+
supportedVersions,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
close() {
|
|
93
|
+
this._wsConnection.close();
|
|
94
|
+
}
|
|
95
|
+
async _onMessage(data, isBinary) {
|
|
96
|
+
if (!isBinary) {
|
|
97
|
+
this._wsConnection.forceReconnect(`Unsupported data type: Expected binary, received text: ${(0, node_util_1.inspect)(data)}`);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const incomingMessage = await (0, response_1.parseWsDriverIncomingMessage)(data).catch((err) => err);
|
|
101
|
+
if (!incomingMessage) {
|
|
102
|
+
// Valid, but unsupported
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (incomingMessage instanceof Error) {
|
|
106
|
+
// Invalid message
|
|
107
|
+
this._wsConnection.forceReconnect(incomingMessage.message);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const message = incomingMessage;
|
|
111
|
+
if (debug_1.debugWSDriver.enabled) {
|
|
112
|
+
const header = message.rawBody.readUint8(1);
|
|
113
|
+
(0, debug_1.debugWSDriver)(`< ${(0, node_util_1.inspect)({
|
|
114
|
+
sessionId: this._sessionId,
|
|
115
|
+
requestId: message.requestId,
|
|
116
|
+
header: header.toString(2).padStart(8, "0"),
|
|
117
|
+
statusCode: message.statusCode,
|
|
118
|
+
body: message.body,
|
|
119
|
+
}, {
|
|
120
|
+
depth: 3,
|
|
121
|
+
maxStringLength: 150,
|
|
122
|
+
breakLength: Infinity,
|
|
123
|
+
compact: true,
|
|
124
|
+
})}`);
|
|
125
|
+
}
|
|
126
|
+
if (message.isProtocolError) {
|
|
127
|
+
logger.error("wsdriver: Protocol error occured while parsing message:", message);
|
|
128
|
+
this._wsConnection.provideResponseFor(message.requestId, new error_1.WSDriverRequestError({
|
|
129
|
+
message: "Protocol error: " + (0, node_util_1.inspect)(message.body),
|
|
130
|
+
requestId: message.requestId,
|
|
131
|
+
code: constants_2.WS_ERROR_CODE.PROTOCOL_ERROR,
|
|
132
|
+
}));
|
|
133
|
+
this._wsConnection.forceReconnect("Protocol error: " + (0, node_util_1.inspect)(message.body));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (message.body instanceof Error) {
|
|
137
|
+
logger.error("wsdriver: Malformed response:", message.body);
|
|
138
|
+
this._wsConnection.provideResponseFor(message.requestId, new error_1.WSDriverRequestError({
|
|
139
|
+
message: message.body.message,
|
|
140
|
+
requestId: message.requestId,
|
|
141
|
+
code: constants_2.WS_ERROR_CODE.MALFORMED_RESPONSE,
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
this._wsConnection.provideResponseFor(message.requestId, message);
|
|
145
|
+
}
|
|
146
|
+
async _getRequestCompressionType() {
|
|
147
|
+
if (typeof this._serverSupportedCompressionType !== "undefined") {
|
|
148
|
+
return this._serverSupportedCompressionType;
|
|
149
|
+
}
|
|
150
|
+
const { responseHeaders } = await this._getConnectionProperties();
|
|
151
|
+
if (!responseHeaders || !responseHeaders[constants_1.WSD_ACCEPT_ENCODING_HEADER]) {
|
|
152
|
+
return (this._serverSupportedCompressionType = types_1.WsDriverCompression.None);
|
|
153
|
+
}
|
|
154
|
+
const serverAcceptEncodingHeaders = responseHeaders[constants_1.WSD_ACCEPT_ENCODING_HEADER].concat(", ");
|
|
155
|
+
const serverAcceptEncodings = serverAcceptEncodingHeaders.split(", ");
|
|
156
|
+
for (const clientSupportedEncoding of this._clientSupportedCompressionTypes) {
|
|
157
|
+
if (serverAcceptEncodings.includes(clientSupportedEncoding)) {
|
|
158
|
+
if (clientSupportedEncoding === "zstd") {
|
|
159
|
+
return (this._serverSupportedCompressionType = types_1.WsDriverCompression.ZSTD);
|
|
160
|
+
}
|
|
161
|
+
else if (clientSupportedEncoding === "gzip") {
|
|
162
|
+
return (this._serverSupportedCompressionType = types_1.WsDriverCompression.GZIP);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return (this._serverSupportedCompressionType = types_1.WsDriverCompression.None);
|
|
167
|
+
}
|
|
168
|
+
_getConnectionProperties() {
|
|
169
|
+
return this._wsConnection.getConnectionProperties();
|
|
170
|
+
}
|
|
171
|
+
/** @description Performs high-level WSDriver request with timeout */
|
|
172
|
+
async request(url, options) {
|
|
173
|
+
let requestId;
|
|
174
|
+
let result;
|
|
175
|
+
for (let retriesLeft = constants_1.WSD_REQUEST_RETRIES; retriesLeft >= 0; retriesLeft--) {
|
|
176
|
+
requestId = this._wsConnection.getRequestId();
|
|
177
|
+
const requestMessage = await (0, request_1.constructWsDriverRequest)(url, options, {
|
|
178
|
+
requestId,
|
|
179
|
+
sessionPrefix: this._sessionPrefix,
|
|
180
|
+
compressionType: await this._getRequestCompressionType(),
|
|
181
|
+
});
|
|
182
|
+
if (debug_1.debugWSDriver.enabled) {
|
|
183
|
+
const header = requestMessage.readUint8(1);
|
|
184
|
+
const commandEndIdx = requestMessage.indexOf(0, 8);
|
|
185
|
+
const command = requestMessage.subarray(8, commandEndIdx).toString();
|
|
186
|
+
(0, debug_1.debugWSDriver)(`> ${(0, node_util_1.inspect)({
|
|
187
|
+
sessionId: this._sessionId,
|
|
188
|
+
requestId,
|
|
189
|
+
header: header.toString(2).padStart(8, "0"),
|
|
190
|
+
method: options.method,
|
|
191
|
+
command,
|
|
192
|
+
body: options.json,
|
|
193
|
+
}, {
|
|
194
|
+
depth: 3,
|
|
195
|
+
maxStringLength: 150,
|
|
196
|
+
breakLength: Infinity,
|
|
197
|
+
compact: true,
|
|
198
|
+
})}`);
|
|
199
|
+
}
|
|
200
|
+
result = (await this._wsConnection.makeRequest(requestId, requestMessage).catch((err) => err));
|
|
201
|
+
if (result instanceof error_1.WSDriverRequestTimeoutError) {
|
|
202
|
+
const requestError = new Error(result.message);
|
|
203
|
+
requestError.stack = result.stack;
|
|
204
|
+
// error code should be "ETIMEDOUT" for webdriver to be able to retry
|
|
205
|
+
requestError.code = "ETIMEDOUT";
|
|
206
|
+
throw requestError;
|
|
207
|
+
}
|
|
208
|
+
if (!(result instanceof error_2.WsError) || !result.isRetryable() || retriesLeft <= 0) {
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
if (debug_1.debugWSDriver.enabled) {
|
|
212
|
+
const header = requestMessage.readUint8(1);
|
|
213
|
+
const commandEndIdx = requestMessage.indexOf(0, 8);
|
|
214
|
+
const command = requestMessage.subarray(8, commandEndIdx).toString();
|
|
215
|
+
(0, debug_1.debugWSDriver)(`⟳ ${(0, node_util_1.inspect)({
|
|
216
|
+
sessionId: this._sessionId,
|
|
217
|
+
requestId,
|
|
218
|
+
header: header.toString(2).padStart(8, "0"),
|
|
219
|
+
method: options.method,
|
|
220
|
+
command,
|
|
221
|
+
body: options.json,
|
|
222
|
+
errorMessage: result.message,
|
|
223
|
+
retriesLeft: retriesLeft,
|
|
224
|
+
})}`);
|
|
225
|
+
}
|
|
226
|
+
await (0, utils_1.exponentiallyWait)({
|
|
227
|
+
baseDelay: constants_1.WSD_REQUEST_RETRY_BASE_DELAY,
|
|
228
|
+
attempt: constants_1.WSD_REQUEST_RETRIES - retriesLeft,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
if (result instanceof error_2.WsError) {
|
|
232
|
+
throw result;
|
|
233
|
+
}
|
|
234
|
+
const response = {
|
|
235
|
+
url: url.toString(),
|
|
236
|
+
method: options.method,
|
|
237
|
+
requestId,
|
|
238
|
+
statusCode: result.statusCode,
|
|
239
|
+
statusMessage: http_1.STATUS_CODES[result.statusCode],
|
|
240
|
+
req: {
|
|
241
|
+
id: requestId,
|
|
242
|
+
method: options.method,
|
|
243
|
+
path: options.path,
|
|
244
|
+
host: url.host,
|
|
245
|
+
},
|
|
246
|
+
request: {
|
|
247
|
+
id: requestId,
|
|
248
|
+
options,
|
|
249
|
+
requestUrl: url,
|
|
250
|
+
},
|
|
251
|
+
ok: result.statusCode >= 200 && result.statusCode < 300,
|
|
252
|
+
rawBody: result.rawBody,
|
|
253
|
+
body: result.body,
|
|
254
|
+
};
|
|
255
|
+
response.req.res = response;
|
|
256
|
+
response.request.response = response;
|
|
257
|
+
return response;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
exports.WSDriverRequestAgent = WSDriverRequestAgent;
|
|
261
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser/wsdriver/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { RequestWsDriverOptions, WsDriverCompressionType } from "./types";
|
|
4
|
+
interface ConnectionOptions {
|
|
5
|
+
requestId: number;
|
|
6
|
+
sessionPrefix: string;
|
|
7
|
+
compressionType: WsDriverCompressionType;
|
|
8
|
+
}
|
|
9
|
+
export declare const constructWsDriverRequest: (url: URL, requestOptions: RequestWsDriverOptions, connectionOptions: ConnectionOptions) => Promise<Buffer>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.constructWsDriverRequest = void 0;
|
|
4
|
+
/* eslint-disable no-bitwise */
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const compression_1 = require("./compression");
|
|
8
|
+
const WSDRIVER_VERSION = 1;
|
|
9
|
+
// version, header, requestId, requestMethod, command null-terminator
|
|
10
|
+
const OUTGOING_MESSAGE_AUXILIARY_BYTES = 1 + 1 + 4 + 2 + 1;
|
|
11
|
+
const constructHeaderByte = (compressionType, isJson) => {
|
|
12
|
+
let headerByte = 0;
|
|
13
|
+
headerByte |= types_1.WsDriverMessage.Request << 4;
|
|
14
|
+
headerByte |= compressionType << 2;
|
|
15
|
+
headerByte |= +isJson << 1;
|
|
16
|
+
return headerByte;
|
|
17
|
+
};
|
|
18
|
+
const getRequestMethod = (method) => {
|
|
19
|
+
if (!method) {
|
|
20
|
+
return types_1.WsDriverMethod.get;
|
|
21
|
+
}
|
|
22
|
+
const methodLowerCase = method.toLowerCase();
|
|
23
|
+
const encodedMethodType = types_1.WsDriverMethod[methodLowerCase];
|
|
24
|
+
if (typeof encodedMethodType !== "undefined") {
|
|
25
|
+
return encodedMethodType;
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`Unsupported method: "${method}"`);
|
|
28
|
+
};
|
|
29
|
+
const constructWsDriverRequest = async (url, requestOptions, connectionOptions) => {
|
|
30
|
+
const commandStartIdx = url.pathname.indexOf(connectionOptions.sessionPrefix);
|
|
31
|
+
if (commandStartIdx === -1) {
|
|
32
|
+
throw new Error("Not session-related request");
|
|
33
|
+
}
|
|
34
|
+
const command = decodeURIComponent(url.pathname.slice(commandStartIdx + connectionOptions.sessionPrefix.length));
|
|
35
|
+
const bodyPayload = requestOptions.json ? Buffer.from(JSON.stringify(requestOptions.json)) : Buffer.alloc(0);
|
|
36
|
+
const shouldCompress = connectionOptions.compressionType !== types_1.WsDriverCompression.None &&
|
|
37
|
+
Buffer.byteLength(bodyPayload) >= constants_1.WSD_COMPRESSION_THRESHOLD_BYTES;
|
|
38
|
+
const compressedPayload = shouldCompress
|
|
39
|
+
? await (0, compression_1.getCompressed)(bodyPayload, connectionOptions.compressionType)
|
|
40
|
+
: bodyPayload;
|
|
41
|
+
const headerByte = constructHeaderByte(shouldCompress ? connectionOptions.compressionType : types_1.WsDriverCompression.None, true);
|
|
42
|
+
const requestMethod = getRequestMethod(requestOptions.method);
|
|
43
|
+
const resultMessage = Buffer.alloc(OUTGOING_MESSAGE_AUXILIARY_BYTES + Buffer.byteLength(command) + Buffer.byteLength(compressedPayload));
|
|
44
|
+
let ptr = 0;
|
|
45
|
+
ptr = resultMessage.writeUInt8(WSDRIVER_VERSION);
|
|
46
|
+
ptr = resultMessage.writeUint8(headerByte, ptr);
|
|
47
|
+
ptr = resultMessage.writeUint32BE(connectionOptions.requestId, ptr);
|
|
48
|
+
ptr = resultMessage.writeUint16BE(requestMethod, ptr);
|
|
49
|
+
ptr += resultMessage.write(command, ptr, "utf8");
|
|
50
|
+
ptr = resultMessage.writeUint8(0, ptr);
|
|
51
|
+
ptr += compressedPayload.copy(resultMessage, ptr);
|
|
52
|
+
if (ptr !== resultMessage.byteLength) {
|
|
53
|
+
throw new Error("WSDriver request message construction failed");
|
|
54
|
+
}
|
|
55
|
+
return resultMessage;
|
|
56
|
+
};
|
|
57
|
+
exports.constructWsDriverRequest = constructWsDriverRequest;
|
|
58
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../src/browser/wsdriver/request.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,mCAQiB;AACjB,2CAA8D;AAC9D,+CAA8C;AAc9C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,qEAAqE;AACrE,MAAM,gCAAgC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3D,MAAM,mBAAmB,GAAG,CAAC,eAAwC,EAAE,MAAe,EAAU,EAAE;IAC9F,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,UAAU,IAAI,uBAAe,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3C,UAAU,IAAI,eAAe,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAE3B,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAgC,EAAsB,EAAE;IAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,sBAAc,CAAC,GAAG,CAAC;IAC9B,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,iBAAiB,GAAG,sBAAc,CAAC,eAA8C,CAAC,CAAC;IAEzF,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE,CAAC;QAC3C,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC;AAEK,MAAM,wBAAwB,GAAG,KAAK,EACzC,GAAQ,EACR,cAAsC,EACtC,iBAAoC,EACrB,EAAE;IACjB,MAAM,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAE9E,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACjH,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,cAAc,GAChB,iBAAiB,CAAC,eAAe,KAAK,2BAAmB,CAAC,IAAI;QAC9D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,2CAA+B,CAAC;IACtE,MAAM,iBAAiB,GAAG,cAAc;QACpC,CAAC,CAAC,MAAM,IAAA,2BAAa,EAAC,WAAW,EAAE,iBAAiB,CAAC,eAAe,CAAC;QACrE,CAAC,CAAC,WAAW,CAAC;IAClB,MAAM,UAAU,GAAG,mBAAmB,CAClC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,2BAAmB,CAAC,IAAI,EAC7E,IAAI,CACP,CAAC;IACF,MAAM,aAAa,GAAG,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAC9B,gCAAgC,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CACvG,CAAC;IAEF,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACjD,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAChD,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACpE,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACtD,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAElD,IAAI,GAAG,KAAK,aAAa,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AA5CW,QAAA,wBAAwB,4BA4CnC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.parseWsDriverIncomingMessage = void 0;
|
|
27
|
+
/* eslint-disable no-bitwise */
|
|
28
|
+
const util_1 = require("util");
|
|
29
|
+
const types_1 = require("./types");
|
|
30
|
+
const logger = __importStar(require("../../utils/logger"));
|
|
31
|
+
const compression_1 = require("./compression");
|
|
32
|
+
const debug_1 = require("./debug");
|
|
33
|
+
const WSDRIVER_VERSION = 1;
|
|
34
|
+
// version, header, requestId, responseStatus, command null-terminator
|
|
35
|
+
const MIN_INCOMING_MESSAGE_LENGTH_BYTES = 1 + 1 + 4 + 2 + 1;
|
|
36
|
+
const rawDataToBuffer = (rawData) => {
|
|
37
|
+
if (rawData instanceof Buffer) {
|
|
38
|
+
return rawData;
|
|
39
|
+
}
|
|
40
|
+
if (Array.isArray(rawData)) {
|
|
41
|
+
return Buffer.concat(rawData);
|
|
42
|
+
}
|
|
43
|
+
return Buffer.from(rawData);
|
|
44
|
+
};
|
|
45
|
+
// https://github.com/gemini-testing/selenoid/blob/master/wsdriver/ws_req.go#L78-L85
|
|
46
|
+
const parseWsDriverIncomingMessage = async (incomingMessage) => {
|
|
47
|
+
const data = rawDataToBuffer(incomingMessage);
|
|
48
|
+
if (data.length < MIN_INCOMING_MESSAGE_LENGTH_BYTES) {
|
|
49
|
+
return new Error(`Invalid incoming message "${(0, util_1.inspect)(incomingMessage)}": too short`);
|
|
50
|
+
}
|
|
51
|
+
const messageVersion = data.readUInt8(0);
|
|
52
|
+
if (messageVersion !== WSDRIVER_VERSION) {
|
|
53
|
+
logger.warn(`wsdriver: Unexpected message version. Expected '${WSDRIVER_VERSION}', got '${messageVersion}'`);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const messageHeaders = data.readUInt8(1);
|
|
57
|
+
const messageType = (messageHeaders >> 4);
|
|
58
|
+
const compressionType = ((messageHeaders >> 2) & 0b11);
|
|
59
|
+
const isJson = Boolean((messageHeaders >> 1) & 0b1);
|
|
60
|
+
const isProtocolError = Boolean(messageHeaders & 0b1);
|
|
61
|
+
if (messageType !== types_1.WsDriverMessage.Response) {
|
|
62
|
+
logger.warn(`wsdriver: Unexpected message type. Expected '${types_1.WsDriverMessage.Response}', got '${messageType}'`);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const requestId = data.readUInt32BE(2);
|
|
66
|
+
const statusCode = data.readUInt16BE(6);
|
|
67
|
+
const requestPathEnd = data.indexOf(0, 8);
|
|
68
|
+
if (requestPathEnd === -1) {
|
|
69
|
+
return new Error(`Invalid incoming message with id ${requestId}: absent null-terminator for requestPath`);
|
|
70
|
+
}
|
|
71
|
+
const requestPath = data.toString("utf8", 8, requestPathEnd);
|
|
72
|
+
const rawBody = data.subarray(requestPathEnd + 1);
|
|
73
|
+
let body;
|
|
74
|
+
try {
|
|
75
|
+
const decompressedBody = rawBody.byteLength
|
|
76
|
+
? await (0, compression_1.getDecompressed)(rawBody, compressionType).catch(err => err)
|
|
77
|
+
: null;
|
|
78
|
+
if (!rawBody.byteLength || !decompressedBody) {
|
|
79
|
+
body = rawBody.toString("utf8");
|
|
80
|
+
}
|
|
81
|
+
else if (decompressedBody instanceof Error) {
|
|
82
|
+
body = decompressedBody;
|
|
83
|
+
}
|
|
84
|
+
else if (isJson) {
|
|
85
|
+
try {
|
|
86
|
+
body = JSON.parse(decompressedBody.toString("utf8"));
|
|
87
|
+
}
|
|
88
|
+
catch (cause) {
|
|
89
|
+
(0, debug_1.debugWSDriver)("Couldn't parse incoming JSON payload: %O", cause);
|
|
90
|
+
body = decompressedBody.toString("utf8");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
body = decompressedBody.toString("utf8");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
body = err;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
requestId,
|
|
102
|
+
statusCode,
|
|
103
|
+
isJson,
|
|
104
|
+
isProtocolError,
|
|
105
|
+
requestPath,
|
|
106
|
+
body,
|
|
107
|
+
rawBody,
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
exports.parseWsDriverIncomingMessage = parseWsDriverIncomingMessage;
|
|
111
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../src/browser/wsdriver/response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
export declare const WsDriverMessage: {
|
|
4
|
+
readonly Request: 0;
|
|
5
|
+
readonly Response: 1;
|
|
6
|
+
};
|
|
7
|
+
export type WsDriverMessageType = (typeof WsDriverMessage)[keyof typeof WsDriverMessage];
|
|
8
|
+
export declare const WsDriverCompression: {
|
|
9
|
+
readonly None: 0;
|
|
10
|
+
readonly GZIP: 1;
|
|
11
|
+
readonly ZSTD: 2;
|
|
12
|
+
};
|
|
13
|
+
export type WsDriverCompressionType = (typeof WsDriverCompression)[keyof typeof WsDriverCompression];
|
|
14
|
+
export declare const WsDriverMethod: {
|
|
15
|
+
readonly get: 0;
|
|
16
|
+
readonly head: 1;
|
|
17
|
+
readonly post: 2;
|
|
18
|
+
readonly put: 3;
|
|
19
|
+
readonly delete: 4;
|
|
20
|
+
readonly connect: 5;
|
|
21
|
+
readonly options: 6;
|
|
22
|
+
readonly trace: 7;
|
|
23
|
+
readonly patch: 8;
|
|
24
|
+
};
|
|
25
|
+
export type WsDriverMethodType = (typeof WsDriverMethod)[keyof typeof WsDriverMethod];
|
|
26
|
+
export type WsDriverRequestMethodString = "get" | "head" | "post" | "put" | "delete" | "options" | "trace" | "patch" | "GET" | "POST" | "PUT" | "PATCH" | "HEAD" | "DELETE" | "OPTIONS" | "TRACE";
|
|
27
|
+
interface IncomingWsDriverGeneralMessage {
|
|
28
|
+
requestId: number;
|
|
29
|
+
statusCode: number;
|
|
30
|
+
isProtocolError: boolean;
|
|
31
|
+
requestPath: string;
|
|
32
|
+
rawBody: Buffer;
|
|
33
|
+
}
|
|
34
|
+
interface IncomingWsDriverJsonMessage extends IncomingWsDriverGeneralMessage {
|
|
35
|
+
isJson: true;
|
|
36
|
+
body: Error | Record<string, unknown>;
|
|
37
|
+
}
|
|
38
|
+
interface IncomingWsDriverStringMessage extends IncomingWsDriverGeneralMessage {
|
|
39
|
+
isJson: false;
|
|
40
|
+
body: Error | string;
|
|
41
|
+
}
|
|
42
|
+
export type IncomingWsDriverMessage = IncomingWsDriverJsonMessage | IncomingWsDriverStringMessage;
|
|
43
|
+
export interface RequestWsDriverOptions {
|
|
44
|
+
path?: string;
|
|
45
|
+
method?: WsDriverRequestMethodString;
|
|
46
|
+
json?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
export interface RequestWsDriverResponse {
|
|
49
|
+
url: string;
|
|
50
|
+
method: string;
|
|
51
|
+
requestId: number;
|
|
52
|
+
statusCode: number;
|
|
53
|
+
statusMessage: string;
|
|
54
|
+
req: {
|
|
55
|
+
id: number;
|
|
56
|
+
method: string;
|
|
57
|
+
path: string;
|
|
58
|
+
host: string;
|
|
59
|
+
res: RequestWsDriverResponse;
|
|
60
|
+
};
|
|
61
|
+
request: {
|
|
62
|
+
id: number;
|
|
63
|
+
options: RequestWsDriverOptions;
|
|
64
|
+
requestUrl: URL;
|
|
65
|
+
response: RequestWsDriverResponse;
|
|
66
|
+
};
|
|
67
|
+
ok: boolean;
|
|
68
|
+
rawBody: Buffer;
|
|
69
|
+
body: unknown;
|
|
70
|
+
}
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WsDriverMethod = exports.WsDriverCompression = exports.WsDriverMessage = void 0;
|
|
4
|
+
// https://github.com/gemini-testing/selenoid/blob/master/wsdriver/ws_req.go#L11-L16
|
|
5
|
+
exports.WsDriverMessage = {
|
|
6
|
+
Request: 0,
|
|
7
|
+
Response: 1,
|
|
8
|
+
};
|
|
9
|
+
// https://github.com/gemini-testing/selenoid/blob/master/wsdriver/ws_req.go#L18-L24
|
|
10
|
+
exports.WsDriverCompression = {
|
|
11
|
+
None: 0,
|
|
12
|
+
GZIP: 1,
|
|
13
|
+
ZSTD: 2,
|
|
14
|
+
};
|
|
15
|
+
// https://github.com/gemini-testing/selenoid/blob/master/wsdriver/ws_req.go#L33-L60
|
|
16
|
+
exports.WsDriverMethod = {
|
|
17
|
+
get: 0,
|
|
18
|
+
head: 1,
|
|
19
|
+
post: 2,
|
|
20
|
+
put: 3,
|
|
21
|
+
delete: 4,
|
|
22
|
+
connect: 5,
|
|
23
|
+
options: 6,
|
|
24
|
+
trace: 7,
|
|
25
|
+
patch: 8,
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/browser/wsdriver/types.ts"],"names":[],"mappings":";;;AAAA,oFAAoF;AACvE,QAAA,eAAe,GAAG;IAC3B,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;CACL,CAAC;AAIX,oFAAoF;AACvE,QAAA,mBAAmB,GAAG;IAC/B,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACD,CAAC;AAIX,oFAAoF;AACvE,QAAA,cAAc,GAAG;IAC1B,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;CACF,CAAC"}
|
|
@@ -18,6 +18,7 @@ exports.getChromiumBuildId = getChromiumBuildId;
|
|
|
18
18
|
const getChromeDriverArchiveUrl = (version) => {
|
|
19
19
|
const chromeDriverArchiveName = {
|
|
20
20
|
linux: "linux64",
|
|
21
|
+
linux_arm: "linux64", // eslint-disable-line camelcase
|
|
21
22
|
mac: "mac64",
|
|
22
23
|
mac_arm: "mac64_m1", // eslint-disable-line camelcase
|
|
23
24
|
win32: "win32",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/browser-installer/chromium/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,wDAA0B;AAC1B,kDAAsD;AACtD,oCAA2D;AAC3D,4CAAmG;AAE5F,MAAM,kBAAkB,GAAG,KAAK,EAAE,QAAyB,EAAE,SAA0B,EAAmB,EAAE;IAC/G,MAAM,SAAS,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,QAAQ,OAAO,CAAC,CAAC,CAAC;IAEnG,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B;AAEK,MAAM,yBAAyB,GAAG,CAAC,OAAe,EAAU,EAAE;IACjE,MAAM,uBAAuB,GAAoC;QAC7D,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,OAAO;QACZ,OAAO,EAAE,UAAU,EAAE,gCAAgC;QACrD,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACjB,CAAC;IAEF,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,WAAW,GACb,QAAQ,KAAK,0BAAe,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,qDAAyC,CAAC;IAC3G,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,GAAG,oCAAwB,IAAI,OAAO,iBAAiB,WAAW,MAAM,CAAC;IAE5F,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/browser-installer/chromium/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,wDAA0B;AAC1B,kDAAsD;AACtD,oCAA2D;AAC3D,4CAAmG;AAE5F,MAAM,kBAAkB,GAAG,KAAK,EAAE,QAAyB,EAAE,SAA0B,EAAmB,EAAE;IAC/G,MAAM,SAAS,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,QAAQ,OAAO,CAAC,CAAC,CAAC;IAEnG,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B;AAEK,MAAM,yBAAyB,GAAG,CAAC,OAAe,EAAU,EAAE;IACjE,MAAM,uBAAuB,GAAoC;QAC7D,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,SAAS,EAAE,gCAAgC;QACtD,GAAG,EAAE,OAAO;QACZ,OAAO,EAAE,UAAU,EAAE,gCAAgC;QACrD,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACjB,CAAC;IAEF,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,WAAW,GACb,QAAQ,KAAK,0BAAe,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,qDAAyC,CAAC;IAC3G,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,GAAG,oCAAwB,IAAI,OAAO,iBAAiB,WAAW,MAAM,CAAC;IAE5F,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAlBW,QAAA,yBAAyB,6BAkBpC;AAEK,MAAM,6BAA6B,GAAG,CAAC,OAAe,EAAU,EAAE;IACrE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzE,OAAO,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,OAAO,IAAI,YAAY,MAAM,CAAC,CAAC;AACjF,CAAC,CAAC;AAJW,QAAA,6BAA6B,iCAIxC"}
|