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
|
@@ -4,12 +4,255 @@ exports.AsyncEmitter = void 0;
|
|
|
4
4
|
const events_1 = require("events");
|
|
5
5
|
const promise_1 = require("../../utils/promise");
|
|
6
6
|
class AsyncEmitter extends events_1.EventEmitter {
|
|
7
|
+
constructor(observer) {
|
|
8
|
+
super();
|
|
9
|
+
this._wrappedListeners = new WeakMap();
|
|
10
|
+
this._onceWrappers = new WeakMap();
|
|
11
|
+
this._asyncDispatch = new WeakSet();
|
|
12
|
+
this._eventObserver = observer;
|
|
13
|
+
}
|
|
14
|
+
setEventObserver(observer) {
|
|
15
|
+
this._eventObserver = observer;
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
addListener(event, listener) {
|
|
19
|
+
return super.addListener(event, this._wrapListener(event, listener));
|
|
20
|
+
}
|
|
21
|
+
on(event, listener) {
|
|
22
|
+
return super.on(event, this._wrapListener(event, listener));
|
|
23
|
+
}
|
|
24
|
+
once(event, listener) {
|
|
25
|
+
const wrapped = this._wrapListener(event, listener);
|
|
26
|
+
super.once(event, wrapped);
|
|
27
|
+
const raw = super.rawListeners(event).at(-1);
|
|
28
|
+
if (raw && raw !== wrapped) {
|
|
29
|
+
this._onceWrappers.set(raw, wrapped);
|
|
30
|
+
}
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
prependListener(event, listener) {
|
|
34
|
+
return super.prependListener(event, this._wrapListener(event, listener));
|
|
35
|
+
}
|
|
36
|
+
prependOnceListener(event, listener) {
|
|
37
|
+
const wrapped = this._wrapListener(event, listener);
|
|
38
|
+
super.prependOnceListener(event, wrapped);
|
|
39
|
+
const raw = super.rawListeners(event)[0];
|
|
40
|
+
if (raw && raw !== wrapped) {
|
|
41
|
+
this._onceWrappers.set(raw, wrapped);
|
|
42
|
+
}
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
removeListener(event, listener) {
|
|
46
|
+
const rawListeners = super.rawListeners(event);
|
|
47
|
+
for (let index = rawListeners.length - 1; index >= 0; index -= 1) {
|
|
48
|
+
const raw = rawListeners[index];
|
|
49
|
+
if (raw === listener || this._unwrap(raw) === listener) {
|
|
50
|
+
return super.removeListener(event, raw);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
off(event, listener) {
|
|
56
|
+
return this.removeListener(event, listener);
|
|
57
|
+
}
|
|
58
|
+
listeners(event) {
|
|
59
|
+
return super.listeners(event).map(listener => this._unwrap(listener));
|
|
60
|
+
}
|
|
61
|
+
rawListeners(event) {
|
|
62
|
+
return super.rawListeners(event).map(rawListener => {
|
|
63
|
+
const raw = rawListener;
|
|
64
|
+
const onceWrapper = this._onceWrappers.get(raw);
|
|
65
|
+
if (onceWrapper) {
|
|
66
|
+
Object.defineProperty(raw, "listener", {
|
|
67
|
+
configurable: true,
|
|
68
|
+
value: this._unwrap(onceWrapper),
|
|
69
|
+
});
|
|
70
|
+
return raw;
|
|
71
|
+
}
|
|
72
|
+
return this._wrappedListeners.has(raw) ? this._unwrap(raw) : raw;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
emit(event, ...args) {
|
|
76
|
+
const normalizedArgs = event === "newListener" || event === "removeListener"
|
|
77
|
+
? args.map((argument, index) => index === 1 && typeof argument === "function" ? this._unwrap(argument) : argument)
|
|
78
|
+
: args;
|
|
79
|
+
const action = () => super.emit(event, ...normalizedArgs);
|
|
80
|
+
if (!this._eventObserver) {
|
|
81
|
+
return action();
|
|
82
|
+
}
|
|
83
|
+
return this._observeSyncSafely(trackedAction => this._eventObserver.observeSyncEmission(event, trackedAction), action);
|
|
84
|
+
}
|
|
7
85
|
async emitAndWait(event, ...args) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
86
|
+
const dispatch = async () => {
|
|
87
|
+
const results = await Promise.allSettled(super.rawListeners(event).map(rawListener => {
|
|
88
|
+
const listener = rawListener;
|
|
89
|
+
const wrapped = this._resolveWrapped(listener);
|
|
90
|
+
const action = () => {
|
|
91
|
+
if (wrapped) {
|
|
92
|
+
this._asyncDispatch.add(wrapped.wrapper);
|
|
93
|
+
}
|
|
94
|
+
return (0, promise_1.promiseMethod)(listener).apply(this, args);
|
|
95
|
+
};
|
|
96
|
+
return this._eventObserver && wrapped
|
|
97
|
+
? this._observeAsyncSafely(trackedAction => this._eventObserver.observeAsync(wrapped.metadata.registration, trackedAction), action)
|
|
98
|
+
: action();
|
|
99
|
+
}));
|
|
100
|
+
const rejected = results.find(({ status }) => status === "rejected");
|
|
101
|
+
return rejected
|
|
102
|
+
? Promise.reject(rejected.reason)
|
|
103
|
+
: results.map(r => r.value);
|
|
104
|
+
};
|
|
105
|
+
return this._eventObserver
|
|
106
|
+
? this._observeAsyncSafely(trackedAction => this._eventObserver.observeAsyncEmission(event, trackedAction), dispatch)
|
|
107
|
+
: dispatch();
|
|
108
|
+
}
|
|
109
|
+
_wrapListener(event, listener) {
|
|
110
|
+
const observer = this._eventObserver;
|
|
111
|
+
if (!observer) {
|
|
112
|
+
return listener;
|
|
113
|
+
}
|
|
114
|
+
if (this._resolveWrapped(listener)) {
|
|
115
|
+
return listener;
|
|
116
|
+
}
|
|
117
|
+
let registration;
|
|
118
|
+
try {
|
|
119
|
+
registration = observer.register({ event, listener });
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this._reportObserverError("event.register", error);
|
|
123
|
+
return listener;
|
|
124
|
+
}
|
|
125
|
+
const asyncDispatch = this._asyncDispatch;
|
|
126
|
+
const observeSyncSafely = this._observeSyncSafely.bind(this);
|
|
127
|
+
const wrapped = function (...args) {
|
|
128
|
+
if (asyncDispatch.has(wrapped)) {
|
|
129
|
+
asyncDispatch.delete(wrapped);
|
|
130
|
+
return listener.apply(this, args);
|
|
131
|
+
}
|
|
132
|
+
const action = () => listener.apply(this, args);
|
|
133
|
+
return observeSyncSafely(trackedAction => observer.observeSync(registration, trackedAction), action);
|
|
134
|
+
};
|
|
135
|
+
Object.defineProperty(wrapped, "listener", { configurable: true, value: listener });
|
|
136
|
+
this._wrappedListeners.set(wrapped, { original: listener, registration });
|
|
137
|
+
return wrapped;
|
|
138
|
+
}
|
|
139
|
+
_resolveWrapped(listener) {
|
|
140
|
+
let current = this._onceWrappers.get(listener) ?? listener;
|
|
141
|
+
const visited = new Set();
|
|
142
|
+
while (!visited.has(current)) {
|
|
143
|
+
visited.add(current);
|
|
144
|
+
const metadata = this._wrappedListeners.get(current);
|
|
145
|
+
if (metadata) {
|
|
146
|
+
return { wrapper: current, metadata };
|
|
147
|
+
}
|
|
148
|
+
const nested = current.listener;
|
|
149
|
+
if (typeof nested !== "function") {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
current = nested;
|
|
153
|
+
}
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
_unwrap(listener) {
|
|
157
|
+
return this._resolveWrapped(listener)?.metadata.original ?? listener;
|
|
158
|
+
}
|
|
159
|
+
_observeSyncSafely(observe, action) {
|
|
160
|
+
let actionCalled = false;
|
|
161
|
+
let actionCompleted = false;
|
|
162
|
+
let actionFailed = false;
|
|
163
|
+
let actionResult;
|
|
164
|
+
let actionError;
|
|
165
|
+
const trackedAction = () => {
|
|
166
|
+
if (actionCalled) {
|
|
167
|
+
if (actionFailed) {
|
|
168
|
+
throw actionError;
|
|
169
|
+
}
|
|
170
|
+
return actionResult;
|
|
171
|
+
}
|
|
172
|
+
actionCalled = true;
|
|
173
|
+
try {
|
|
174
|
+
actionResult = action();
|
|
175
|
+
actionCompleted = true;
|
|
176
|
+
return actionResult;
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
actionFailed = true;
|
|
180
|
+
actionError = error;
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
try {
|
|
185
|
+
observe(trackedAction);
|
|
186
|
+
if (actionFailed) {
|
|
187
|
+
throw actionError;
|
|
188
|
+
}
|
|
189
|
+
if (!actionCalled) {
|
|
190
|
+
this._reportObserverError("event.observe", new Error("Event observer did not invoke the action"));
|
|
191
|
+
return action();
|
|
192
|
+
}
|
|
193
|
+
return actionResult;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
if (actionFailed) {
|
|
197
|
+
throw actionError;
|
|
198
|
+
}
|
|
199
|
+
this._reportObserverError("event.observe", error);
|
|
200
|
+
if (actionCalled && actionCompleted) {
|
|
201
|
+
return actionResult;
|
|
202
|
+
}
|
|
203
|
+
return action();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async _observeAsyncSafely(observe, action) {
|
|
207
|
+
let actionCalled = false;
|
|
208
|
+
let actionPromise;
|
|
209
|
+
let actionFailed = false;
|
|
210
|
+
let actionError;
|
|
211
|
+
const trackedAction = () => {
|
|
212
|
+
if (actionPromise) {
|
|
213
|
+
return actionPromise;
|
|
214
|
+
}
|
|
215
|
+
actionCalled = true;
|
|
216
|
+
try {
|
|
217
|
+
actionPromise = Promise.resolve(action()).catch(error => {
|
|
218
|
+
actionFailed = true;
|
|
219
|
+
actionError = error;
|
|
220
|
+
throw error;
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
actionFailed = true;
|
|
225
|
+
actionError = error;
|
|
226
|
+
actionPromise = Promise.reject(error);
|
|
227
|
+
}
|
|
228
|
+
return actionPromise;
|
|
229
|
+
};
|
|
230
|
+
try {
|
|
231
|
+
await observe(trackedAction);
|
|
232
|
+
if (actionFailed) {
|
|
233
|
+
throw actionError;
|
|
234
|
+
}
|
|
235
|
+
if (!actionCalled) {
|
|
236
|
+
this._reportObserverError("event.observe", new Error("Event observer did not invoke the action"));
|
|
237
|
+
return action();
|
|
238
|
+
}
|
|
239
|
+
return actionPromise;
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (actionFailed) {
|
|
243
|
+
throw actionError;
|
|
244
|
+
}
|
|
245
|
+
this._reportObserverError("event.observe", error);
|
|
246
|
+
return actionCalled ? actionPromise : action();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
_reportObserverError(stage, error) {
|
|
250
|
+
try {
|
|
251
|
+
this._eventObserver?.error(stage, error);
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
// Profiling diagnostics are fail-open.
|
|
255
|
+
}
|
|
13
256
|
}
|
|
14
257
|
}
|
|
15
258
|
exports.AsyncEmitter = AsyncEmitter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/events/async-emitter/index.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AACtC,iDAAoD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/events/async-emitter/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare const MasterAsyncEvents: {
|
|
|
13
13
|
readonly SESSION_START: "startSession";
|
|
14
14
|
readonly SESSION_END: "endSession";
|
|
15
15
|
readonly EXIT: "exit";
|
|
16
|
+
readonly PROFILER_RESULT: "profilerResult";
|
|
16
17
|
};
|
|
17
18
|
export type MasterAsyncEvents = typeof MasterAsyncEvents;
|
|
18
19
|
export type MasterAsyncEvent = ValueOf<MasterAsyncEvents>;
|
|
@@ -101,6 +102,7 @@ export declare const MasterEvents: {
|
|
|
101
102
|
readonly SESSION_START: "startSession";
|
|
102
103
|
readonly SESSION_END: "endSession";
|
|
103
104
|
readonly EXIT: "exit";
|
|
105
|
+
readonly PROFILER_RESULT: "profilerResult";
|
|
104
106
|
};
|
|
105
107
|
export type MasterEvents = typeof MasterEvents;
|
|
106
108
|
export type MasterEvent = MasterAsyncEvent | MasterSyncEvent;
|
|
@@ -146,5 +148,6 @@ export declare const Events: {
|
|
|
146
148
|
readonly SESSION_START: "startSession";
|
|
147
149
|
readonly SESSION_END: "endSession";
|
|
148
150
|
readonly EXIT: "exit";
|
|
151
|
+
readonly PROFILER_RESULT: "profilerResult";
|
|
149
152
|
};
|
|
150
153
|
export type Events = typeof Events;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,0CAAwB;AAIX,QAAA,gBAAgB,GAAG;IAC5B,qBAAqB,EAAE,qBAAqB;CACtC,CAAC;AAME,QAAA,iBAAiB,GAAG;IAC7B,IAAI,EAAE,MAAM;IAEZ,YAAY,EAAE,aAAa;IAC3B,UAAU,EAAE,WAAW;IAEvB,aAAa,EAAE,cAAc;IAC7B,WAAW,EAAE,YAAY;IAEzB,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,0CAAwB;AAIX,QAAA,gBAAgB,GAAG;IAC5B,qBAAqB,EAAE,qBAAqB;CACtC,CAAC;AAME,QAAA,iBAAiB,GAAG;IAC7B,IAAI,EAAE,MAAM;IAEZ,YAAY,EAAE,aAAa;IAC3B,UAAU,EAAE,WAAW;IAEvB,aAAa,EAAE,cAAc;IAC7B,WAAW,EAAE,YAAY;IAEzB,IAAI,EAAE,MAAM;IAEZ,eAAe,EAAE,gBAAgB;CAC3B,CAAC;AAME,QAAA,gBAAgB,GAAG;IAC5B,kBAAkB,EAAE,kBAAkB;IAEtC,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,UAAU;IAErB,UAAU,EAAE,WAAW;IACvB,uBAAuB,EAAE,sBAAsB;IAC/C,QAAQ,EAAE,SAAS;IAEnB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,aAAa;IAE3B,KAAK,EAAE,OAAO;IAEd,aAAa,EAAE,cAAc;IAE7B,kBAAkB,EAAE,iBAAiB;IAErC,iBAAiB,EAAE,kBAAkB;CAC/B,CAAC;AAME,QAAA,gBAAgB,GAAG;IAC5B,GAAG,EAAE,KAAK;IAEV,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IAEV,gBAAgB,EAAE,gBAAgB;IAClC,eAAe,EAAE,eAAe;IAEhC,gBAAgB,EAAE,gBAAgB;IAElC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,KAAK;CACN,CAAC;AAME,QAAA,gBAAgB,GAAG;IAC5B,GAAG,wBAAgB;IACnB,GAAG,wBAAgB;CACtB,CAAC;AAMW,QAAA,YAAY,GAAG;IACxB,GAAG,yBAAiB;IACpB,GAAG,wBAAgB;CACb,CAAC;AAME,QAAA,YAAY,GAAG;IACxB,IAAI,EAAE,oBAAY,CAAC,IAAI;IAEvB,gBAAgB,EAAE,oBAAY,CAAC,gBAAgB;IAC/C,eAAe,EAAE,oBAAY,CAAC,eAAe;IAE7C,gBAAgB,EAAE,oBAAY,CAAC,gBAAgB;IAE/C,WAAW,EAAE,YAAY;IAEzB,gBAAgB,EAAE,iBAAiB;CAC7B,CAAC;AAaE,QAAA,MAAM,GAAG;IAClB,GAAG,oBAAY;IACf,GAAG,oBAAY;CACT,CAAC"}
|
package/build/src/index.d.ts
CHANGED
|
@@ -11,9 +11,10 @@ export * from "./globals";
|
|
|
11
11
|
export * as unstable from "./unstable";
|
|
12
12
|
export type { SessionOptions } from "./browser/types";
|
|
13
13
|
export type { WdioBrowser, TestResult, Test, Suite, TestError, HermioneCtx, GlobalHelper, TestplaneCtx, TestFunction, TestFunctionCtx, ExecutionThreadCtx, Cookie, TestTag, } from "./types";
|
|
14
|
-
export type { Config } from "./config";
|
|
14
|
+
export type { Config, ProfilerConfig, ProfilerLevel } from "./config";
|
|
15
15
|
export { TimeTravelMode, SelectivityMode } from "./config";
|
|
16
16
|
export type { ConfigInput, AssertViewOpts } from "./config/types";
|
|
17
|
+
export type { ProfilerResultV1 } from "./profiler/schema";
|
|
17
18
|
export type { TestCollection, FormatterTreeSuite, FormatterTreeTest, FormatterTreeMainRunnable, FormatterListTest, } from "./test-collection";
|
|
18
19
|
export type { StatsResult } from "./stats";
|
|
19
20
|
export type { SaveStateData } from "./browser/commands/saveState";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ProfileAggregates, ProfilerError, ProfilerOperationName, RetainedOperation } from "../schema";
|
|
2
|
+
import type { RuntimeSnapshot } from "../runtime/types";
|
|
3
|
+
export interface NormalizedProfile {
|
|
4
|
+
runId: string;
|
|
5
|
+
operation: ProfilerOperationName;
|
|
6
|
+
level: RuntimeSnapshot["level"];
|
|
7
|
+
/** Real elapsed time of the complete profiled Testplane operation. */
|
|
8
|
+
durationMs: number;
|
|
9
|
+
timeline: RetainedOperation[];
|
|
10
|
+
aggregates: ProfileAggregates;
|
|
11
|
+
errors: ProfilerError[];
|
|
12
|
+
truncation: RuntimeSnapshot["truncation"];
|
|
13
|
+
/** Sum of time measured inside span-start and span-end bookkeeping. */
|
|
14
|
+
overheadMs: number;
|
|
15
|
+
clock: RuntimeSnapshot["clock"];
|
|
16
|
+
}
|
|
17
|
+
export declare const aggregateProfile: (snapshot: RuntimeSnapshot, durationMs: number, operationName?: ProfilerOperationName) => NormalizedProfile;
|
|
18
|
+
export declare function unionDuration(intervals: ReadonlyArray<readonly [number, number]>): number;
|
|
19
|
+
export declare function operationUnionWithin(parent: RetainedOperation, operations: RetainedOperation[]): number;
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.operationUnionWithin = exports.unionDuration = exports.aggregateProfile = void 0;
|
|
4
|
+
const aggregateProfile = (snapshot, durationMs, operationName = "run") => {
|
|
5
|
+
const errors = [...snapshot.errors];
|
|
6
|
+
const rootId = `${snapshot.runId}:operation`;
|
|
7
|
+
const timeline = snapshot.operations.map(operation => ({
|
|
8
|
+
...operation,
|
|
9
|
+
timing: { ...operation.timing },
|
|
10
|
+
parentId: operation.parentId ?? rootId,
|
|
11
|
+
}));
|
|
12
|
+
const root = {
|
|
13
|
+
id: rootId,
|
|
14
|
+
kind: "testplane.operation",
|
|
15
|
+
name: "Testplane operation",
|
|
16
|
+
process: { type: "master", pid: process.pid },
|
|
17
|
+
context: { runId: snapshot.runId },
|
|
18
|
+
startOffsetMs: 0,
|
|
19
|
+
timing: { wallMs: durationMs },
|
|
20
|
+
attributes: {},
|
|
21
|
+
quality: { timing: "exact", cpu: "process-window" },
|
|
22
|
+
status: "completed",
|
|
23
|
+
};
|
|
24
|
+
timeline.unshift(root);
|
|
25
|
+
const operationsById = new Map(timeline.map(operation => [operation.id, operation]));
|
|
26
|
+
for (const operation of timeline) {
|
|
27
|
+
if (operation.parentId && !operationsById.has(operation.parentId)) {
|
|
28
|
+
errors.push({
|
|
29
|
+
stage: "aggregation.parent",
|
|
30
|
+
code: "MISSING_PARENT",
|
|
31
|
+
message: `Operation ${operation.id} referenced a missing parent`,
|
|
32
|
+
});
|
|
33
|
+
operation.parentId = rootId;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
rejectCycles(root, timeline, operationsById, errors);
|
|
37
|
+
const childrenByParentId = buildChildren(timeline);
|
|
38
|
+
calculateOperationTimings(root, childrenByParentId);
|
|
39
|
+
addUnattributedOperations(timeline, childrenByParentId, snapshot.runId);
|
|
40
|
+
timeline.sort((left, right) => left.startOffsetMs - right.startOffsetMs || left.id.localeCompare(right.id));
|
|
41
|
+
return {
|
|
42
|
+
runId: snapshot.runId,
|
|
43
|
+
operation: operationName,
|
|
44
|
+
level: snapshot.level,
|
|
45
|
+
durationMs,
|
|
46
|
+
timeline,
|
|
47
|
+
aggregates: categorizeAggregates(snapshot.aggregates, snapshot.metrics),
|
|
48
|
+
errors,
|
|
49
|
+
truncation: snapshot.truncation,
|
|
50
|
+
overheadMs: snapshot.overheadMs,
|
|
51
|
+
clock: snapshot.clock,
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
exports.aggregateProfile = aggregateProfile;
|
|
55
|
+
function buildChildren(timeline) {
|
|
56
|
+
const childrenByParentId = new Map();
|
|
57
|
+
for (const operation of timeline) {
|
|
58
|
+
if (!operation.parentId) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const siblings = childrenByParentId.get(operation.parentId) ?? [];
|
|
62
|
+
siblings.push(operation);
|
|
63
|
+
childrenByParentId.set(operation.parentId, siblings);
|
|
64
|
+
}
|
|
65
|
+
return childrenByParentId;
|
|
66
|
+
}
|
|
67
|
+
function rejectCycles(root, timeline, operationsById, errors) {
|
|
68
|
+
for (const operation of timeline) {
|
|
69
|
+
if (operation.id === root.id) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const visited = new Set([operation.id]);
|
|
73
|
+
let parentId = operation.parentId;
|
|
74
|
+
while (parentId) {
|
|
75
|
+
if (visited.has(parentId)) {
|
|
76
|
+
operation.parentId = root.id;
|
|
77
|
+
errors.push({
|
|
78
|
+
stage: "aggregation.dag",
|
|
79
|
+
code: "CYCLE",
|
|
80
|
+
message: `Dropped cyclic parent edge for operation ${operation.id}`,
|
|
81
|
+
});
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
visited.add(parentId);
|
|
85
|
+
parentId = operationsById.get(parentId)?.parentId;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function calculateOperationTimings(operation, childrenByParentId) {
|
|
90
|
+
const directChildren = childrenByParentId.get(operation.id) ?? [];
|
|
91
|
+
const retainedChildUnionMs = operationUnionWithin(operation, directChildren);
|
|
92
|
+
const observedChildUnionMs = operation.timing.observedChildUnionMs;
|
|
93
|
+
const childUnionMs = observedChildUnionMs !== undefined
|
|
94
|
+
? Math.min(operation.timing.wallMs, Math.max(retainedChildUnionMs, observedChildUnionMs))
|
|
95
|
+
: retainedChildUnionMs;
|
|
96
|
+
const cumulativeChildWorkMs = directChildren.reduce((total, child) => total + child.timing.wallMs, 0);
|
|
97
|
+
operation.timing.selfWallMs = Math.max(0, operation.timing.wallMs - childUnionMs);
|
|
98
|
+
operation.timing.cumulativeWorkMs = cumulativeChildWorkMs;
|
|
99
|
+
operation.timing.overlapMs = Math.max(0, cumulativeChildWorkMs - retainedChildUnionMs);
|
|
100
|
+
let longestChildPath = 0;
|
|
101
|
+
for (const child of directChildren) {
|
|
102
|
+
longestChildPath = Math.max(longestChildPath, calculateOperationTimings(child, childrenByParentId));
|
|
103
|
+
}
|
|
104
|
+
operation.timing.criticalPathMs = Math.min(operation.timing.wallMs, (operation.timing.selfWallMs ?? 0) + longestChildPath);
|
|
105
|
+
return operation.timing.criticalPathMs;
|
|
106
|
+
}
|
|
107
|
+
function unionDuration(intervals) {
|
|
108
|
+
if (!intervals.length) {
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
const sortedIntervals = [...intervals].sort(([left], [right]) => left - right);
|
|
112
|
+
let [currentStart, currentEnd] = sortedIntervals[0];
|
|
113
|
+
let totalDuration = 0;
|
|
114
|
+
for (let index = 1; index < sortedIntervals.length; index += 1) {
|
|
115
|
+
const [start, end] = sortedIntervals[index];
|
|
116
|
+
if (start <= currentEnd) {
|
|
117
|
+
currentEnd = Math.max(currentEnd, end);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
totalDuration += currentEnd - currentStart;
|
|
121
|
+
currentStart = start;
|
|
122
|
+
currentEnd = end;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return totalDuration + currentEnd - currentStart;
|
|
126
|
+
}
|
|
127
|
+
exports.unionDuration = unionDuration;
|
|
128
|
+
function addUnattributedOperations(timeline, childrenByParentId, runId) {
|
|
129
|
+
let sequence = 0;
|
|
130
|
+
for (const parent of [...timeline]) {
|
|
131
|
+
const unattributedMs = parent.timing.selfWallMs ?? 0;
|
|
132
|
+
const directChildren = childrenByParentId.get(parent.id);
|
|
133
|
+
if (unattributedMs <= 0 || !directChildren) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const retainedChildUnionMs = operationUnionWithin(parent, directChildren);
|
|
137
|
+
const observedChildUnionMs = parent.timing.observedChildUnionMs;
|
|
138
|
+
const childrenTruncated = observedChildUnionMs !== undefined && observedChildUnionMs > retainedChildUnionMs + 1;
|
|
139
|
+
sequence += 1;
|
|
140
|
+
timeline.push({
|
|
141
|
+
id: `${runId}:unattributed:${sequence}`,
|
|
142
|
+
parentId: parent.id,
|
|
143
|
+
kind: "testplane.phase.unattributed",
|
|
144
|
+
name: "Unattributed",
|
|
145
|
+
process: parent.process,
|
|
146
|
+
context: parent.context,
|
|
147
|
+
startOffsetMs: parent.startOffsetMs,
|
|
148
|
+
timing: {
|
|
149
|
+
wallMs: unattributedMs,
|
|
150
|
+
selfWallMs: unattributedMs,
|
|
151
|
+
cumulativeWorkMs: 0,
|
|
152
|
+
overlapMs: 0,
|
|
153
|
+
criticalPathMs: unattributedMs,
|
|
154
|
+
},
|
|
155
|
+
attributes: childrenTruncated ? { retentionAffected: true } : {},
|
|
156
|
+
quality: {
|
|
157
|
+
timing: "estimated",
|
|
158
|
+
cpu: "unavailable",
|
|
159
|
+
notes: childrenTruncated
|
|
160
|
+
? [
|
|
161
|
+
"Parent interval minus retained child intervals; some child detail was dropped by retention, so this residual is a detail-budget artifact, not missing instrumentation",
|
|
162
|
+
]
|
|
163
|
+
: ["Computed as parent interval minus the union of retained direct child intervals"],
|
|
164
|
+
},
|
|
165
|
+
status: "completed",
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function operationUnionWithin(parent, operations) {
|
|
170
|
+
const parentStart = parent.startOffsetMs;
|
|
171
|
+
const parentEnd = parentStart + parent.timing.wallMs;
|
|
172
|
+
const intervals = operations
|
|
173
|
+
.map(child => [
|
|
174
|
+
Math.max(parentStart, child.startOffsetMs),
|
|
175
|
+
Math.min(parentEnd, child.startOffsetMs + child.timing.wallMs),
|
|
176
|
+
])
|
|
177
|
+
.filter(([start, end]) => end > start);
|
|
178
|
+
return unionDuration(intervals);
|
|
179
|
+
}
|
|
180
|
+
exports.operationUnionWithin = operationUnionWithin;
|
|
181
|
+
function categorizeAggregates(aggregates, metrics) {
|
|
182
|
+
const profilerAggregates = aggregates.map(toProfilerAggregate);
|
|
183
|
+
const filterByKindPrefix = (prefixes) => profilerAggregates.filter(aggregate => prefixes.some(prefix => aggregate.kind.startsWith(prefix)));
|
|
184
|
+
const commandRoot = profilerAggregates.find(aggregate => aggregate.kind === "browser.command.root" && aggregate.name === "<root>");
|
|
185
|
+
const commandCumulative = profilerAggregates.find(aggregate => aggregate.kind === "browser.command.cumulative" && aggregate.name === "<all>");
|
|
186
|
+
const commandSummary = commandRoot
|
|
187
|
+
? {
|
|
188
|
+
...commandRoot,
|
|
189
|
+
kind: "browser.command",
|
|
190
|
+
name: "<root>",
|
|
191
|
+
cumulativeWorkMs: commandCumulative?.totalWallMs ?? commandRoot.totalWallMs,
|
|
192
|
+
overlapMs: Math.max(0, (commandCumulative?.totalWallMs ?? commandRoot.totalWallMs) - commandRoot.totalWallMs),
|
|
193
|
+
}
|
|
194
|
+
: undefined;
|
|
195
|
+
return {
|
|
196
|
+
// Browser kinds live in `commands` / `browsers` only — keep byKind free of that duplication.
|
|
197
|
+
byKind: profilerAggregates.filter(aggregate => !aggregate.kind.startsWith("browser.")),
|
|
198
|
+
phases: filterByKindPrefix(["testplane.phase."]),
|
|
199
|
+
listeners: filterByKindPrefix(["event.listener", "user.callback"]),
|
|
200
|
+
testFiles: filterByKindPrefix(["test.file", "files.load"]),
|
|
201
|
+
tests: filterByKindPrefix(["test.attempt", "test.body"]),
|
|
202
|
+
hooks: filterByKindPrefix(["test.hook", "test.beforeEach", "test.afterEach"]),
|
|
203
|
+
commands: [
|
|
204
|
+
...(commandSummary ? [commandSummary] : []),
|
|
205
|
+
...profilerAggregates.filter(aggregate => aggregate.kind === "browser.command"),
|
|
206
|
+
],
|
|
207
|
+
workers: filterByKindPrefix(["worker."]),
|
|
208
|
+
// Session/pool/runnable stay here; command family is only under `commands`.
|
|
209
|
+
browsers: profilerAggregates.filter(aggregate => (aggregate.kind.startsWith("browser.") || aggregate.kind.startsWith("session.")) &&
|
|
210
|
+
!aggregate.kind.startsWith("browser.command")),
|
|
211
|
+
metrics: metrics.map(({ name, value, dimensions }) => ({ name, value, dimensions })),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function toProfilerAggregate({ kind, name, attributes, statistics }) {
|
|
215
|
+
return {
|
|
216
|
+
kind,
|
|
217
|
+
name,
|
|
218
|
+
count: statistics.count,
|
|
219
|
+
totalWallMs: statistics.sum,
|
|
220
|
+
minWallMs: statistics.min,
|
|
221
|
+
maxWallMs: statistics.max,
|
|
222
|
+
meanWallMs: statistics.mean,
|
|
223
|
+
p50WallMs: statistics.p50,
|
|
224
|
+
p95WallMs: statistics.p95,
|
|
225
|
+
cumulativeWorkMs: statistics.sum,
|
|
226
|
+
attributes,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=aggregator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../../../src/profiler/analysis/aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Finding } from "../schema";
|
|
2
|
+
import { type NormalizedProfile } from "./aggregator";
|
|
3
|
+
export type FindingDraft = Omit<Finding, "id">;
|
|
4
|
+
export interface ProfilerAnalyzer {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
/** Lowest profiler detail level that provides enough data for this analyzer. */
|
|
7
|
+
readonly minLevel: 1 | 2 | 3;
|
|
8
|
+
analyze(profile: NormalizedProfile): FindingDraft[];
|
|
9
|
+
}
|
|
10
|
+
export declare const runAnalyzers: (profile: NormalizedProfile, analyzers?: ProfilerAnalyzer[]) => Finding[];
|