testplane 9.1.1 → 9.2.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 +2 -2
- package/build/src/base-testplane.d.ts +17 -1
- package/build/src/base-testplane.js +43 -9
- package/build/src/base-testplane.js.map +1 -1
- package/build/src/browser/browser.d.ts +3 -0
- package/build/src/browser/browser.js +4 -2
- package/build/src/browser/browser.js.map +1 -1
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js +19 -19
- package/build/src/browser/cdp/selectivity/testplane-selectivity.js.map +1 -1
- package/build/src/browser/client-scripts/screen-shooter/build/bundle.compat.js +2 -2
- package/build/src/browser/client-scripts/screen-shooter/build/bundle.native.js +2 -2
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/implementation.js +52 -84
- package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/operations.js +4 -1
- package/build/src/browser/commands/assert-view/index.js +25 -2
- package/build/src/browser/commands/assert-view/index.js.map +1 -1
- package/build/src/browser/existing-browser.js +8 -1
- package/build/src/browser/existing-browser.js.map +1 -1
- package/build/src/browser/history/index.d.ts +4 -2
- package/build/src/browser/history/index.js +146 -67
- package/build/src/browser/history/index.js.map +1 -1
- package/build/src/browser/new-browser.js +1 -1
- package/build/src/browser/new-browser.js.map +1 -1
- package/build/src/browser/screen-shooter/elements-screen-shooter.d.ts +5 -0
- package/build/src/browser/screen-shooter/elements-screen-shooter.js +102 -55
- package/build/src/browser/screen-shooter/elements-screen-shooter.js.map +1 -1
- package/build/src/browser/screen-shooter/viewport-screen-shooter.d.ts +4 -0
- package/build/src/browser/screen-shooter/viewport-screen-shooter.js +29 -7
- package/build/src/browser/screen-shooter/viewport-screen-shooter.js.map +1 -1
- package/build/src/browser-pool/basic-pool.d.ts +4 -3
- package/build/src/browser-pool/basic-pool.js +39 -7
- package/build/src/browser-pool/basic-pool.js.map +1 -1
- package/build/src/browser-pool/caching-pool.d.ts +3 -2
- package/build/src/browser-pool/caching-pool.js +19 -7
- package/build/src/browser-pool/caching-pool.js.map +1 -1
- package/build/src/browser-pool/index.d.ts +2 -1
- package/build/src/browser-pool/index.js +8 -4
- package/build/src/browser-pool/index.js.map +1 -1
- package/build/src/browser-pool/limited-pool.d.ts +5 -1
- package/build/src/browser-pool/limited-pool.js +42 -4
- package/build/src/browser-pool/limited-pool.js.map +1 -1
- package/build/src/browser-pool/per-browser-limited-pool.d.ts +2 -2
- package/build/src/browser-pool/per-browser-limited-pool.js +2 -1
- package/build/src/browser-pool/per-browser-limited-pool.js.map +1 -1
- package/build/src/browser-pool/types.d.ts +8 -0
- package/build/src/cli/commands/config/index.js +7 -3
- package/build/src/cli/commands/config/index.js.map +1 -1
- package/build/src/cli/commands/install-deps/index.js +46 -38
- package/build/src/cli/commands/install-deps/index.js.map +1 -1
- package/build/src/cli/commands/list-browsers/index.js +15 -11
- package/build/src/cli/commands/list-browsers/index.js.map +1 -1
- package/build/src/cli/commands/list-tests/index.js +25 -21
- package/build/src/cli/commands/list-tests/index.js.map +1 -1
- package/build/src/cli/commands/selectivity-merge-dumps/index.js +12 -5
- package/build/src/cli/commands/selectivity-merge-dumps/index.js.map +1 -1
- package/build/src/cli/index.js +10 -6
- package/build/src/cli/index.js.map +1 -1
- package/build/src/config/defaults.d.ts +5 -0
- package/build/src/config/defaults.js +4 -0
- package/build/src/config/defaults.js.map +1 -1
- package/build/src/config/index.d.ts +6 -4
- package/build/src/config/index.js +60 -19
- package/build/src/config/index.js.map +1 -1
- package/build/src/config/options.js +26 -0
- package/build/src/config/options.js.map +1 -1
- package/build/src/config/types.d.ts +19 -0
- package/build/src/constants/process-messages.d.ts +3 -0
- package/build/src/constants/process-messages.js +4 -1
- package/build/src/constants/process-messages.js.map +1 -1
- package/build/src/events/async-emitter/index.d.ts +38 -0
- package/build/src/events/async-emitter/index.js +248 -5
- package/build/src/events/async-emitter/index.js.map +1 -1
- package/build/src/events/index.d.ts +3 -0
- package/build/src/events/index.js +1 -0
- package/build/src/events/index.js.map +1 -1
- package/build/src/index.d.ts +2 -1
- package/build/src/profiler/analysis/aggregator.d.ts +19 -0
- package/build/src/profiler/analysis/aggregator.js +229 -0
- package/build/src/profiler/analysis/aggregator.js.map +1 -0
- package/build/src/profiler/analysis/analyzers.d.ts +10 -0
- package/build/src/profiler/analysis/analyzers.js +1228 -0
- package/build/src/profiler/analysis/analyzers.js.map +1 -0
- package/build/src/profiler/analysis/compact.d.ts +5 -0
- package/build/src/profiler/analysis/compact.js +46 -0
- package/build/src/profiler/analysis/compact.js.map +1 -0
- package/build/src/profiler/analysis/finding-order.d.ts +4 -0
- package/build/src/profiler/analysis/finding-order.js +28 -0
- package/build/src/profiler/analysis/finding-order.js.map +1 -0
- package/build/src/profiler/analysis/outliers.d.ts +6 -0
- package/build/src/profiler/analysis/outliers.js +49 -0
- package/build/src/profiler/analysis/outliers.js.map +1 -0
- package/build/src/profiler/analysis/policy-v1.d.ts +71 -0
- package/build/src/profiler/analysis/policy-v1.js +43 -0
- package/build/src/profiler/analysis/policy-v1.js.map +1 -0
- package/build/src/profiler/collectors/module-graph.d.ts +14 -0
- package/build/src/profiler/collectors/module-graph.js +99 -0
- package/build/src/profiler/collectors/module-graph.js.map +1 -0
- package/build/src/profiler/collectors/pool-observer.d.ts +9 -0
- package/build/src/profiler/collectors/pool-observer.js +40 -0
- package/build/src/profiler/collectors/pool-observer.js.map +1 -0
- package/build/src/profiler/manager.d.ts +55 -0
- package/build/src/profiler/manager.js +343 -0
- package/build/src/profiler/manager.js.map +1 -0
- package/build/src/profiler/output/console.d.ts +6 -0
- package/build/src/profiler/output/console.js +443 -0
- package/build/src/profiler/output/console.js.map +1 -0
- package/build/src/profiler/output/json.d.ts +2 -0
- package/build/src/profiler/output/json.js +24 -0
- package/build/src/profiler/output/json.js.map +1 -0
- package/build/src/profiler/retention/operation-store.d.ts +22 -0
- package/build/src/profiler/retention/operation-store.js +110 -0
- package/build/src/profiler/retention/operation-store.js.map +1 -0
- package/build/src/profiler/retention/policy-v1.d.ts +22 -0
- package/build/src/profiler/retention/policy-v1.js +49 -0
- package/build/src/profiler/retention/policy-v1.js.map +1 -0
- package/build/src/profiler/retention/result-budget.d.ts +2 -0
- package/build/src/profiler/retention/result-budget.js +117 -0
- package/build/src/profiler/retention/result-budget.js.map +1 -0
- package/build/src/profiler/retention/serialized-budget.d.ts +5 -0
- package/build/src/profiler/retention/serialized-budget.js +58 -0
- package/build/src/profiler/retention/serialized-budget.js.map +1 -0
- package/build/src/profiler/retention/streaming-statistics.d.ts +38 -0
- package/build/src/profiler/retention/streaming-statistics.js +191 -0
- package/build/src/profiler/retention/streaming-statistics.js.map +1 -0
- package/build/src/profiler/retention/top-k.d.ts +13 -0
- package/build/src/profiler/retention/top-k.js +57 -0
- package/build/src/profiler/retention/top-k.js.map +1 -0
- package/build/src/profiler/runtime/async-activity.d.ts +19 -0
- package/build/src/profiler/runtime/async-activity.js +113 -0
- package/build/src/profiler/runtime/async-activity.js.map +1 -0
- package/build/src/profiler/runtime/bootstrap-probe.d.ts +42 -0
- package/build/src/profiler/runtime/bootstrap-probe.js +91 -0
- package/build/src/profiler/runtime/bootstrap-probe.js.map +1 -0
- package/build/src/profiler/runtime/clock.d.ts +17 -0
- package/build/src/profiler/runtime/clock.js +15 -0
- package/build/src/profiler/runtime/clock.js.map +1 -0
- package/build/src/profiler/runtime/event-observer.d.ts +4 -0
- package/build/src/profiler/runtime/event-observer.js +142 -0
- package/build/src/profiler/runtime/event-observer.js.map +1 -0
- package/build/src/profiler/runtime/noop.d.ts +20 -0
- package/build/src/profiler/runtime/noop.js +37 -0
- package/build/src/profiler/runtime/noop.js.map +1 -0
- package/build/src/profiler/runtime/runtime.d.ts +95 -0
- package/build/src/profiler/runtime/runtime.js +1343 -0
- package/build/src/profiler/runtime/runtime.js.map +1 -0
- package/build/src/profiler/runtime/types.d.ts +88 -0
- package/build/src/profiler/runtime/types.js +3 -0
- package/build/src/profiler/runtime/types.js.map +1 -0
- package/build/src/profiler/sanitize.d.ts +15 -0
- package/build/src/profiler/sanitize.js +194 -0
- package/build/src/profiler/sanitize.js.map +1 -0
- package/build/src/profiler/schema/index.d.ts +1 -0
- package/build/src/profiler/schema/index.js +18 -0
- package/build/src/profiler/schema/index.js.map +1 -0
- package/build/src/profiler/schema/v1.d.ts +281 -0
- package/build/src/profiler/schema/v1.js +3 -0
- package/build/src/profiler/schema/v1.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/index.js +30 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/index.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 +31 -6
- package/build/src/runner/browser-env/vite/browser-modules/types.js +8 -8
- package/build/src/runner/browser-env/vite/browser-modules/types.js.map +1 -1
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.d.ts +7 -1
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.js +28 -6
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.js.map +1 -1
- package/build/src/runner/browser-env/vite/server.js +17 -1
- package/build/src/runner/browser-env/vite/server.js.map +1 -1
- package/build/src/runner/browser-env/vite/socket.js +4 -0
- package/build/src/runner/browser-env/vite/socket.js.map +1 -1
- package/build/src/runner/browser-env/vite/types.d.ts +9 -7
- package/build/src/runner/browser-env/vite/types.js +8 -8
- package/build/src/runner/browser-env/vite/types.js.map +1 -1
- package/build/src/runner/browser-env/vite/utils.js +9 -2
- package/build/src/runner/browser-env/vite/utils.js.map +1 -1
- package/build/src/runner/browser-runner.d.ts +3 -1
- package/build/src/runner/browser-runner.js +4 -2
- package/build/src/runner/browser-runner.js.map +1 -1
- package/build/src/runner/index.d.ts +3 -1
- package/build/src/runner/index.js +7 -4
- package/build/src/runner/index.js.map +1 -1
- package/build/src/runner/test-runner/index.d.ts +2 -1
- package/build/src/runner/test-runner/index.js +2 -2
- package/build/src/runner/test-runner/index.js.map +1 -1
- package/build/src/runner/test-runner/insistant-test-runner.d.ts +2 -1
- package/build/src/runner/test-runner/insistant-test-runner.js +3 -2
- package/build/src/runner/test-runner/insistant-test-runner.js.map +1 -1
- package/build/src/runner/test-runner/regular-test-runner.d.ts +9 -3
- package/build/src/runner/test-runner/regular-test-runner.js +77 -16
- package/build/src/runner/test-runner/regular-test-runner.js.map +1 -1
- package/build/src/signal-handler.js +14 -5
- package/build/src/signal-handler.js.map +1 -1
- package/build/src/test-reader/index.d.ts +2 -1
- package/build/src/test-reader/index.js +19 -10
- package/build/src/test-reader/index.js.map +1 -1
- package/build/src/test-reader/mocha-reader/index.d.ts +2 -1
- package/build/src/test-reader/mocha-reader/index.js +41 -24
- package/build/src/test-reader/mocha-reader/index.js.map +1 -1
- package/build/src/test-reader/mocha-reader/tree-builder-decorator.js +2 -2
- package/build/src/test-reader/mocha-reader/tree-builder-decorator.js.map +1 -1
- package/build/src/test-reader/mocha-reader/utils.d.ts +2 -0
- package/build/src/test-reader/mocha-reader/utils.js +18 -2
- package/build/src/test-reader/mocha-reader/utils.js.map +1 -1
- package/build/src/test-reader/test-object/hook.d.ts +4 -2
- package/build/src/test-reader/test-object/hook.js +3 -1
- package/build/src/test-reader/test-object/hook.js.map +1 -1
- package/build/src/test-reader/test-parser.d.ts +2 -1
- package/build/src/test-reader/test-parser.js +48 -4
- package/build/src/test-reader/test-parser.js.map +1 -1
- package/build/src/testplane.d.ts +6 -2
- package/build/src/testplane.js +82 -27
- package/build/src/testplane.js.map +1 -1
- package/build/src/types/index.d.ts +4 -1
- package/build/src/types/index.js.map +1 -1
- package/build/src/utils/exit-code.d.ts +1 -0
- package/build/src/utils/exit-code.js +28 -0
- package/build/src/utils/exit-code.js.map +1 -0
- package/build/src/utils/module-observer-registry.d.ts +43 -0
- package/build/src/utils/module-observer-registry.js +257 -0
- package/build/src/utils/module-observer-registry.js.map +1 -0
- package/build/src/utils/processor.js +1 -0
- package/build/src/utils/processor.js.map +1 -1
- package/build/src/utils/workers-registry.d.ts +48 -1
- package/build/src/utils/workers-registry.js +162 -4
- package/build/src/utils/workers-registry.js.map +1 -1
- package/build/src/worker/browser-env/runner/test-runner/execution-thread.js +15 -1
- package/build/src/worker/browser-env/runner/test-runner/execution-thread.js.map +1 -1
- package/build/src/worker/browser-env/runner/test-runner/index.js +20 -0
- package/build/src/worker/browser-env/runner/test-runner/index.js.map +1 -1
- package/build/src/worker/index.js +39 -1
- package/build/src/worker/index.js.map +1 -1
- package/build/src/worker/runner/browser-pool.d.ts +3 -2
- package/build/src/worker/runner/browser-pool.js +5 -3
- package/build/src/worker/runner/browser-pool.js.map +1 -1
- package/build/src/worker/runner/caching-test-parser.d.ts +6 -1
- package/build/src/worker/runner/caching-test-parser.js +40 -4
- package/build/src/worker/runner/caching-test-parser.js.map +1 -1
- package/build/src/worker/runner/index.d.ts +10 -9
- package/build/src/worker/runner/index.js +52 -6
- package/build/src/worker/runner/index.js.map +1 -1
- package/build/src/worker/runner/sequence-test-parser.d.ts +4 -1
- package/build/src/worker/runner/sequence-test-parser.js +17 -3
- package/build/src/worker/runner/sequence-test-parser.js.map +1 -1
- package/build/src/worker/runner/simple-test-parser.d.ts +3 -1
- package/build/src/worker/runner/simple-test-parser.js +4 -2
- package/build/src/worker/runner/simple-test-parser.js.map +1 -1
- package/build/src/worker/runner/test-runner/execution-thread.d.ts +20 -2
- package/build/src/worker/runner/test-runner/execution-thread.js +37 -2
- package/build/src/worker/runner/test-runner/execution-thread.js.map +1 -1
- package/build/src/worker/runner/test-runner/hook-runner.d.ts +1 -1
- package/build/src/worker/runner/test-runner/hook-runner.js +4 -4
- package/build/src/worker/runner/test-runner/hook-runner.js.map +1 -1
- package/build/src/worker/runner/test-runner/index.d.ts +8 -7
- package/build/src/worker/runner/test-runner/index.js +36 -25
- package/build/src/worker/runner/test-runner/index.js.map +1 -1
- package/build/src/worker/runner/test-runner/types.d.ts +8 -1
- package/build/src/worker/testplane-facade.js +63 -4
- package/build/src/worker/testplane-facade.js.map +1 -1
- package/build/src/worker/testplane.d.ts +6 -0
- package/build/src/worker/testplane.js +7 -1
- package/build/src/worker/testplane.js.map +1 -1
- package/package.json +2 -2
package/build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testplane",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.1",
|
|
4
4
|
"description": "Tests framework based on mocha and wdio",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"files": [
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"browsers:launch": "docker run -it --rm --network=host $(which colima >/dev/null || echo --add-host=host.docker.internal:0.0.0.0)
|
|
21
|
+
"browsers:launch": "docker run -it --rm --network=host --shm-size=2g $(which colima >/dev/null || echo --add-host=host.docker.internal:0.0.0.0) ghcr.io/gemini-testing/browsers/chromium:126.0",
|
|
22
22
|
"build": "tsc --build && npm run build-bundles && npm run copy-static",
|
|
23
23
|
"copy-static": "copyfiles 'src/browser/client-scripts/**/*.js' 'src/**/[!cache]*/autogenerated/**/*.json' build",
|
|
24
24
|
"build-node-bundle": "esbuild ./src/bundle/cjs/index.ts --outdir=./build/src/bundle/cjs --bundle --format=cjs --platform=node --target=ES2021",
|
|
@@ -2,12 +2,26 @@ import { Config } from "./config";
|
|
|
2
2
|
import { AsyncEmitter, InterceptedEvent, Events, InterceptHandler, Interceptor } from "./events";
|
|
3
3
|
import Errors from "./errors";
|
|
4
4
|
import { ConfigInput } from "./config/types";
|
|
5
|
+
import { ProfilerManager } from "./profiler/manager";
|
|
6
|
+
import { BootstrapProbe } from "./profiler/runtime/bootstrap-probe";
|
|
7
|
+
import type { ProcessRef } from "./profiler/schema";
|
|
8
|
+
interface ProfilerSetupOptions {
|
|
9
|
+
runId?: string;
|
|
10
|
+
process?: ProcessRef;
|
|
11
|
+
/** Amount added to local wall-clock timestamps to align them with the main process. */
|
|
12
|
+
clockOffsetMs?: number;
|
|
13
|
+
/** Estimated maximum error of the supplied clock alignment. */
|
|
14
|
+
clockUncertaintyMs?: number;
|
|
15
|
+
}
|
|
5
16
|
export declare abstract class BaseTestplane extends AsyncEmitter {
|
|
6
17
|
protected _interceptors: Interceptor[];
|
|
7
18
|
protected _config: Config;
|
|
8
19
|
protected _initEventEmited: boolean;
|
|
20
|
+
protected _bootstrapProbe: BootstrapProbe;
|
|
21
|
+
protected _profiler: ProfilerManager;
|
|
9
22
|
private _pendingConfig?;
|
|
10
|
-
|
|
23
|
+
private _pendingProfilerOptions?;
|
|
24
|
+
static create<T extends BaseTestplane>(this: new (config?: string | ConfigInput) => T, config?: string | ConfigInput, bootstrapProbe?: BootstrapProbe, profilerOptions?: ProfilerSetupOptions): Promise<T>;
|
|
11
25
|
protected constructor(config?: string | ConfigInput);
|
|
12
26
|
protected _setup(): Promise<void>;
|
|
13
27
|
/** @note Only the first call returns a promise to wait for INIT handlers to complete, subsequent calls return immediately to avoid deadlocks */
|
|
@@ -15,8 +29,10 @@ export declare abstract class BaseTestplane extends AsyncEmitter {
|
|
|
15
29
|
get config(): Config;
|
|
16
30
|
get events(): Events;
|
|
17
31
|
get errors(): typeof Errors;
|
|
32
|
+
profileCliCommand<T>(command: string, action: () => T | Promise<T>): Promise<T>;
|
|
18
33
|
intercept(event: InterceptedEvent, handler: InterceptHandler): this;
|
|
19
34
|
abstract isWorker(): boolean;
|
|
20
35
|
protected _setLogLevel(): void;
|
|
21
36
|
protected _loadPlugins(): void;
|
|
22
37
|
}
|
|
38
|
+
export {};
|
|
@@ -11,10 +11,21 @@ const events_1 = require("./events");
|
|
|
11
11
|
const errors_1 = __importDefault(require("./errors"));
|
|
12
12
|
const typescript_1 = require("./utils/typescript");
|
|
13
13
|
const repl_module_hooks_1 = require("./utils/repl-module-hooks");
|
|
14
|
+
const manager_1 = require("./profiler/manager");
|
|
15
|
+
const bootstrap_probe_1 = require("./profiler/runtime/bootstrap-probe");
|
|
16
|
+
const event_observer_1 = require("./profiler/runtime/event-observer");
|
|
14
17
|
class BaseTestplane extends events_1.AsyncEmitter {
|
|
15
|
-
static async create(config) {
|
|
18
|
+
static async create(config, bootstrapProbe = new bootstrap_probe_1.BootstrapProbe(), profilerOptions = {}) {
|
|
16
19
|
const instance = new this(config);
|
|
17
|
-
|
|
20
|
+
instance._bootstrapProbe = bootstrapProbe;
|
|
21
|
+
instance._pendingProfilerOptions = profilerOptions;
|
|
22
|
+
try {
|
|
23
|
+
await instance._setup();
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
await instance._profiler?.finalizeSetupError(error);
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
18
29
|
return instance;
|
|
19
30
|
}
|
|
20
31
|
constructor(config) {
|
|
@@ -25,13 +36,33 @@ class BaseTestplane extends events_1.AsyncEmitter {
|
|
|
25
36
|
this._pendingConfig = config;
|
|
26
37
|
}
|
|
27
38
|
async _setup() {
|
|
28
|
-
(
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
const transformPhase = this._bootstrapProbe.startPhase("testplane.phase.transform-setup", "Set up transforms");
|
|
40
|
+
try {
|
|
41
|
+
(0, repl_module_hooks_1.registerReplModuleHooks)();
|
|
42
|
+
(0, typescript_1.registerTransformHook)(this.isWorker());
|
|
43
|
+
transformPhase.end();
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
transformPhase.end("failed");
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
this._config = await config_1.Config.create(this._pendingConfig, this._bootstrapProbe);
|
|
31
50
|
this._pendingConfig = undefined;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
51
|
+
this._profiler = new manager_1.ProfilerManager(this._config, this._bootstrapProbe, {
|
|
52
|
+
process: this._pendingProfilerOptions?.process ??
|
|
53
|
+
{ type: this.isWorker() ? "worker" : "master", pid: process.pid },
|
|
54
|
+
runId: this._pendingProfilerOptions?.runId,
|
|
55
|
+
clockOffsetMs: this._pendingProfilerOptions?.clockOffsetMs,
|
|
56
|
+
clockUncertaintyMs: this._pendingProfilerOptions?.clockUncertaintyMs,
|
|
57
|
+
});
|
|
58
|
+
this._pendingProfilerOptions = undefined;
|
|
59
|
+
this._profiler.setResultEmitter(result => this.emitAndWait(events_1.MasterEvents.PROFILER_RESULT, result));
|
|
60
|
+
this.setEventObserver((0, event_observer_1.createProfilerEventObserver)(this._profiler, this._config));
|
|
61
|
+
this._profiler.runtime.withSpan("testplane.phase.plugins", { name: "Load plugins" }, () => {
|
|
62
|
+
(0, typescript_1.updateTransformHook)(this._config);
|
|
63
|
+
this._setLogLevel();
|
|
64
|
+
this._loadPlugins();
|
|
65
|
+
});
|
|
35
66
|
}
|
|
36
67
|
/** @note Only the first call returns a promise to wait for INIT handlers to complete, subsequent calls return immediately to avoid deadlocks */
|
|
37
68
|
async _emitInitEventOnce() {
|
|
@@ -39,7 +70,7 @@ class BaseTestplane extends events_1.AsyncEmitter {
|
|
|
39
70
|
return;
|
|
40
71
|
}
|
|
41
72
|
this._initEventEmited = true;
|
|
42
|
-
await this.emitAndWait(events_1.MasterEvents.INIT);
|
|
73
|
+
await this._profiler.runtime.withSpan("testplane.phase.init", { name: "Initialize Testplane" }, () => this.emitAndWait(events_1.MasterEvents.INIT));
|
|
43
74
|
}
|
|
44
75
|
get config() {
|
|
45
76
|
return this._config;
|
|
@@ -50,6 +81,9 @@ class BaseTestplane extends events_1.AsyncEmitter {
|
|
|
50
81
|
get errors() {
|
|
51
82
|
return errors_1.default;
|
|
52
83
|
}
|
|
84
|
+
async profileCliCommand(command, action) {
|
|
85
|
+
return this._profiler ? this._profiler.profileOperation(`cli:${command}`, action) : action();
|
|
86
|
+
}
|
|
53
87
|
intercept(event, handler) {
|
|
54
88
|
this._interceptors.push({ event, handler });
|
|
55
89
|
return this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-testplane.js","sourceRoot":"","sources":["../../src/base-testplane.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,oEAA2C;AAC3C,qCAAkC;AAClC,qCAQkB;AAClB,sDAA8B;AAC9B,mDAAgF;AAChF,iEAAoE;
|
|
1
|
+
{"version":3,"file":"base-testplane.js","sourceRoot":"","sources":["../../src/base-testplane.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,14 @@ import { AsyncEmitter } from "../events";
|
|
|
4
4
|
import { BrowserConfig } from "../config/browser-config";
|
|
5
5
|
import type { Callstack } from "./history/callstack";
|
|
6
6
|
import type { WdProcess, WebdriverPool } from "../browser-pool/webdriver-pool";
|
|
7
|
+
import type { ProfilerRuntimeLike } from "../profiler/runtime/types";
|
|
7
8
|
export type BrowserOpts = {
|
|
8
9
|
id: string;
|
|
9
10
|
version?: string;
|
|
10
11
|
state?: Record<string, unknown>;
|
|
11
12
|
emitter: AsyncEmitter;
|
|
12
13
|
wdPool?: WebdriverPool;
|
|
14
|
+
profiler?: ProfilerRuntimeLike;
|
|
13
15
|
};
|
|
14
16
|
export type BrowserState = {
|
|
15
17
|
testXReqId?: string;
|
|
@@ -32,6 +34,7 @@ export declare class Browser {
|
|
|
32
34
|
protected _wdPool?: WebdriverPool;
|
|
33
35
|
protected _wdProcess: WdProcess | null;
|
|
34
36
|
protected _exitError?: Error;
|
|
37
|
+
protected _profiler: ProfilerRuntimeLike;
|
|
35
38
|
/** This Promise is awaited after test is finished. Can be used for cleanup.
|
|
36
39
|
Right now is used to wait for time travel snapshots to finish collecting */
|
|
37
40
|
protected _snapshotsPromiseRef: history.PromiseRef;
|
|
@@ -35,6 +35,7 @@ const history = __importStar(require("./history"));
|
|
|
35
35
|
const stacktrace_1 = require("./stacktrace");
|
|
36
36
|
const commands_1 = require("./history/commands");
|
|
37
37
|
const runStep_1 = __importDefault(require("./commands/runStep"));
|
|
38
|
+
const noop_1 = require("../profiler/runtime/noop");
|
|
38
39
|
const CUSTOM_SESSION_OPTS = [
|
|
39
40
|
"outputDir",
|
|
40
41
|
"agent",
|
|
@@ -68,6 +69,7 @@ class Browser {
|
|
|
68
69
|
this._customCommands = new Set();
|
|
69
70
|
this._wdPool = opts.wdPool;
|
|
70
71
|
this._emitter = opts.emitter;
|
|
72
|
+
this._profiler = opts.profiler ?? noop_1.noopProfilerRuntime;
|
|
71
73
|
}
|
|
72
74
|
setHttpTimeout(timeout) {
|
|
73
75
|
if (timeout === null) {
|
|
@@ -91,8 +93,8 @@ class Browser {
|
|
|
91
93
|
(0, stacktrace_1.enhanceStacktraces)(this._session);
|
|
92
94
|
}
|
|
93
95
|
_addHistory() {
|
|
94
|
-
if (this._config.saveHistoryMode !== config_1.SAVE_HISTORY_MODE.NONE) {
|
|
95
|
-
const initHistoryResult = history.initCommandHistory(this._session, this._config);
|
|
96
|
+
if (this._config.saveHistoryMode !== config_1.SAVE_HISTORY_MODE.NONE || this._profiler.isEnabled(3)) {
|
|
97
|
+
const initHistoryResult = history.initCommandHistory(this._session, this._config, this._profiler);
|
|
96
98
|
this._callstackHistory = initHistoryResult.callstack;
|
|
97
99
|
this._snapshotsPromiseRef = initHistoryResult.snapshotsPromiseRef;
|
|
98
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/browser/browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAE5B,oDAAuB;AAEvB,gDAAwD;AACxD,kDAA8D;AAC9D,mDAAqC;AACrC,6CAAkD;AAClD,iDAA4E;AAC5E,iEAAmD;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/browser/browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAE5B,oDAAuB;AAEvB,gDAAwD;AACxD,kDAA8D;AAC9D,mDAAqC;AACrC,6CAAkD;AAClD,iDAA4E;AAC5E,iEAAmD;AAMnD,mDAA+D;AAG/D,MAAM,mBAAmB,GAAG;IACxB,WAAW;IACX,OAAO;IACP,SAAS;IACT,kBAAkB;IAClB,mBAAmB;IACnB,WAAW;IACX,qBAAqB;IACrB,MAAM;IACN,KAAK;IACL,QAAQ;CACX,CAAC;AAoBF,MAAa,OAAO;IAkBhB,MAAM,CAAC,MAAM,CAET,MAAc,EACd,IAAiB;QAEjB,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,YAAY,MAAc,EAAE,IAAiB;QACzC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG;YACV,GAAG,IAAI,CAAC,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,gBAAgB,EAAE,KAAK;SAC1B,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,0BAAmB,CAAC;IAC1D,CAAC;IAED,cAAc,CAAC,OAAsB;QACjC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,QAAS,CAAC,aAAa,CAAC,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,UAAU,CAAC,KAA8B;QACrC,gBAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAES,YAAY;QAClB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;IACjD,CAAC;IAES,SAAS;QACf,IAAA,iBAAiB,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAES,iBAAiB;QACvB,IAAA,+BAAkB,EAAC,IAAI,CAAC,QAAS,CAAC,CAAC;IACvC,CAAC;IAES,WAAW;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,0BAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAChD,IAAI,CAAC,QAA+B,EACpC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,CACjB,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,CAAC;YACrD,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC;QACtE,CAAC;IACL,CAAC;IAES,uBAAuB,CAAC,OAA4B;QAC1D,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE;YACvC,gBAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAES,yBAAyB,CAAC,QAAQ,GAAG,mBAAmB;QAC9D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAgC,EAAE,OAAO,EAAE,EAAE;YACjE,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;gBACjC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAmB,EAAkB,EAAE;oBACvD,IAAI,CAAC,gBAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;wBACnC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrC,CAAC;oBAED,MAAM,cAAc,GAAG,GAAG,CAAC,OAAiC,CAAC;oBAE7D,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;wBAClC,cAAc,CAAC,cAAc,CAAC,GAAG,GAC7B,IAAI,CAAC,KAAK,CAAC,UACf,GAAG,gCAAsB,GAAG,gBAAM,CAAC,UAAU,EAAE,EAAE,CAAC;oBACtD,CAAC;oBACD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;wBAC3D,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;oBAC3D,CAAC;oBAED,OAAO,GAAG,CAAC;gBACf,CAAC,CAAC;YACN,CAAC;iBAAM,IAAI,CAAC,gBAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAA8B,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAA8B,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IAES,8BAA8B;QACpC,MAAM,eAAe,GAAG,IAAA,6BAAkB,GAAE,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAA,6BAAkB,GAAE,CAAC;QAE7C,IAAI,CAAC,QAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,EAAE;YAChG,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEtG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,QAAS,CAAC,CAAC,+BAA+B;IAC1D,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;IACvC,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAkB,CAAC;IACnC,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,IAAI,cAAc;QACd,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,gBAAC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,gBAAC,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ;AArLD,0BAqLC"}
|
|
@@ -5,16 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.readTestFileWithTestplaneDependenciesCollecting = exports.addTestplaneSelectivityPngDependency = exports.runWithTestplaneDependenciesCollecting = exports.getCollectedTestplanePngDependencies = exports.getCollectedTestplaneJsDependencies = exports.enableCollectingTestplaneDependencies = exports.disableCollectingTestplaneDependencies = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const module_1 = require("module");
|
|
9
8
|
const async_hooks_1 = require("async_hooks");
|
|
10
9
|
const fs_cache_1 = require("./fs-cache");
|
|
11
10
|
const debug_1 = require("./debug");
|
|
12
|
-
|
|
13
|
-
const TypedModule = module_1.Module;
|
|
11
|
+
const module_observer_registry_1 = require("../../../utils/module-observer-registry");
|
|
14
12
|
const testDependenciesStorage = new async_hooks_1.AsyncLocalStorage();
|
|
15
13
|
const testFileDependenciesRamCache = new Map();
|
|
16
14
|
const testFileLocks = {};
|
|
17
15
|
let disableCollectingDependenciesCb = null;
|
|
16
|
+
let dependencyRegistration = null;
|
|
18
17
|
const disableCollectingTestplaneDependencies = () => {
|
|
19
18
|
if (disableCollectingDependenciesCb) {
|
|
20
19
|
disableCollectingDependenciesCb();
|
|
@@ -26,24 +25,23 @@ const enableCollectingTestplaneDependencies = () => {
|
|
|
26
25
|
if (disableCollectingDependenciesCb) {
|
|
27
26
|
return;
|
|
28
27
|
}
|
|
29
|
-
const originalResolveFileName = TypedModule._resolveFilename;
|
|
30
28
|
disableCollectingDependenciesCb = () => {
|
|
31
|
-
|
|
29
|
+
dependencyRegistration?.dispose();
|
|
30
|
+
dependencyRegistration = null;
|
|
32
31
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
dependencyRegistration = module_observer_registry_1.moduleObserverRegistry.register({
|
|
33
|
+
onResolve: ({ resolved }) => {
|
|
34
|
+
try {
|
|
35
|
+
const store = disableCollectingDependenciesCb ? testDependenciesStorage.getStore() : null;
|
|
36
|
+
const relPath = resolved && path_1.default.isAbsolute(resolved) ? path_1.default.relative(process.cwd(), resolved) : null;
|
|
37
|
+
if (store && relPath) {
|
|
38
|
+
const posixRelPath = path_1.default.sep === path_1.default.posix.sep ? relPath : relPath.replaceAll(path_1.default.sep, path_1.default.posix.sep);
|
|
39
|
+
store.jsTestplaneDeps?.add(posixRelPath);
|
|
40
|
+
}
|
|
42
41
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
42
|
+
catch { } // eslint-disable-line no-empty
|
|
43
|
+
},
|
|
44
|
+
});
|
|
47
45
|
};
|
|
48
46
|
exports.enableCollectingTestplaneDependencies = enableCollectingTestplaneDependencies;
|
|
49
47
|
const getCollectedTestplaneJsDependencies = () => {
|
|
@@ -59,7 +57,9 @@ exports.getCollectedTestplanePngDependencies = getCollectedTestplanePngDependenc
|
|
|
59
57
|
const runWithTestplaneDependenciesCollecting = (fn) => {
|
|
60
58
|
(0, exports.enableCollectingTestplaneDependencies)();
|
|
61
59
|
const store = { jsTestplaneDeps: new Set(), pngTestplaneDeps: new Set() };
|
|
62
|
-
return testDependenciesStorage
|
|
60
|
+
return testDependenciesStorage
|
|
61
|
+
.run(store, () => dependencyRegistration.run(fn))
|
|
62
|
+
.finally(() => {
|
|
63
63
|
// After "fn" completion, "store" is reachable in CDP ping interval callback, so it never GC-removed
|
|
64
64
|
// Thats why we do it manually. It is enough, and set remains unchanged, if used
|
|
65
65
|
delete store.jsTestplaneDeps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testplane-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/testplane-selectivity.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"testplane-selectivity.js","sourceRoot":"","sources":["../../../../../src/browser/cdp/selectivity/testplane-selectivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
},{}],2:[function(require,module,exports){
|
|
4
4
|
"use strict";var __extends=this&&this.__extends||function(){var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,t){r.__proto__=t}||function(r,t){for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e])})(t,e)};return function(t,e){function o(){this.constructor=t}if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}}();exports.__esModule=!0,exports.OutsideOfViewportError=void 0;var _isomorphic_1=require("/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js"),OutsideOfViewportError=function(r){function t(t){var e=r.call(this,'Can not capture element, because it is completely outside of viewport with no intersection. Try to set "captureElementFromTop=true" assertView option to scroll to it before capture.')||this;return e.name="OutsideOfViewportError",e.errorCode=_isomorphic_1.BrowserSideErrorCode.OUTSIDE_OF_VIEWPORT,e.debugLog=t,e}return __extends(t,r),t}(Error);exports.OutsideOfViewportError=OutsideOfViewportError;
|
|
5
5
|
},{"/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js":22}],3:[function(require,module,exports){
|
|
6
|
-
"use strict";function sampleRandom(e,o){if(e.length<=o)return e.slice();for(var r=e.slice(),t=0;t<o;t++){var i=t+Math.floor(Math.random()*(r.length-t)),s=r[t];r[t]=r[i],r[i]=s}return r.slice(0,o)}function computeShiftMode(e,o){if(0===e.length)return null;for(var r=e.slice().sort(function(e,o){return e-o}),t=0,i=0,s=0,n=0;s<r.length;s++){for(;n+1<r.length&&r[n+1]-r[s]<=o;)n++;n-s+1>i-t+1&&(t=s,i=n)}var a=r.slice(t,i+1),c=Math.floor(a.length/2);return a.length%2==1?a[c]:(a[c-1]+a[c])/2}function computeActualShift(){var e=(0,dom_1.getScreenshooterNamespaceData)().trackedElementsData;if(!e||0===e.length)return null;for(var o=[],r=0,t=e;r<t.length;r++){var i=t[r];if(i.element.isConnected){var s=i.element.getBoundingClientRect(),n=i.rect;s.width<=0||s.height<=0||Math.abs(s.width-n.width)>1||Math.abs(s.height-n.height)>1||o.push(s.top-n.top)}}if(o.length<MIN_ANCHOR_SAMPLE_SIZE)return null;var a=computeShiftMode(o,ANCHOR_SHIFT_TOLERANCE_CSS);return null===a?null:a}function safeCall(e){for(var o=[],r=1;r<arguments.length;r++)o[r-1]=arguments[r];try{return e.apply(void 0,o)}catch(t){return t instanceof Error?{errorCode:_isomorphic_1.BrowserSideErrorCode.JS,message:t.stack||t.message}:{errorCode:_isomorphic_1.BrowserSideErrorCode.JS,message:"Unknown error: "+String(t)}}}function prepareElementsScreenshot(e,o){return safeCall(prepareElementsScreenshotUnsafe,e,o)}function scrollBy(e,o,r,t){return safeCall(function(){var i=(0,logger_1.createDebugLogger)({debug:t},"scrollBy"),s=(0,operations_1.computePixelRatio)(),n=r?lib.queryFirst(r):null,a=null!==n&&void 0!==n?n:(0,scroll_1.getCommonScrollParent)(e),c=(0,descriptions_1.getReadableElementDescriptor)(a),l=r?n?"".concat(r," (").concat(c,")"):"".concat(r," (not found, auto-detected ").concat(c,")"):"auto-detected ".concat(c),p=(0,_isomorphic_1.fromDeviceToCssNumber)(o,s);return(0,scroll_1.scrollElementBy)(a,p),{readableSelectorToScrollDescr:l,debugLog:i()}})}function scrollTo(e,o,r,t){return safeCall(function(){var i=(0,logger_1.createDebugLogger)({debug:t},"scrollTo");i("Asked to scroll to with params: targetsToCapture:",e,"scrollOffset:",o,"targetToScroll:",r);var s=(0,operations_1.computePixelRatio)(),n=r?lib.queryFirst(r):null,a=null!==n&&void 0!==n?n:(0,scroll_1.getCommonScrollParent)(e),c=(0,descriptions_1.getReadableElementDescriptor)(a),l=r?n?"".concat(r," (").concat(c,")"):"".concat(r," (not found, auto-detected ").concat(c,")"):"auto-detected ".concat(c),p=(0,_isomorphic_1.fromDeviceToCssNumber)(o,s);return(0,scroll_1.scrollElementToOffset)(a,p),{readableSelectorToScrollDescr:l,debugLog:i()}})}function getCaptureState(e,o,r,t){return safeCall(function(){var i=(0,logger_1.createDebugLogger)({debug:t},"getCaptureState"),s=(0,operations_1.computePixelRatio)(),n=r?lib.queryFirst(r):null,a=null!==n&&void 0!==n?n:(0,scroll_1.getCommonScrollParent)(e),c=(0,descriptions_1.getReadableElementDescriptor)(a),l=r?n?"".concat(r," (").concat(c,")"):"".concat(r," (not found, auto-detected ").concat(c,")"):"auto-detected ".concat(c),p=(0,operations_1.computeIgnoreAreas)(o),u=(0,operations_1.computeSafeArea)(e,a,i),_=(0,operations_1.computeCaptureSpecs)(e,i),m=_.map(function(e){return{full:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.full),s),clip:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.clip),s),visible:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.visible),s)}}),f=(0,operations_1.computeScrollOffset)(a),d=(0,operations_1.computeViewportOffset)(),h=computeActualShift(),v=null===h?null:(0,_isomorphic_1.fromCssToDeviceNumber)(h,s);return i("scrollOffset:",f),{captureSpecs:m,ignoreAreas:p.map(function(e){return(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),s)}),safeArea:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(u),s),scrollOffset:(0,_isomorphic_1.fromCssToDeviceNumber)(f,s),viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)(d),s),anchorShift:v,readableSelectorToScrollDescr:l,debugLog:i()}})}function prepareFullPageScreenshot(e){return void 0===e&&(e={}),safeCall(function(){(0,operations_1.prepareFullPageScrollCleanup)();var o=(0,operations_1.computePixelRatio)(e.usePixelRatio);window.scrollTo(0,0);var r=(0,operations_1.computeDocumentSize)(),t=(0,operations_1.computeViewportSize)(),i=(0,operations_1.computeViewportOffset)(),s=(0,operations_1.computeSafeArea)(["body"],document.documentElement);e.disableAnimation&&(0,operations_1.disableAnimations)();var n=!1;if(e.disableHover===_isomorphic_1.DisableHoverMode.Always)(0,operations_1.disablePointerEvents)(),n=!0;else if(e.disableHover===_isomorphic_1.DisableHoverMode.WhenScrollingNeeded){var a=r.height>t.height;a&&((0,operations_1.disablePointerEvents)(),n=!0)}var c=(0,operations_1.computeElementPositionsProbe)().map(function(e){return e?__assign(__assign({},(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),o)),{elementDescr:e.elementDescr}):null});return{documentSize:(0,_isomorphic_1.ceilCoords)((0,_isomorphic_1.fromCssToDevice)(r,o)),viewportSize:(0,_isomorphic_1.fromCssToDevice)(t,o),viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)(i),o),safeArea:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(s),o),elementPositionsProbe:c,pixelRatio:o,pointerEventsDisabled:n}})}function scrollFullPage(e,o){return void 0===o&&(o={}),safeCall(function(){var r=(0,operations_1.computePixelRatio)(o.usePixelRatio),t=(0,_isomorphic_1.fromDeviceToCssNumber)(e,r)-1;(0,scroll_1.scrollElementBy)(document.documentElement,t);var i=(0,operations_1.computeViewportOffset)(),s=(0,operations_1.computeElementPositionsProbe)().map(function(e){return e?__assign(__assign({},(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),r)),{elementDescr:e.elementDescr}):null});return{viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)(i),r),elementPositionsProbe:s}})}function prepareViewportScreenshot(e){return void 0===e&&(e={}),safeCall(function(){var o=(0,operations_1.computePixelRatio)(e.usePixelRatio),r=(0,operations_1.computeViewportSize)(),t=(0,operations_1.computeViewportOffset)(),i=(0,operations_1.computeDocumentSize)(),s=(0,operations_1.computeCanHaveCaret)();e.disableAnimation&&(0,operations_1.disableAnimations)();var n=(0,operations_1.computeIgnoreAreas)(e.ignoreSelectors),a=!1;return e.disableHover===_isomorphic_1.DisableHoverMode.Always&&((0,operations_1.disablePointerEvents)(),a=!0),{viewportSize:(0,_isomorphic_1.fromCssToDevice)(r,o),viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)(t),o),documentSize:(0,_isomorphic_1.ceilCoords)((0,_isomorphic_1.fromCssToDevice)(i,o)),ignoreAreas:n.map(function(e){return(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),o)}),canHaveCaret:s,pixelRatio:o,pointerEventsDisabled:a}})}function disableFrameAnimations(){return safeCall(operations_1.disableAnimations)}function cleanupFrameAnimations(){window.__cleanupAnimation&&window.__cleanupAnimation()}function disablePointerEvents(){return safeCall(operations_1.disablePointerEvents)}function cleanupPointerEvents(){var e=(0,dom_1.getScreenshooterNamespaceData)();e.cleanupPointerEventsCb&&e.cleanupPointerEventsCb()}function cleanupScrolls(){(0,dom_1.getScreenshooterNamespaceData)().trackedElementsData=[],(0,operations_1.cleanupSavedScrolls)()}function captureAnchorBaseline(e){return safeCall(function(){for(var o=(0,operations_1.computeCaptureSpecs)(e),r=o.length>0?(0,_isomorphic_1.getCoveringRect)(o.map(function(e){return e.full})):null,t=[],i=0;i<e.length;i++){var s=lib.queryFirst((0,pseudo_element_rect_1.parseCaptureTarget)(e[i]).elementTarget);if(s){t.push(s);for(var n=s.querySelectorAll("*"),a=0;a<n.length;a++)t.push(n[a])}}var c=t.filter(function(e){var o=e.getBoundingClientRect();if(o.width<=0||o.height<=0)return!1;if(!r)return!0;var t=(0,_isomorphic_1.fromBcrToRect)(o);return Boolean((0,_isomorphic_1.getIntersection)(r,t))}),l=sampleRandom(c,MAX_ANCHOR_TRACKED_ELEMENTS);(0,dom_1.getScreenshooterNamespaceData)().trackedElementsData=l.map(function(e){var o=e.getBoundingClientRect();return{element:e,rect:(0,_isomorphic_1.fromBcrToRect)(o)}})})}function prepareElementsScreenshotUnsafe(e,o){var r=(0,logger_1.createDebugLogger)(o,"prepareElementsScreenshot");(0,operations_1.saveScrollPositions)(e,o.selectorToScroll);var t=(0,operations_1.scrollToCaptureAreaIfNeeded)(e,o.captureElementFromTop,o.allowViewportOverflow,o.selectorToScroll,r).readableSelectorToScrollDescr;o.disableAnimation&&(0,operations_1.disableAnimations)();var i=(0,operations_1.computePixelRatio)(o.usePixelRatio),s=o.selectorToScroll?lib.queryFirst(o.selectorToScroll):null,n=null!==s&&void 0!==s?s:(0,scroll_1.getCommonScrollParent)(e),a=(0,operations_1.computeIgnoreAreas)(o.ignoreSelectors),c=(0,operations_1.computeCaptureSpecs)(e,r),l=(0,operations_1.computeViewportSize)(),p=(0,operations_1.computeViewportOffset)(),u=(0,operations_1.computeSafeArea)(e,n,r),_=(0,operations_1.computeScrollOffset)(n),m=(0,operations_1.computeDocumentSize)(),f=(0,operations_1.computeCanHaveCaret)(),d=!1;if(o.disableHover===_isomorphic_1.DisableHoverMode.Always)(0,operations_1.disablePointerEvents)(),d=!0;else if(o.disableHover===_isomorphic_1.DisableHoverMode.WhenScrollingNeeded&&o.compositeImage){var h=(0,_isomorphic_1.getCoveringRect)(c.map(function(e){return e.full})),v=(0,_isomorphic_1.getBottom)(h)>(0,_isomorphic_1.getBottom)(u);v&&(r("adding stylesheet with pointer-events: none on all elements (composite capture needs scrolling). captureArea:",h,"safeArea:",u),(0,operations_1.disablePointerEvents)(),d=!0)}return r("scrollOffset:",_),{ignoreAreas:a.map(function(e){return(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),i)}),captureSpecs:c.map(function(e){return{full:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.full),i),clip:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.clip),i),visible:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.visible),i)}}),viewportSize:(0,_isomorphic_1.fromCssToDevice)(l,i),viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)(p),i),safeArea:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(u),i),documentSize:(0,_isomorphic_1.ceilCoords)((0,_isomorphic_1.fromCssToDevice)(m,i)),canHaveCaret:f,pixelRatio:i,pointerEventsDisabled:d,debugLog:r(),readableSelectorToScrollDescr:t,scrollOffset:(0,_isomorphic_1.fromCssToDeviceNumber)(_,i)}}var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var o,r=1,t=arguments.length;r<t;r++){o=arguments[r];for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(e[i]=o[i])}return e},__assign.apply(this,arguments)},__createBinding=this&&this.__createBinding||(Object.create?function(e,o,r,t){t===undefined&&(t=r);var i=Object.getOwnPropertyDescriptor(o,r);i&&("get"in i?o.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return o[r]}}),Object.defineProperty(e,t,i)}:function(e,o,r,t){t===undefined&&(t=r),e[t]=o[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,o){Object.defineProperty(e,"default",{enumerable:!0,value:o})}:function(e,o){e["default"]=o}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var o={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(o,e,r);return __setModuleDefault(o,e),o};exports.__esModule=!0,exports.captureAnchorBaseline=exports.cleanupScrolls=exports.cleanupPointerEvents=exports.disablePointerEvents=exports.cleanupFrameAnimations=exports.disableFrameAnimations=exports.prepareViewportScreenshot=exports.scrollFullPage=exports.prepareFullPageScreenshot=exports.getCaptureState=exports.scrollTo=exports.scrollBy=exports.prepareElementsScreenshot=void 0;var _isomorphic_1=require("/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js"),lib=__importStar(require("./../shared/lib.compat.js")),logger_1=require("../shared/logger"),operations_1=require("./operations"),descriptions_1=require("./utils/descriptions"),dom_1=require("./utils/dom"),pseudo_element_rect_1=require("./utils/pseudo-element-rect"),scroll_1=require("./utils/scroll"),MIN_ANCHOR_SAMPLE_SIZE=3,MAX_ANCHOR_TRACKED_ELEMENTS=500,ANCHOR_SHIFT_TOLERANCE_CSS=1.5;exports.prepareElementsScreenshot=prepareElementsScreenshot,exports.scrollBy=scrollBy,exports.scrollTo=scrollTo,exports.getCaptureState=getCaptureState,exports.prepareFullPageScreenshot=prepareFullPageScreenshot,exports.scrollFullPage=scrollFullPage,exports.prepareViewportScreenshot=prepareViewportScreenshot,exports.disableFrameAnimations=disableFrameAnimations,exports.cleanupFrameAnimations=cleanupFrameAnimations,exports.disablePointerEvents=disablePointerEvents,exports.cleanupPointerEvents=cleanupPointerEvents,exports.cleanupScrolls=cleanupScrolls,exports.captureAnchorBaseline=captureAnchorBaseline;
|
|
6
|
+
"use strict";function sampleRandom(e,o){if(e.length<=o)return e.slice();for(var r=e.slice(),t=0;t<o;t++){var i=t+Math.floor(Math.random()*(r.length-t)),n=r[t];r[t]=r[i],r[i]=n}return r.slice(0,o)}function computeShiftMode(e,o){if(0===e.length)return null;for(var r=e.slice().sort(function(e,o){return e-o}),t=0,i=0,n=0,s=0;n<r.length;n++){for(;s+1<r.length&&r[s+1]-r[n]<=o;)s++;s-n+1>i-t+1&&(t=n,i=s)}var a=r.slice(t,i+1),l=Math.floor(a.length/2);return a.length%2==1?a[l]:(a[l-1]+a[l])/2}function computeActualShift(){var e=(0,dom_1.getScreenshooterNamespaceData)().trackedElementsData;if(!e||0===e.length)return null;for(var o=[],r=0,t=e;r<t.length;r++){var i=t[r];if(i.element.isConnected){var n=i.element.getBoundingClientRect(),s=i.rect;n.width<=0||n.height<=0||Math.abs(n.width-s.width)>1||Math.abs(n.height-s.height)>1||o.push(n.top-s.top)}}if(o.length<MIN_ANCHOR_SAMPLE_SIZE)return null;var a=computeShiftMode(o,ANCHOR_SHIFT_TOLERANCE_CSS);return null===a?null:a}function safeCall(e){for(var o=[],r=1;r<arguments.length;r++)o[r-1]=arguments[r];try{return e.apply(void 0,o)}catch(t){return t instanceof Error?{errorCode:_isomorphic_1.BrowserSideErrorCode.JS,message:t.stack||t.message}:{errorCode:_isomorphic_1.BrowserSideErrorCode.JS,message:"Unknown error: "+String(t)}}}function prepareElementsScreenshot(e,o){return safeCall(prepareElementsScreenshotUnsafe,e,o)}function getCurrentPixelRatio(){return(0,operations_1.computePixelRatio)()}function scrollBy(e,o,r,t,i,n){return safeCall(function(){var s=(0,logger_1.createDebugLogger)({debug:n},"scrollBy"),a=(0,operations_1.computePixelRatio)(t,i),l=r?lib.queryFirst(r):null,c=null!==l&&void 0!==l?l:(0,scroll_1.getCommonScrollParent)(e),p=(0,descriptions_1.getReadableElementDescriptor)(c),u=r?l?"".concat(r," (").concat(p,")"):"".concat(r," (not found, auto-detected ").concat(p,")"):"auto-detected ".concat(p),_=(0,_isomorphic_1.fromDeviceToCssNumber)(o,a);return(0,scroll_1.scrollElementBy)(c,_),{readableSelectorToScrollDescr:u,debugLog:s()}})}function scrollTo(e,o,r,t,i,n){return safeCall(function(){var s=(0,logger_1.createDebugLogger)({debug:n},"scrollTo");s("Asked to scroll to with params: targetsToCapture:",e,"scrollOffset:",o,"targetToScroll:",r);var a=(0,operations_1.computePixelRatio)(t,i),l=r?lib.queryFirst(r):null,c=null!==l&&void 0!==l?l:(0,scroll_1.getCommonScrollParent)(e),p=(0,descriptions_1.getReadableElementDescriptor)(c),u=r?l?"".concat(r," (").concat(p,")"):"".concat(r," (not found, auto-detected ").concat(p,")"):"auto-detected ".concat(p),_=(0,_isomorphic_1.fromDeviceToCssNumber)(o,a);return(0,scroll_1.scrollElementToOffset)(c,_),{readableSelectorToScrollDescr:u,debugLog:s()}})}function getViewportState(e,o){var r=(0,operations_1.computePixelRatio)(e,o);return{viewportSize:(0,_isomorphic_1.fromCssToDevice)((0,operations_1.computeViewportSize)(),r),viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)((0,operations_1.computeViewportOffset)()),r),documentSize:(0,_isomorphic_1.ceilCoords)((0,_isomorphic_1.fromCssToDevice)((0,operations_1.computeDocumentSize)(),r)),pixelRatio:r}}function getCaptureStateUnsafe(e,o,r,t,i,n){var s=getViewportState(t,i),a=r?lib.queryFirst(r):null,l=null!==a&&void 0!==a?a:(0,scroll_1.getCommonScrollParent)(e),c=(0,descriptions_1.getReadableElementDescriptor)(l),p=r?a?"".concat(r," (").concat(c,")"):"".concat(r," (not found, auto-detected ").concat(c,")"):"auto-detected ".concat(c),u=(0,operations_1.computeIgnoreAreas)(o),_=(0,operations_1.computeSafeArea)(e,l,n),m=(0,operations_1.computeCaptureSpecs)(e,n),d=(0,operations_1.computeScrollOffset)(l),f=computeActualShift();return n("scrollOffset:",d),__assign(__assign({},s),{captureSpecs:m.map(function(e){return{full:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.full),s.pixelRatio),clip:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.clip),s.pixelRatio),visible:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e.visible),s.pixelRatio)}}),ignoreAreas:u.map(function(e){return(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),s.pixelRatio)}),safeArea:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(_),s.pixelRatio),scrollOffset:(0,_isomorphic_1.fromCssToDeviceNumber)(d,s.pixelRatio),anchorShift:null===f?null:(0,_isomorphic_1.fromCssToDeviceNumber)(f,s.pixelRatio),readableSelectorToScrollDescr:p})}function getCaptureState(e,o,r,t,i,n){return safeCall(function(){var s=(0,logger_1.createDebugLogger)({debug:n},"getCaptureState"),a=getCaptureStateUnsafe(e,o,r,t,i,s);return __assign(__assign({},a),{debugLog:s()})})}function prepareFullPageScreenshot(e){return void 0===e&&(e={}),safeCall(function(){(0,operations_1.prepareFullPageScrollCleanup)();var o=(0,operations_1.computePixelRatio)(e.usePixelRatio);window.scrollTo(0,0);var r=(0,operations_1.computeDocumentSize)(),t=(0,operations_1.computeViewportSize)(),i=(0,operations_1.computeViewportOffset)(),n=(0,operations_1.computeSafeArea)(["body"],document.documentElement);e.disableAnimation&&(0,operations_1.disableAnimations)();var s=!1;if(e.disableHover===_isomorphic_1.DisableHoverMode.Always)(0,operations_1.disablePointerEvents)(),s=!0;else if(e.disableHover===_isomorphic_1.DisableHoverMode.WhenScrollingNeeded){var a=r.height>t.height;a&&((0,operations_1.disablePointerEvents)(),s=!0)}var l=(0,operations_1.computeElementPositionsProbe)().map(function(e){return e?__assign(__assign({},(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),o)),{elementDescr:e.elementDescr}):null});return{documentSize:(0,_isomorphic_1.ceilCoords)((0,_isomorphic_1.fromCssToDevice)(r,o)),viewportSize:(0,_isomorphic_1.fromCssToDevice)(t,o),viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)(i),o),safeArea:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(n),o),elementPositionsProbe:l,pixelRatio:o,pointerEventsDisabled:s}})}function scrollFullPage(e,o){return void 0===o&&(o={}),safeCall(function(){var r=(0,operations_1.computePixelRatio)(o.usePixelRatio),t=(0,_isomorphic_1.fromDeviceToCssNumber)(e,r)-1;(0,scroll_1.scrollElementBy)(document.documentElement,t);var i=(0,operations_1.computeViewportOffset)(),n=(0,operations_1.computeElementPositionsProbe)().map(function(e){return e?__assign(__assign({},(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),r)),{elementDescr:e.elementDescr}):null});return{viewportOffset:(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.floorCoords)(i),r),elementPositionsProbe:n}})}function prepareViewportScreenshot(e){return void 0===e&&(e={}),safeCall(function(){e.disableAnimation&&(0,operations_1.disableAnimations)();var o=getViewportState(e.usePixelRatio,e.pixelRatioOverride),r=(0,operations_1.computeCanHaveCaret)(),t=(0,operations_1.computeIgnoreAreas)(e.ignoreSelectors),i=!1;return e.disableHover===_isomorphic_1.DisableHoverMode.Always&&((0,operations_1.disablePointerEvents)(),i=!0),__assign(__assign({},o),{ignoreAreas:t.map(function(e){return(0,_isomorphic_1.fromCssToDevice)((0,_isomorphic_1.roundCoords)(e),o.pixelRatio)}),canHaveCaret:r,pointerEventsDisabled:i})})}function disableFrameAnimations(){return safeCall(operations_1.disableAnimations)}function cleanupFrameAnimations(){window.__cleanupAnimation&&window.__cleanupAnimation()}function disablePointerEvents(){return safeCall(operations_1.disablePointerEvents)}function cleanupPointerEvents(){var e=(0,dom_1.getScreenshooterNamespaceData)();e.cleanupPointerEventsCb&&e.cleanupPointerEventsCb()}function cleanupScrolls(){(0,dom_1.getScreenshooterNamespaceData)().trackedElementsData=[],(0,operations_1.cleanupSavedScrolls)()}function captureAnchorBaseline(e){return safeCall(function(){for(var o=(0,operations_1.computeCaptureSpecs)(e),r=o.length>0?(0,_isomorphic_1.getCoveringRect)(o.map(function(e){return e.full})):null,t=[],i=0;i<e.length;i++){var n=lib.queryFirst((0,pseudo_element_rect_1.parseCaptureTarget)(e[i]).elementTarget);if(n){t.push(n);for(var s=n.querySelectorAll("*"),a=0;a<s.length;a++)t.push(s[a])}}var l=t.filter(function(e){var o=e.getBoundingClientRect();if(o.width<=0||o.height<=0)return!1;if(!r)return!0;var t=(0,_isomorphic_1.fromBcrToRect)(o);return Boolean((0,_isomorphic_1.getIntersection)(r,t))}),c=sampleRandom(l,MAX_ANCHOR_TRACKED_ELEMENTS);(0,dom_1.getScreenshooterNamespaceData)().trackedElementsData=c.map(function(e){var o=e.getBoundingClientRect();return{element:e,rect:(0,_isomorphic_1.fromBcrToRect)(o)}})})}function prepareElementsScreenshotUnsafe(e,o){var r,t=(0,logger_1.createDebugLogger)(o,"prepareElementsScreenshot");(0,operations_1.saveScrollPositions)(e,o.selectorToScroll);var i=(0,operations_1.scrollToCaptureAreaIfNeeded)(e,o.captureElementFromTop,o.allowViewportOverflow,o.selectorToScroll,t).readableSelectorToScrollDescr;o.disableAnimation&&(0,operations_1.disableAnimations)();var n=getCaptureStateUnsafe(e,null!==(r=o.ignoreSelectors)&&void 0!==r?r:[],o.selectorToScroll,o.usePixelRatio,o.pixelRatioOverride,t),s=(0,operations_1.computeCanHaveCaret)(),a=!1;if(o.disableHover===_isomorphic_1.DisableHoverMode.Always)(0,operations_1.disablePointerEvents)(),a=!0;else if(o.disableHover===_isomorphic_1.DisableHoverMode.WhenScrollingNeeded&&o.compositeImage){var l=(0,_isomorphic_1.getCoveringRect)(n.captureSpecs.map(function(e){return e.full})),c=(0,_isomorphic_1.getBottom)(l)>(0,_isomorphic_1.getBottom)(n.safeArea);c&&(t("adding stylesheet with pointer-events: none on all elements (composite capture needs scrolling). captureArea:",l,"safeArea:",n.safeArea),(0,operations_1.disablePointerEvents)(),a=!0)}return __assign(__assign({},n),{canHaveCaret:s,pointerEventsDisabled:a,readableSelectorToScrollDescr:i,debugLog:t()})}var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var o,r=1,t=arguments.length;r<t;r++){o=arguments[r];for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(e[i]=o[i])}return e},__assign.apply(this,arguments)},__createBinding=this&&this.__createBinding||(Object.create?function(e,o,r,t){t===undefined&&(t=r);var i=Object.getOwnPropertyDescriptor(o,r);i&&("get"in i?o.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return o[r]}}),Object.defineProperty(e,t,i)}:function(e,o,r,t){t===undefined&&(t=r),e[t]=o[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,o){Object.defineProperty(e,"default",{enumerable:!0,value:o})}:function(e,o){e["default"]=o}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var o={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(o,e,r);return __setModuleDefault(o,e),o};exports.__esModule=!0,exports.captureAnchorBaseline=exports.cleanupScrolls=exports.cleanupPointerEvents=exports.disablePointerEvents=exports.cleanupFrameAnimations=exports.disableFrameAnimations=exports.prepareViewportScreenshot=exports.scrollFullPage=exports.prepareFullPageScreenshot=exports.getCaptureState=exports.scrollTo=exports.scrollBy=exports.getCurrentPixelRatio=exports.prepareElementsScreenshot=void 0;var _isomorphic_1=require("/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js"),lib=__importStar(require("./../shared/lib.compat.js")),logger_1=require("../shared/logger"),operations_1=require("./operations"),descriptions_1=require("./utils/descriptions"),dom_1=require("./utils/dom"),pseudo_element_rect_1=require("./utils/pseudo-element-rect"),scroll_1=require("./utils/scroll"),MIN_ANCHOR_SAMPLE_SIZE=3,MAX_ANCHOR_TRACKED_ELEMENTS=500,ANCHOR_SHIFT_TOLERANCE_CSS=1.5;exports.prepareElementsScreenshot=prepareElementsScreenshot,exports.getCurrentPixelRatio=getCurrentPixelRatio,exports.scrollBy=scrollBy,exports.scrollTo=scrollTo,exports.getCaptureState=getCaptureState,exports.prepareFullPageScreenshot=prepareFullPageScreenshot,exports.scrollFullPage=scrollFullPage,exports.prepareViewportScreenshot=prepareViewportScreenshot,exports.disableFrameAnimations=disableFrameAnimations,exports.cleanupFrameAnimations=cleanupFrameAnimations,exports.disablePointerEvents=disablePointerEvents,exports.cleanupPointerEvents=cleanupPointerEvents,exports.cleanupScrolls=cleanupScrolls,exports.captureAnchorBaseline=captureAnchorBaseline;
|
|
7
7
|
},{"../shared/logger":16,"./../shared/lib.compat.js":15,"./operations":5,"./utils/descriptions":7,"./utils/dom":8,"./utils/pseudo-element-rect":10,"./utils/scroll":11,"/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js":22}],4:[function(require,module,exports){
|
|
8
8
|
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,n){n===undefined&&(n=i);var r=Object.getOwnPropertyDescriptor(t,i);r&&("get"in r?t.__esModule:!r.writable&&!r.configurable)||(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){n===undefined&&(n=i),e[n]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e["default"]=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&__createBinding(t,e,i);return __setModuleDefault(t,e),t};exports.__esModule=!0;var implementation=__importStar(require("./implementation")),globalObj="undefined"==typeof window?globalThis:window;globalObj.__geminiCore||(globalObj.__geminiCore={}),globalObj.__geminiCore[__geminiNamespace]=implementation;
|
|
9
9
|
},{"./implementation":3}],5:[function(require,module,exports){
|
|
10
|
-
"use strict";function computeScrollOffset(e){return(0,scroll_1.isRootLikeElement)(e)?window.pageYOffset:e.scrollTop}function computeViewportSize(){var e=window.visualViewport;return e&&e.width>0&&e.height>0?{width:e.width,height:e.height}:{width:window.innerWidth,height:window.innerHeight}}function computeViewportOffset(){return{left:window.pageXOffset,top:window.pageYOffset}}function getProbeAxisCoordinates(e,t){var o=Math.max(1,Math.floor(e));if(t<=1)return[0];for(var r=o-1,n=o/(t-1),i=[],l=0;l<t;l++)i.push(Math.min(r,Math.round(l*n)));return i}function computeElementPositionsProbe(e){void 0===e&&(e=ELEMENT_POSITIONS_PROBE_GRID_SIZE);for(var t=computeViewportSize(),o=getProbeAxisCoordinates(t.width,e),r=getProbeAxisCoordinates(t.height,e),n=[],i=0;i<r.length;i++)for(var l=0;l<o.length;l++){var s=o[l],a=r[i],c=document.elementFromPoint(s,a);c?n.push(__assign(__assign({},(0,_isomorphic_1.fromBcrToRect)(c.getBoundingClientRect())),{elementDescr:(0,descriptions_1.getReadableElementDescriptor)(c)})):n.push(null)}return n}function computeCaptureSpecs(e,t){if(0===e.length)throw new Error("No targets to compute capture area");null===t||void 0===t||t("========== <computeCaptureSpecs> =========="),null===t||void 0===t||t("targets:",e);for(var o=performance.now(),r=[],n=0;n<e.length;n++){var i=(0,pseudo_element_rect_1.parseCaptureTarget)(e[n]),l=lib.queryFirst(i.elementTarget);l&&r.push({element:l,pseudoElement:i.pseudoElement})}for(var s=[],a=0,c=r;a<c.length;a++){var u=c[a],l=u.element,p=u.pseudoElement,d=function(e,o){var r,n=o?(0,element_rect_1.getPseudoElementCaptureRect)(e,o):(0,element_rect_1.getElementCaptureRect)(e,t);if(!n)return null;var i=(0,clip_rect_1.getClipRect)(e,t);return{full:n,visible:null!==(r=(0,_isomorphic_1.getIntersection)(n,i))&&void 0!==r?r:{top:n.top,left:n.left,width:0,height:0},clip:i}}(l,p);d&&s.push(d)}return null===t||void 0===t||t("captureSpecs:",s),null===t||void 0===t||t("computeCaptureSpecs time taken:",(performance.now()-o).toFixed(1)+"ms"),null===t||void 0===t||t("========== </computeCaptureSpecs> =========="),s}function computeIgnoreAreas(e){void 0===e&&(e=[]);for(var t=[],o=0;o<e.length;o++)for(var r=(0,pseudo_element_rect_1.parseCaptureTarget)(e[o]),n=lib.queryAll(r.elementTarget),i=0;i<n.length;i++){var l=r.pseudoElement?(0,element_rect_1.getPseudoElementCaptureRect)(n[i],r.pseudoElement):(0,element_rect_1.getElementCaptureRect)(n[i]);null!==l&&t.push(l)}return t}function computeSafeArea(e,t,o){var r,n;null===o||void 0===o||o("========== <computeSafeArea> ==========");var i=performance.now(),l=computeViewportSize(),s={left:0,top:0,width:l.width,height:l.height},a=e.map(function(e){return lib.queryFirst((0,pseudo_element_rect_1.parseCaptureTarget)(e).elementTarget)}).filter(function(e){return null!==e}),c=computeCaptureSpecs(e).map(function(e){return e.full});if(0===c.length)return{top:s.top,height:s.height};var u,p=null!==t&&void 0!==t?t:document.documentElement;if(p===document.documentElement)null===o||void 0===o||o("setting base safe area to viewport rect"),u=__assign({},s);else{var d=(0,element_rect_1.getBoundingClientContentRect)(p);null===o||void 0===o||o("setting base safe area to visible part of scroll container:",(0,descriptions_1.getReadableElementDescriptor)(p),"contentRect:",d),u=null!==(r=(0,_isomorphic_1.getIntersection)(d,s))&&void 0!==r?r:__assign({},s);var m=(0,element_rect_1.getVerticalRadiusInsets)(p),f=m.top,h=m.bottom;if(f>0||h>0){var g=u.height,_=Math.min(f,g),v=Math.min(h,g-_);null===o||void 0===o||o("applying radius insets to safe area:",{topInset:_,bottomInset:v}),u=__assign(__assign({},u),{top:u.top+_,height:g-_-v})}}var S=__assign({},u);if(a.every(function(e){return"fixed"===getComputedStyle(e).position||null!==(0,dom_1.findFixedPositionedParent)(e)&&null===(0,scroll_1.getScrollParent)(e)}))return null===o||void 0===o||o("all capture elements are fixed or inside non-scrollable fixed subtree, skipping interferences"),{top:S.top,height:S.height};for(var w=(0,_isomorphic_1.getCoveringRect)(c),b=a.map(function(e){return(0,z_index_1.buildZChain)(e)}),E=w.left,C=E+w.width,P=[],x=document.documentElement.querySelectorAll("*"),y=1===a.length?a[0]:null,T=0;T<x.length;T++)!function(e){var t=x[e];if(p===t||lib.contains(t,p))return"continue";if(y&&(t===y||lib.contains(t,y)))return"continue";var r=getComputedStyle(t),i=r.position,l=t.getBoundingClientRect();if(l.width<1||l.height<1||1===l.width&&1===l.height||"hidden"===r.visibility||"none"===r.display||parseFloat(r.opacity)<1e-4||/opacity\(\s*0(?:\.0+)?%?\s*\)/.test(r.filter))return"continue";if(l.right<=E||l.left>=C)return"continue";if(null===(0,_isomorphic_1.getIntersection)((0,_isomorphic_1.fromBcrToRect)(l),s))return"continue";var c=!1,d=!1,m=(0,element_rect_1.domRectToViewportCss)(l),f=(0,dom_1.findFixedPositionedParent)(t),h=null!==f&&(f===p||lib.contains(f,p));if("fixed"===i||f&&!h)c=!0,d=a.some(function(e){return lib.contains(e,t)});else if("absolute"===i){if(a.some(function(e){return lib.contains(e,t)}))return"continue";var g=(0,dom_1.findContainingBlock)(t);p===document.documentElement||lib.contains(p,g)||(c=!0)}else if("sticky"===i){var _=parseFloat(r.top),v=parseFloat(r.bottom),S=null!==(n=(0,scroll_1.getScrollParent)(t))&&void 0!==n?n:document.documentElement;null===o||void 0===o||o("scrollParent:",(0,descriptions_1.getReadableElementDescriptor)(S));var w=S.getBoundingClientRect();if(_+=(0,scroll_1.isRootLikeElement)(S)?0:w.top,d=a.some(function(e){return e===t||lib.contains(e,t)})&&(S===p||(0,scroll_1.isRootLikeElement)(S)&&(0,scroll_1.isRootLikeElement)(p)),isNaN(_)){if(!isNaN(v)){var T=p===document.documentElement,A=T?s.height:u.top+u.height;m={left:l.left,top:A-v-l.height,width:l.width,height:l.height},c=!0}}else m={left:l.left,top:_,width:l.width,height:l.height},c=!0}if(!c)return"continue";var R=(0,z_index_1.buildZChain)(t);if(d||!b.every(function(e){return(0,z_index_1.isChainBehind)(R,e)})){var I=(0,element_rect_1.getExtRect)(r,m),O=I.left;if(O+I.width<=E||O>=C)return"continue";P.push({element:t,rect:I})}}(T);for(var A=u.top,R=u.height,I=S.height,O=0,D=P;O<D.length;O++){var N=D[O];null===o||void 0===o||o("processing interference:",{element:(0,descriptions_1.getReadableElementDescriptor)(N.element),rect:N.rect});var M=N.rect,q=(0,_isomorphic_1.getBottom)({top:A,height:R}),B=(0,_isomorphic_1.getBottom)(M),F=B-A,k=q-M.top,V=A,z=R;F<k?(V=Math.max(B,A),z=Math.max(0,q-V),null===o||void 0===o||o("decided to shrink top")):k&&(z=Math.min(R,M.top-A),null===o||void 0===o||o("decided to shrink bottom")),z<.3*I?null===o||void 0===o||o("decided to skip, because shrinking is too large"):(null===o||void 0===o||o("resulting safe area top:",V,"resulting safe area height:",z),A=V,R=z)}R<.3*I&&(A=S.top,R=S.height),(0,user_agent_1.isSafariMobile)()&&l.height-(A+R)<40&&(R-=40);var L={top:A,height:R};return null===o||void 0===o||o("final safe area:",L),null===o||void 0===o||o("computeSafeArea time taken:",(performance.now()-i).toFixed(1)+"ms"),null===o||void 0===o||o("========== </computeSafeArea> =========="),L}function computeDocumentSize(){var e=(0,dom_1.getMainDocumentElem)();return{width:e.scrollWidth,height:e.scrollHeight}}function computeCanHaveCaret(){var e=document.activeElement;return e instanceof HTMLElement&&(/^(input|textarea)$/i.test(e.tagName)||e.isContentEditable)}function computePixelRatio(e){return void 0===e&&(e=!0),!1===e?1:window.devicePixelRatio?window.devicePixelRatio:window.screen.deviceXDPI/window.screen.logicalXDPI||1}function scrollToCaptureAreaIfNeeded(e,t,o,r,n){var i=computeViewportSize(),l=__assign({top:0,left:0},i),s=computeCaptureSpecs(e);if(!s)return{};var a=r?lib.queryFirst(r):null,c=null!==a&&void 0!==a?a:(0,scroll_1.getCommonScrollParent)(e),u="string"==typeof r?r:(0,descriptions_1.getReadableElementDescriptor)(null!==a&&void 0!==a?a:c),p=(0,_isomorphic_1.getCoveringRect)(s.map(function(e){return e.full})),d=computeSafeArea(e,c,n),m=(0,_isomorphic_1.getIntersection)(p,d),f=(0,_isomorphic_1.getIntersection)(p,l),h=Math.min(p.height,d.height),g=!m||m.height<h/2,_=p.top>=d.top;if(null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: intersection check",{captureArea:p,safeArea:d,viewport:l,hasViewportIntersection:Boolean(f),hasSafeAreaIntersection:Boolean(m),isIntersectionWithSafeAreaTooSmall:g,captureElementFromTop:Boolean(t)}),!t&&!f)throw null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: throwing OutsideOfViewportError because captureElementFromTop is disabled and target is outside viewport"),new outside_of_viewport_1.OutsideOfViewportError;if((!t||!g)&&_)return null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: skipping scroll",{reason:t?"target already has enough safe area visibility":"captureElementFromTop is disabled"}),{};if(!t&&o)return null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: skipping scroll because allowViewportOverflow is true and captureElementFromTop is false"),{};null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: scrolling is required",{scrollElement:u,requestedTargetToScroll:null!==r&&void 0!==r?r:null,targetResolved:Boolean(a)});var v=__spreadArray([],(0,scroll_1.getScrollParentsChain)(c),!0);v[v.length-1]!==c&&v.push(c);for(var S=1;S<v.length;S++){var w=computeSafeArea(e,v[S-1]),b=v[S].getBoundingClientRect().top,E=b-w.top;null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: scrolling chain element",{scrollElement:(0,descriptions_1.getReadableElementDescriptor)(v[S-1]),childElement:(0,descriptions_1.getReadableElementDescriptor)(v[S]),scrollDelta:E}),(0,scroll_1.scrollElementBy)(v[S-1],E,n)}var C=(0,_isomorphic_1.getCoveringRect)(computeCaptureSpecs(e).map(function(e){return e.full}));if(!C)return{};var P=computeSafeArea(e,c),x=C.top-P.top;return null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: final alignment scroll",{scrollElement:u,finalScrollDelta:x}),(0,scroll_1.scrollElementBy)(c,x,n),{readableSelectorToScrollDescr:u}}function saveElementScrollPosition(e){var t=(0,dom_1.getScreenshooterNamespaceData)();if(t.savedScrollPositions||(t.savedScrollPositions=[]),!t.savedScrollPositions.some(function(t){return t.element===e})){var o=(0,scroll_1.isRootLikeElement)(e)?{element:e,left:window.pageXOffset,top:window.pageYOffset}:{element:e,left:e.scrollLeft,top:e.scrollTop};t.savedScrollPositions.push(o)}}function saveScrollPositions(e,t){(0,dom_1.getScreenshooterNamespaceData)().savedScrollPositions=[];var o=t?lib.queryFirst(t):null,r=null!==o&&void 0!==o?o:(0,scroll_1.getCommonScrollParent)(e),n=__spreadArray([],(0,scroll_1.getScrollParentsChain)(r),!0);n[n.length-1]!==r&&n.push(r);for(var i=0,l=n;i<l.length;i++){saveElementScrollPosition(l[i])}}function prepareFullPageScrollCleanup(){(0,dom_1.getScreenshooterNamespaceData)().savedScrollPositions=[],saveElementScrollPosition(document.documentElement)}function restoreScrollPosition(e){if((0,scroll_1.isRootLikeElement)(e.element))return(0,scroll_1.performScrollFixForSafariIfNeeded)(e.top),void window.scrollTo(e.left,e.top);var t=e.element;if("function"==typeof t.scrollTo)return void t.scrollTo(e.left,e.top);"number"==typeof t.scrollLeft&&(t.scrollLeft=e.left),"number"==typeof t.scrollTop&&(t.scrollTop=e.top)}function cleanupSavedScrolls(){var e;try{var t=(0,dom_1.getScreenshooterNamespaceData)(),o=null!==(e=t.savedScrollPositions)&&void 0!==e?e:[];t.savedScrollPositions=[];for(var r=0,n=o;r<n.length;r++){var i=n[r];try{restoreScrollPosition(i)}catch(l){}}}catch(l){}}function disableAnimations(){function e(e){var r=document.createElement("style");r.innerHTML=t+["{"," animation-delay: 0ms !important;"," animation-duration: 0ms !important;"," animation-timing-function: step-start !important;"," transition-timing-function: step-start !important;"," scroll-behavior: auto !important;"," transition: none !important;","}"].join("\n"),e.appendChild(r),o.push(r)}var t=["","::before","::after"].map(function(e){return"*:not(#testplane-q.testplane-w.testplane-e.testplane-r.testplane-t.testplane-y)"+e}).join(", "),o=[];(0,dom_1.forEachRoot)(function(t){try{e(t)}catch(o){if(!o||!o.message||-1===o.message.indexOf("This document requires 'TrustedHTML' assignment"))throw o;(0,trusted_types_1.createDefaultTrustedTypesPolicy)(),e(t)}}),window.__cleanupAnimation=function(){for(var e=0;e<o.length;e++)o[e].parentNode.removeChild(o[e]);delete window.__cleanupAnimation}}function disablePointerEvents(){function e(e){var r=document.createElement("style");r.innerHTML=t+["{"," pointer-events: none !important;","}"].join("\n"),e.appendChild(r),o.push(r)}var t=["","::before","::after"].map(function(e){return"*:not(#testplane-q.testplane-w.testplane-e.testplane-r.testplane-t.testplane-y)"+e}).join(", "),o=[];(0,dom_1.forEachRoot)(function(t){try{e(t)}catch(o){if(!o||!o.message||-1===o.message.indexOf("This document requires 'TrustedHTML' assignment"))throw o;(0,trusted_types_1.createDefaultTrustedTypesPolicy)(),e(t)}}),(0,dom_1.getScreenshooterNamespaceData)().cleanupPointerEventsCb=function(){for(var e=0;e<o.length;e++)o[e].parentNode.removeChild(o[e])}}var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var t,o=1,r=arguments.length;o<r;o++){t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},__assign.apply(this,arguments)},__createBinding=this&&this.__createBinding||(Object.create?function(e,t,o,r){r===undefined&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);n&&("get"in n?t.__esModule:!n.writable&&!n.configurable)||(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}:function(e,t,o,r){r===undefined&&(r=o),e[r]=t[o]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e["default"]=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&__createBinding(t,e,o);return __setModuleDefault(t,e),t},__spreadArray=this&&this.__spreadArray||function(e,t,o){if(o||2===arguments.length)for(var r,n=0,i=t.length;n<i;n++)!r&&n in t||(r||(r=Array.prototype.slice.call(t,0,n)),r[n]=t[n]);return e.concat(r||Array.prototype.slice.call(t))};exports.__esModule=!0,exports.disablePointerEvents=exports.disableAnimations=exports.cleanupSavedScrolls=exports.prepareFullPageScrollCleanup=exports.saveScrollPositions=exports.scrollToCaptureAreaIfNeeded=exports.computePixelRatio=exports.computeCanHaveCaret=exports.computeDocumentSize=exports.computeSafeArea=exports.computeIgnoreAreas=exports.computeCaptureSpecs=exports.computeElementPositionsProbe=exports.computeViewportOffset=exports.computeViewportSize=exports.computeScrollOffset=void 0;var _isomorphic_1=require("/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js"),lib=__importStar(require("./../shared/lib.compat.js")),outside_of_viewport_1=require("./errors/outside-of-viewport"),descriptions_1=require("./utils/descriptions"),dom_1=require("./utils/dom"),element_rect_1=require("./utils/element-rect"),clip_rect_1=require("./utils/clip-rect"),scroll_1=require("./utils/scroll"),trusted_types_1=require("./utils/trusted-types"),z_index_1=require("./utils/z-index"),pseudo_element_rect_1=require("./utils/pseudo-element-rect"),user_agent_1=require("./utils/user-agent");exports.computeScrollOffset=computeScrollOffset,exports.computeViewportSize=computeViewportSize,exports.computeViewportOffset=computeViewportOffset;var ELEMENT_POSITIONS_PROBE_GRID_SIZE=5;exports.computeElementPositionsProbe=computeElementPositionsProbe,exports.computeCaptureSpecs=computeCaptureSpecs,exports.computeIgnoreAreas=computeIgnoreAreas,exports.computeSafeArea=computeSafeArea,exports.computeDocumentSize=computeDocumentSize,exports.computeCanHaveCaret=computeCanHaveCaret,exports.computePixelRatio=computePixelRatio,exports.scrollToCaptureAreaIfNeeded=scrollToCaptureAreaIfNeeded,exports.saveScrollPositions=saveScrollPositions,exports.prepareFullPageScrollCleanup=prepareFullPageScrollCleanup,exports.cleanupSavedScrolls=cleanupSavedScrolls,exports.disableAnimations=disableAnimations,exports.disablePointerEvents=disablePointerEvents;
|
|
10
|
+
"use strict";function computeScrollOffset(e){return(0,scroll_1.isRootLikeElement)(e)?window.pageYOffset:e.scrollTop}function computeViewportSize(){var e=window.visualViewport;return e&&e.width>0&&e.height>0?{width:e.width,height:e.height}:{width:window.innerWidth,height:window.innerHeight}}function computeViewportOffset(){return{left:window.pageXOffset,top:window.pageYOffset}}function getProbeAxisCoordinates(e,t){var o=Math.max(1,Math.floor(e));if(t<=1)return[0];for(var r=o-1,n=o/(t-1),i=[],l=0;l<t;l++)i.push(Math.min(r,Math.round(l*n)));return i}function computeElementPositionsProbe(e){void 0===e&&(e=ELEMENT_POSITIONS_PROBE_GRID_SIZE);for(var t=computeViewportSize(),o=getProbeAxisCoordinates(t.width,e),r=getProbeAxisCoordinates(t.height,e),n=[],i=0;i<r.length;i++)for(var l=0;l<o.length;l++){var s=o[l],a=r[i],c=document.elementFromPoint(s,a);c?n.push(__assign(__assign({},(0,_isomorphic_1.fromBcrToRect)(c.getBoundingClientRect())),{elementDescr:(0,descriptions_1.getReadableElementDescriptor)(c)})):n.push(null)}return n}function computeCaptureSpecs(e,t){if(0===e.length)throw new Error("No targets to compute capture area");null===t||void 0===t||t("========== <computeCaptureSpecs> =========="),null===t||void 0===t||t("targets:",e);for(var o=performance.now(),r=[],n=0;n<e.length;n++){var i=(0,pseudo_element_rect_1.parseCaptureTarget)(e[n]),l=lib.queryFirst(i.elementTarget);l&&r.push({element:l,pseudoElement:i.pseudoElement})}for(var s=[],a=0,c=r;a<c.length;a++){var u=c[a],l=u.element,p=u.pseudoElement,d=function(e,o){var r,n=o?(0,element_rect_1.getPseudoElementCaptureRect)(e,o):(0,element_rect_1.getElementCaptureRect)(e,t);if(!n)return null;var i=(0,clip_rect_1.getClipRect)(e,t);return{full:n,visible:null!==(r=(0,_isomorphic_1.getIntersection)(n,i))&&void 0!==r?r:{top:n.top,left:n.left,width:0,height:0},clip:i}}(l,p);d&&s.push(d)}return null===t||void 0===t||t("captureSpecs:",s),null===t||void 0===t||t("computeCaptureSpecs time taken:",(performance.now()-o).toFixed(1)+"ms"),null===t||void 0===t||t("========== </computeCaptureSpecs> =========="),s}function computeIgnoreAreas(e){void 0===e&&(e=[]);for(var t=[],o=0;o<e.length;o++)for(var r=(0,pseudo_element_rect_1.parseCaptureTarget)(e[o]),n=lib.queryAll(r.elementTarget),i=0;i<n.length;i++){var l=r.pseudoElement?(0,element_rect_1.getPseudoElementCaptureRect)(n[i],r.pseudoElement):(0,element_rect_1.getElementCaptureRect)(n[i]);null!==l&&t.push(l)}return t}function computeSafeArea(e,t,o){var r,n;null===o||void 0===o||o("========== <computeSafeArea> ==========");var i=performance.now(),l=computeViewportSize(),s={left:0,top:0,width:l.width,height:l.height},a=e.map(function(e){return lib.queryFirst((0,pseudo_element_rect_1.parseCaptureTarget)(e).elementTarget)}).filter(function(e){return null!==e}),c=computeCaptureSpecs(e).map(function(e){return e.full});if(0===c.length)return{top:s.top,height:s.height};var u,p=null!==t&&void 0!==t?t:document.documentElement;if(p===document.documentElement)null===o||void 0===o||o("setting base safe area to viewport rect"),u=__assign({},s);else{var d=(0,element_rect_1.getBoundingClientContentRect)(p);null===o||void 0===o||o("setting base safe area to visible part of scroll container:",(0,descriptions_1.getReadableElementDescriptor)(p),"contentRect:",d),u=null!==(r=(0,_isomorphic_1.getIntersection)(d,s))&&void 0!==r?r:__assign({},s);var m=(0,element_rect_1.getVerticalRadiusInsets)(p),f=m.top,h=m.bottom;if(f>0||h>0){var g=u.height,_=Math.min(f,g),v=Math.min(h,g-_);null===o||void 0===o||o("applying radius insets to safe area:",{topInset:_,bottomInset:v}),u=__assign(__assign({},u),{top:u.top+_,height:g-_-v})}}var S=__assign({},u);if(a.every(function(e){return"fixed"===getComputedStyle(e).position||null!==(0,dom_1.findFixedPositionedParent)(e)&&null===(0,scroll_1.getScrollParent)(e)}))return null===o||void 0===o||o("all capture elements are fixed or inside non-scrollable fixed subtree, skipping interferences"),{top:S.top,height:S.height};for(var w=(0,_isomorphic_1.getCoveringRect)(c),b=a.map(function(e){return(0,z_index_1.buildZChain)(e)}),E=w.left,C=E+w.width,P=[],x=document.documentElement.querySelectorAll("*"),y=1===a.length?a[0]:null,T=0;T<x.length;T++)!function(e){var t=x[e];if(p===t||lib.contains(t,p))return"continue";if(y&&(t===y||lib.contains(t,y)))return"continue";var r=getComputedStyle(t),i=r.position,l=t.getBoundingClientRect();if(l.width<1||l.height<1||1===l.width&&1===l.height||"hidden"===r.visibility||"none"===r.display||parseFloat(r.opacity)<1e-4||/opacity\(\s*0(?:\.0+)?%?\s*\)/.test(r.filter))return"continue";if(l.right<=E||l.left>=C)return"continue";if(null===(0,_isomorphic_1.getIntersection)((0,_isomorphic_1.fromBcrToRect)(l),s))return"continue";var c=!1,d=!1,m=(0,element_rect_1.domRectToViewportCss)(l),f=(0,dom_1.findFixedPositionedParent)(t),h=null!==f&&(f===p||lib.contains(f,p));if("fixed"===i||f&&!h)c=!0,d=a.some(function(e){return lib.contains(e,t)});else if("absolute"===i){if(a.some(function(e){return lib.contains(e,t)}))return"continue";var g=(0,dom_1.findContainingBlock)(t);p===document.documentElement||lib.contains(p,g)||(c=!0)}else if("sticky"===i){var _=parseFloat(r.top),v=parseFloat(r.bottom),S=null!==(n=(0,scroll_1.getScrollParent)(t))&&void 0!==n?n:document.documentElement;null===o||void 0===o||o("scrollParent:",(0,descriptions_1.getReadableElementDescriptor)(S));var w=S.getBoundingClientRect();if(_+=(0,scroll_1.isRootLikeElement)(S)?0:w.top,d=a.some(function(e){return e===t||lib.contains(e,t)})&&(S===p||(0,scroll_1.isRootLikeElement)(S)&&(0,scroll_1.isRootLikeElement)(p)),isNaN(_)){if(!isNaN(v)){var T=p===document.documentElement,A=T?s.height:u.top+u.height;m={left:l.left,top:A-v-l.height,width:l.width,height:l.height},c=!0}}else m={left:l.left,top:_,width:l.width,height:l.height},c=!0}if(!c)return"continue";var R=(0,z_index_1.buildZChain)(t);if(d||!b.every(function(e){return(0,z_index_1.isChainBehind)(R,e)})){var I=(0,element_rect_1.getExtRect)(r,m),O=I.left;if(O+I.width<=E||O>=C)return"continue";P.push({element:t,rect:I})}}(T);for(var A=u.top,R=u.height,I=S.height,O=0,D=P;O<D.length;O++){var N=D[O];null===o||void 0===o||o("processing interference:",{element:(0,descriptions_1.getReadableElementDescriptor)(N.element),rect:N.rect});var M=N.rect,q=(0,_isomorphic_1.getBottom)({top:A,height:R}),B=(0,_isomorphic_1.getBottom)(M),F=B-A,k=q-M.top,V=A,z=R;F<k?(V=Math.max(B,A),z=Math.max(0,q-V),null===o||void 0===o||o("decided to shrink top")):k&&(z=Math.min(R,M.top-A),null===o||void 0===o||o("decided to shrink bottom")),z<.3*I?null===o||void 0===o||o("decided to skip, because shrinking is too large"):(null===o||void 0===o||o("resulting safe area top:",V,"resulting safe area height:",z),A=V,R=z)}R<.3*I&&(A=S.top,R=S.height),(0,user_agent_1.isSafariMobile)()&&l.height-(A+R)<40&&(R-=40);var L={top:A,height:R};return null===o||void 0===o||o("final safe area:",L),null===o||void 0===o||o("computeSafeArea time taken:",(performance.now()-i).toFixed(1)+"ms"),null===o||void 0===o||o("========== </computeSafeArea> =========="),L}function computeDocumentSize(){var e=(0,dom_1.getMainDocumentElem)();return{width:e.scrollWidth,height:e.scrollHeight}}function computeCanHaveCaret(){var e=document.activeElement;return e instanceof HTMLElement&&(/^(input|textarea)$/i.test(e.tagName)||e.isContentEditable)}function computePixelRatio(e,t){return void 0===e&&(e=!0),!1===e?1:t||(window.devicePixelRatio?window.devicePixelRatio:window.screen.deviceXDPI/window.screen.logicalXDPI||1)}function scrollToCaptureAreaIfNeeded(e,t,o,r,n){var i=computeViewportSize(),l=__assign({top:0,left:0},i),s=computeCaptureSpecs(e);if(!s)return{};var a=r?lib.queryFirst(r):null,c=null!==a&&void 0!==a?a:(0,scroll_1.getCommonScrollParent)(e),u="string"==typeof r?r:(0,descriptions_1.getReadableElementDescriptor)(null!==a&&void 0!==a?a:c),p=(0,_isomorphic_1.getCoveringRect)(s.map(function(e){return e.full})),d=computeSafeArea(e,c,n),m=(0,_isomorphic_1.getIntersection)(p,d),f=(0,_isomorphic_1.getIntersection)(p,l),h=Math.min(p.height,d.height),g=!m||m.height<h/2,_=p.top>=d.top;if(null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: intersection check",{captureArea:p,safeArea:d,viewport:l,hasViewportIntersection:Boolean(f),hasSafeAreaIntersection:Boolean(m),isIntersectionWithSafeAreaTooSmall:g,captureElementFromTop:Boolean(t)}),!t&&!f)throw null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: throwing OutsideOfViewportError because captureElementFromTop is disabled and target is outside viewport"),new outside_of_viewport_1.OutsideOfViewportError;if((!t||!g)&&_)return null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: skipping scroll",{reason:t?"target already has enough safe area visibility":"captureElementFromTop is disabled"}),{};if(!t&&o)return null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: skipping scroll because allowViewportOverflow is true and captureElementFromTop is false"),{};null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: scrolling is required",{scrollElement:u,requestedTargetToScroll:null!==r&&void 0!==r?r:null,targetResolved:Boolean(a)});var v=__spreadArray([],(0,scroll_1.getScrollParentsChain)(c),!0);v[v.length-1]!==c&&v.push(c);for(var S=1;S<v.length;S++){var w=computeSafeArea(e,v[S-1]),b=v[S].getBoundingClientRect().top,E=b-w.top;null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: scrolling chain element",{scrollElement:(0,descriptions_1.getReadableElementDescriptor)(v[S-1]),childElement:(0,descriptions_1.getReadableElementDescriptor)(v[S]),scrollDelta:E}),(0,scroll_1.scrollElementBy)(v[S-1],E,n)}var C=(0,_isomorphic_1.getCoveringRect)(computeCaptureSpecs(e).map(function(e){return e.full}));if(!C)return{};var P=computeSafeArea(e,c),x=C.top-P.top;return null===n||void 0===n||n("scrollToCaptureAreaIfNeeded: final alignment scroll",{scrollElement:u,finalScrollDelta:x}),(0,scroll_1.scrollElementBy)(c,x,n),{readableSelectorToScrollDescr:u}}function saveElementScrollPosition(e){var t=(0,dom_1.getScreenshooterNamespaceData)();if(t.savedScrollPositions||(t.savedScrollPositions=[]),!t.savedScrollPositions.some(function(t){return t.element===e})){var o=(0,scroll_1.isRootLikeElement)(e)?{element:e,left:window.pageXOffset,top:window.pageYOffset}:{element:e,left:e.scrollLeft,top:e.scrollTop};t.savedScrollPositions.push(o)}}function saveScrollPositions(e,t){(0,dom_1.getScreenshooterNamespaceData)().savedScrollPositions=[];var o=t?lib.queryFirst(t):null,r=null!==o&&void 0!==o?o:(0,scroll_1.getCommonScrollParent)(e),n=__spreadArray([],(0,scroll_1.getScrollParentsChain)(r),!0);n[n.length-1]!==r&&n.push(r);for(var i=0,l=n;i<l.length;i++){saveElementScrollPosition(l[i])}}function prepareFullPageScrollCleanup(){(0,dom_1.getScreenshooterNamespaceData)().savedScrollPositions=[],saveElementScrollPosition(document.documentElement)}function restoreScrollPosition(e){if((0,scroll_1.isRootLikeElement)(e.element))return(0,scroll_1.performScrollFixForSafariIfNeeded)(e.top),void window.scrollTo(e.left,e.top);var t=e.element;if("function"==typeof t.scrollTo)return void t.scrollTo(e.left,e.top);"number"==typeof t.scrollLeft&&(t.scrollLeft=e.left),"number"==typeof t.scrollTop&&(t.scrollTop=e.top)}function cleanupSavedScrolls(){var e;try{var t=(0,dom_1.getScreenshooterNamespaceData)(),o=null!==(e=t.savedScrollPositions)&&void 0!==e?e:[];t.savedScrollPositions=[];for(var r=0,n=o;r<n.length;r++){var i=n[r];try{restoreScrollPosition(i)}catch(l){}}}catch(l){}}function disableAnimations(){function e(e){var r=document.createElement("style");r.innerHTML=t+["{"," animation-delay: 0ms !important;"," animation-duration: 0ms !important;"," animation-timing-function: step-start !important;"," transition-timing-function: step-start !important;"," scroll-behavior: auto !important;"," transition: none !important;","}"].join("\n"),e.appendChild(r),o.push(r)}var t=["","::before","::after"].map(function(e){return"*:not(#testplane-q.testplane-w.testplane-e.testplane-r.testplane-t.testplane-y)"+e}).join(", "),o=[];(0,dom_1.forEachRoot)(function(t){try{e(t)}catch(o){if(!o||!o.message||-1===o.message.indexOf("This document requires 'TrustedHTML' assignment"))throw o;(0,trusted_types_1.createDefaultTrustedTypesPolicy)(),e(t)}}),window.__cleanupAnimation=function(){for(var e=0;e<o.length;e++)o[e].parentNode.removeChild(o[e]);delete window.__cleanupAnimation}}function disablePointerEvents(){function e(e){var r=document.createElement("style");r.innerHTML=t+["{"," pointer-events: none !important;","}"].join("\n"),e.appendChild(r),o.push(r)}var t=["","::before","::after"].map(function(e){return"*:not(#testplane-q.testplane-w.testplane-e.testplane-r.testplane-t.testplane-y)"+e}).join(", "),o=[];(0,dom_1.forEachRoot)(function(t){try{e(t)}catch(o){if(!o||!o.message||-1===o.message.indexOf("This document requires 'TrustedHTML' assignment"))throw o;(0,trusted_types_1.createDefaultTrustedTypesPolicy)(),e(t)}}),(0,dom_1.getScreenshooterNamespaceData)().cleanupPointerEventsCb=function(){for(var e=0;e<o.length;e++)o[e].parentNode.removeChild(o[e])}}var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var t,o=1,r=arguments.length;o<r;o++){t=arguments[o];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},__assign.apply(this,arguments)},__createBinding=this&&this.__createBinding||(Object.create?function(e,t,o,r){r===undefined&&(r=o);var n=Object.getOwnPropertyDescriptor(t,o);n&&("get"in n?t.__esModule:!n.writable&&!n.configurable)||(n={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,n)}:function(e,t,o,r){r===undefined&&(r=o),e[r]=t[o]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e["default"]=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&__createBinding(t,e,o);return __setModuleDefault(t,e),t},__spreadArray=this&&this.__spreadArray||function(e,t,o){if(o||2===arguments.length)for(var r,n=0,i=t.length;n<i;n++)!r&&n in t||(r||(r=Array.prototype.slice.call(t,0,n)),r[n]=t[n]);return e.concat(r||Array.prototype.slice.call(t))};exports.__esModule=!0,exports.disablePointerEvents=exports.disableAnimations=exports.cleanupSavedScrolls=exports.prepareFullPageScrollCleanup=exports.saveScrollPositions=exports.scrollToCaptureAreaIfNeeded=exports.computePixelRatio=exports.computeCanHaveCaret=exports.computeDocumentSize=exports.computeSafeArea=exports.computeIgnoreAreas=exports.computeCaptureSpecs=exports.computeElementPositionsProbe=exports.computeViewportOffset=exports.computeViewportSize=exports.computeScrollOffset=void 0;var _isomorphic_1=require("/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js"),lib=__importStar(require("./../shared/lib.compat.js")),outside_of_viewport_1=require("./errors/outside-of-viewport"),descriptions_1=require("./utils/descriptions"),dom_1=require("./utils/dom"),element_rect_1=require("./utils/element-rect"),clip_rect_1=require("./utils/clip-rect"),scroll_1=require("./utils/scroll"),trusted_types_1=require("./utils/trusted-types"),z_index_1=require("./utils/z-index"),pseudo_element_rect_1=require("./utils/pseudo-element-rect"),user_agent_1=require("./utils/user-agent");exports.computeScrollOffset=computeScrollOffset,exports.computeViewportSize=computeViewportSize,exports.computeViewportOffset=computeViewportOffset;var ELEMENT_POSITIONS_PROBE_GRID_SIZE=5;exports.computeElementPositionsProbe=computeElementPositionsProbe,exports.computeCaptureSpecs=computeCaptureSpecs,exports.computeIgnoreAreas=computeIgnoreAreas,exports.computeSafeArea=computeSafeArea,exports.computeDocumentSize=computeDocumentSize,exports.computeCanHaveCaret=computeCanHaveCaret,exports.computePixelRatio=computePixelRatio,exports.scrollToCaptureAreaIfNeeded=scrollToCaptureAreaIfNeeded,exports.saveScrollPositions=saveScrollPositions,exports.prepareFullPageScrollCleanup=prepareFullPageScrollCleanup,exports.cleanupSavedScrolls=cleanupSavedScrolls,exports.disableAnimations=disableAnimations,exports.disablePointerEvents=disablePointerEvents;
|
|
11
11
|
},{"./../shared/lib.compat.js":15,"./errors/outside-of-viewport":2,"./utils/clip-rect":6,"./utils/descriptions":7,"./utils/dom":8,"./utils/element-rect":9,"./utils/pseudo-element-rect":10,"./utils/scroll":11,"./utils/trusted-types":12,"./utils/user-agent":13,"./utils/z-index":14,"/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js":22}],6:[function(require,module,exports){
|
|
12
12
|
"use strict";function getViewportRect(){return{top:0,left:0,width:window.innerWidth,height:window.innerHeight}}function hasOverflowClipping(e){return"visible"!==e.overflow||"visible"!==e.overflowX||"visible"!==e.overflowY}function getAbsoluteContainingBlocks(e){for(var t=[],n=e;n&&!(0,scroll_1.isRootLikeElement)(n);){if("absolute"===getComputedStyle(n).position){var i=(0,dom_1.findContainingBlock)(n);t.push({absoluteAncestor:n,containingBlock:i})}n=n.parentElement}return t}function getFixedAncestors(e){for(var t=[],n=e;n&&!(0,scroll_1.isRootLikeElement)(n);)"fixed"===getComputedStyle(n).position&&t.push(n),n=n.parentElement;return t}function escapesOverflowClippingViaAbsoluteContainingBlocks(e,t){return t.some(function(t){var n=t.absoluteAncestor,i=t.containingBlock;return!(n===e||!lib.contains(e,n))&&(i!==e&&lib.contains(i,e))})}function escapesOverflowClippingViaFixedAncestors(e,t){return t.some(function(t){return t!==e&&lib.contains(e,t)})}function getClipRect(e,t){for(var n=getViewportRect(),i=getAbsoluteContainingBlocks(e),o=getFixedAncestors(e),r=n,l=e.parentElement;l&&!(0,scroll_1.isRootLikeElement)(l);){var s=getComputedStyle(l);if("contents"!==s.display){if(hasOverflowClipping(s)){if(escapesOverflowClippingViaAbsoluteContainingBlocks(l,i)||escapesOverflowClippingViaFixedAncestors(l,o)){l=l.parentElement;continue}var c=(0,element_rect_1.getBoundingClientContentRect)(l);null===t||void 0===t||t("intersecting with:",(0,descriptions_1.getReadableElementDescriptor)(l),"contentBox:",c);var u=(0,_isomorphic_1.getIntersection)(r,c);if(!u)return null===t||void 0===t||t("no intersection found for:",(0,descriptions_1.getReadableElementDescriptor)(l)),{top:r.top,left:r.left,width:0,height:0};r=u}l=l.parentElement}else l=l.parentElement}return r}var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,n,i){i===undefined&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){i===undefined&&(i=n),e[i]=t[n]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e["default"]=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding(t,e,n);return __setModuleDefault(t,e),t};exports.__esModule=!0,exports.getClipRect=void 0;var _isomorphic_1=require("/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js"),lib=__importStar(require("./../../shared/lib.compat.js")),element_rect_1=require("./element-rect"),scroll_1=require("./scroll"),dom_1=require("./dom"),descriptions_1=require("./descriptions");exports.getClipRect=getClipRect;
|
|
13
13
|
},{"./../../shared/lib.compat.js":15,"./descriptions":7,"./dom":8,"./element-rect":9,"./scroll":11,"/home/runner/work/testplane/testplane/src/browser/client-scripts/screen-shooter/tsc-out/isomorphic/index.js":22}],7:[function(require,module,exports){
|