@elastic/synthetics 1.0.0-beta.15 → 1.0.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/NOTICE.txt +29 -0
- package/README.md +1 -1
- package/dist/cli.js +34 -21
- package/dist/cli.js.map +1 -1
- package/dist/common_types.d.ts +10 -40
- package/dist/common_types.d.ts.map +1 -1
- package/dist/core/gatherer.d.ts.map +1 -1
- package/dist/core/gatherer.js +9 -1
- package/dist/core/gatherer.js.map +1 -1
- package/dist/core/logger.d.ts +0 -2
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +2 -15
- package/dist/core/logger.js.map +1 -1
- package/dist/core/runner.d.ts +19 -20
- package/dist/core/runner.d.ts.map +1 -1
- package/dist/core/runner.js +14 -5
- package/dist/core/runner.js.map +1 -1
- package/dist/formatter/javascript.d.ts +2 -0
- package/dist/formatter/javascript.d.ts.map +1 -1
- package/dist/formatter/javascript.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +1 -1
- package/dist/parse_args.d.ts.map +1 -1
- package/dist/parse_args.js +1 -1
- package/dist/parse_args.js.map +1 -1
- package/dist/plugins/network.d.ts +30 -11
- package/dist/plugins/network.d.ts.map +1 -1
- package/dist/plugins/network.js +234 -175
- package/dist/plugins/network.js.map +1 -1
- package/dist/reporters/base.d.ts.map +1 -1
- package/dist/reporters/base.js +6 -1
- package/dist/reporters/base.js.map +1 -1
- package/dist/reporters/json.d.ts +55 -5
- package/dist/reporters/json.d.ts.map +1 -1
- package/dist/reporters/json.js +45 -14
- package/dist/reporters/json.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/cli.ts +37 -25
- package/src/common_types.ts +10 -46
- package/src/core/gatherer.ts +8 -1
- package/src/core/logger.ts +1 -12
- package/src/core/runner.ts +42 -28
- package/src/formatter/javascript.ts +2 -0
- package/src/index.ts +1 -6
- package/src/parse_args.ts +1 -5
- package/src/plugins/network.ts +280 -213
- package/src/reporters/base.ts +6 -1
- package/src/reporters/json.ts +52 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../src/formatter/javascript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,2BAA2B,EAE5B,MAAM,gEAAgE,CAAC;AAExE,oBAAY,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,aAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,aAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,2BAA2B;IAItD,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAU;gBAER,OAAO,EAAE,OAAO;IAMpC,cAAc,CAAC,eAAe,EAAE,eAAe;IAkG/C,SAAS,CAAC,eAAe,EAAE,eAAe;IAY1C,iBAAiB,CAAC,IAAI,KAAA;IAKtB,eAAe;IAUf,cAAc;IASd,cAAc;IAId,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC;CAc7C;AAGD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAM,UAS7C"}
|
|
1
|
+
{"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../src/formatter/javascript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,2BAA2B,EAE5B,MAAM,gEAAgE,CAAC;AAExE,oBAAY,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,aAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,aAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,2BAA2B;IAItD,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAU;gBAER,OAAO,EAAE,OAAO;IAMpC,cAAc,CAAC,eAAe,EAAE,eAAe;IAkG/C,SAAS,CAAC,eAAe,EAAE,eAAe;IAY1C,iBAAiB,CAAC,IAAI,KAAA;IAKtB,eAAe;IAUf,cAAc;IASd,cAAc;IAId,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC;CAc7C;AAGD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAM,UAS7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/formatter/javascript.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAEH,+FAGwE;
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/formatter/javascript.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -47,4 +47,5 @@ export type { Page, ChromiumBrowser, ChromiumBrowserContext, CDPSession, } from
|
|
|
47
47
|
export type { default as Runner } from './core/runner';
|
|
48
48
|
export type { Reporter, ReporterOptions } from './reporters';
|
|
49
49
|
export type { SyntheticsConfig } from './common_types';
|
|
50
|
+
export type { ActionInContext } from './formatter/javascript';
|
|
50
51
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU;;;;;;;GAc5C;AAED;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC;;;GAGG;AACH,YAAY,EACV,IAAI,EACJ,eAAe,EACf,sBAAsB,EACtB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,YAAY,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7D,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
30
|
exports.expect = exports.after = exports.before = exports.step = exports.journey = exports.afterAll = exports.beforeAll = exports.run = void 0;
|
|
31
31
|
const core_1 = require("./core");
|
|
32
|
-
const logger_1 = require("./core/logger");
|
|
33
32
|
const source_map_support_1 = __importDefault(require("source-map-support"));
|
|
34
33
|
async function run(options) {
|
|
35
34
|
/**
|
|
@@ -38,11 +37,6 @@ async function run(options) {
|
|
|
38
37
|
source_map_support_1.default.install({
|
|
39
38
|
environment: 'node',
|
|
40
39
|
});
|
|
41
|
-
/**
|
|
42
|
-
* set up logger with appropriate file descriptor
|
|
43
|
-
* to capture all the DEBUG logs when run through heartbeat
|
|
44
|
-
*/
|
|
45
|
-
logger_1.setLogger(options.outfd);
|
|
46
40
|
try {
|
|
47
41
|
return await core_1.runner.run(options);
|
|
48
42
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;AAEH,iCAAgC;AAEhC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;AAEH,iCAAgC;AAEhC,4EAAkD;AAE3C,KAAK,UAAU,GAAG,CAAC,OAAmB;IAC3C;;OAEG;IACH,4BAAgB,CAAC,OAAO,CAAC;QACvB,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC;IAEH,IAAI;QACF,OAAO,MAAM,aAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAClC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC;AAdD,kBAcC;AAED;;GAEG;AACH,+BAA2E;AAAlE,iGAAA,SAAS,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAAE,+FAAA,OAAO,OAAA;AAAE,4FAAA,IAAI,OAAA;AAAE,8FAAA,MAAM,OAAA;AAAE,6FAAA,KAAK,OAAA;AAC1D,wCAAuC;AAA9B,gGAAA,MAAM,OAAA"}
|
package/dist/parse_args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse_args.d.ts","sourceRoot":"","sources":["../src/parse_args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse_args.d.ts","sourceRoot":"","sources":["../src/parse_args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAuFzC,QAAA,MAAM,OAAO,6BAA8B,CAAC;AAC5C,QAAA,MAAM,OAAO,SAA4B,CAAC;AA0C1C,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,eAAe,OAAO,CAAC"}
|
package/dist/parse_args.js
CHANGED
|
@@ -36,7 +36,6 @@ commander_1.program
|
|
|
36
36
|
.usage('[options] [dir] [files] file')
|
|
37
37
|
.option('-c, --config <path>', 'configuration path (default: synthetics.config.js)')
|
|
38
38
|
.option('-p, --params <jsonstring>', 'JSON object that gets injected to all journeys', JSON.parse)
|
|
39
|
-
.option('-s, --suite-params <jsonstring>', 'DEPRECATED: Use --params instead', JSON.parse)
|
|
40
39
|
.addOption(new commander_1.Option('--reporter <value>', `output repoter format`).choices(Object.keys(reporters_1.reporters)))
|
|
41
40
|
.option('-d, --debug', 'print debug logs info')
|
|
42
41
|
.option('--pattern <pattern>', 'RegExp file patterns to search inside directory')
|
|
@@ -59,6 +58,7 @@ commander_1.program
|
|
|
59
58
|
.option('--quiet-exit-code', 'always return 0 as an exit code status, regardless of test pass / fail. Only return > 0 exit codes on internal errors where the suite could not be run')
|
|
60
59
|
.addOption(new commander_1.Option('--throttling <d/u/l>', 'List of options to throttle network conditions for download throughput (d) in megabits/second, upload throughput (u) in megabits/second and latency (l) in milliseconds.').default(helpers_1.DEFAULT_NETWORK_CONDITIONS_ARG))
|
|
61
60
|
.option('--no-throttling', 'Turns off default network throttling.')
|
|
61
|
+
.option('--playwright-options <jsonstring>', 'JSON object to pass in custom Playwright options for the agent. Options passed will be merged with Playwright options defined in your synthetics.config.js file. Options defined via --playwright-options take precedence.', JSON.parse)
|
|
62
62
|
.version(version)
|
|
63
63
|
.description('Run synthetic tests');
|
|
64
64
|
const command = commander_1.program.parse(process.argv);
|
package/dist/parse_args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse_args.js","sourceRoot":"","sources":["../src/parse_args.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;AAEH,yCAA4C;AAE5C,2CAAwC;AACxC,uCAA2D;AAE3D,iEAAiE;AACjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAErD,mBAAO;KACJ,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,KAAK,CAAC,8BAA8B,CAAC;KACrC,MAAM,CACL,qBAAqB,EACrB,oDAAoD,CACrD;KACA,MAAM,CACL,2BAA2B,EAC3B,gDAAgD,EAChD,IAAI,CAAC,KAAK,CACX;KACA,
|
|
1
|
+
{"version":3,"file":"parse_args.js","sourceRoot":"","sources":["../src/parse_args.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,26 +22,45 @@
|
|
|
22
22
|
* THE SOFTWARE.
|
|
23
23
|
*
|
|
24
24
|
*/
|
|
25
|
+
import { Protocol } from 'playwright-chromium/types/protocol';
|
|
25
26
|
import { NetworkInfo, Driver } from '../common_types';
|
|
26
27
|
import { Step } from '../dsl';
|
|
27
|
-
/**
|
|
28
|
-
* Used as a key in each Network Request to identify the
|
|
29
|
-
* associated request across distinct lifecycle events
|
|
30
|
-
*/
|
|
31
|
-
export declare const NETWORK_ENTRY_SUMBOL: unique symbol;
|
|
32
28
|
export declare class NetworkManager {
|
|
33
29
|
private driver;
|
|
34
30
|
private _browser;
|
|
35
|
-
private
|
|
31
|
+
private _InflightRequestMap;
|
|
36
32
|
results: Array<NetworkInfo>;
|
|
37
33
|
_currentStep: Partial<Step>;
|
|
38
34
|
constructor(driver: Driver);
|
|
39
|
-
private _addBarrier;
|
|
40
35
|
start(): Promise<void>;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
_findNetworkRecord(requestId: string): NetworkInfo;
|
|
37
|
+
_onRequestWillBeSent(event: Protocol.Network.requestWillBeSentPayload): void;
|
|
38
|
+
_onRequestWillBeSentExtraInfo(event: Protocol.Network.requestWillBeSentExtraInfoPayload): void;
|
|
39
|
+
_onDataReceived(event: Protocol.Network.dataReceivedPayload): void;
|
|
40
|
+
_onResponseReceived(event: Protocol.Network.responseReceivedPayload): void;
|
|
41
|
+
_onLoadingFinished(event: Protocol.Network.loadingFinishedPayload): void;
|
|
42
|
+
_onLoadingFailed(event: Protocol.Network.loadingFailedPayload): void;
|
|
43
|
+
_requestCompleted(requestId: string, endTime: number, encodedDataLength?: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* Account for missing response received event and also adjust the
|
|
46
|
+
* response received event based on when first byte event was recorded
|
|
47
|
+
*/
|
|
45
48
|
stop(): NetworkInfo[];
|
|
46
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* The timing calculations are based on the chrome devtools frontend
|
|
52
|
+
* https://github.com/ChromeDevTools/devtools-frontend/blob/7f5478d8ceb7586f23f4073ab5c2085dac1ec26a/front_end/network/RequestTimingView.js#L98-L193
|
|
53
|
+
*/
|
|
54
|
+
export declare function calculateTimings(record: NetworkInfo): {
|
|
55
|
+
blocked: number;
|
|
56
|
+
queueing: number;
|
|
57
|
+
dns: number;
|
|
58
|
+
ssl: number;
|
|
59
|
+
proxy: number;
|
|
60
|
+
connect: number;
|
|
61
|
+
send: number;
|
|
62
|
+
wait: number;
|
|
63
|
+
receive: number;
|
|
64
|
+
total: number;
|
|
65
|
+
};
|
|
47
66
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/plugins/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/plugins/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAe,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,qBAAa,cAAc;IAMb,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAM;IACjC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAQ;gBAEf,MAAM,EAAE,MAAM;IAE5B,KAAK;IAuBX,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAIpC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,wBAAwB;IAqErE,6BAA6B,CAC3B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,iCAAiC;IAgB3D,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB;IAU3D,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,uBAAuB;IAcnE,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,sBAAsB;IAKjE,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,oBAAoB;IAK7D,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM;IAmB5B;;;OAGG;IAEH,IAAI;CAGL;AAoBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW;;;;;;;;;;;EAsHnD"}
|
package/dist/plugins/network.js
CHANGED
|
@@ -24,218 +24,277 @@
|
|
|
24
24
|
*
|
|
25
25
|
*/
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.
|
|
27
|
+
exports.calculateTimings = exports.NetworkManager = void 0;
|
|
28
28
|
const helpers_1 = require("../helpers");
|
|
29
|
-
/**
|
|
30
|
-
* Kibana UI expects the requestStartTime and loadEndTime to be baseline
|
|
31
|
-
* in seconds as they have the logic to convert it to milliseconds before
|
|
32
|
-
* using for offset calculation
|
|
33
|
-
*/
|
|
34
|
-
function epochTimeInSeconds() {
|
|
35
|
-
return helpers_1.getTimestamp() / 1e6;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Used as a key in each Network Request to identify the
|
|
39
|
-
* associated request across distinct lifecycle events
|
|
40
|
-
*/
|
|
41
|
-
exports.NETWORK_ENTRY_SUMBOL = Symbol.for('NetworkEntry');
|
|
42
29
|
class NetworkManager {
|
|
43
30
|
constructor(driver) {
|
|
44
31
|
this.driver = driver;
|
|
45
|
-
this.
|
|
32
|
+
this._InflightRequestMap = new Map();
|
|
46
33
|
this.results = [];
|
|
47
34
|
this._currentStep = null;
|
|
48
35
|
}
|
|
49
|
-
_addBarrier(page, promise) {
|
|
50
|
-
const race = Promise.race([
|
|
51
|
-
new Promise(resolve => page.on('close', () => {
|
|
52
|
-
this._barrierPromises.delete(race);
|
|
53
|
-
resolve();
|
|
54
|
-
})),
|
|
55
|
-
promise,
|
|
56
|
-
]);
|
|
57
|
-
this._barrierPromises.add(race);
|
|
58
|
-
}
|
|
59
36
|
async start() {
|
|
60
|
-
const { client
|
|
37
|
+
const { client } = this.driver;
|
|
61
38
|
const { product } = await client.send('Browser.getVersion');
|
|
62
39
|
const [name, version] = product.split('/');
|
|
63
40
|
this._browser = { name, version };
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
41
|
+
await client.send('Network.enable');
|
|
42
|
+
/**
|
|
43
|
+
* Listen for all network events
|
|
44
|
+
*/
|
|
45
|
+
client.on('Network.requestWillBeSent', this._onRequestWillBeSent.bind(this));
|
|
46
|
+
client.on('Network.requestWillBeSentExtraInfo', this._onRequestWillBeSentExtraInfo.bind(this));
|
|
47
|
+
client.on('Network.dataReceived', this._onDataReceived.bind(this));
|
|
48
|
+
client.on('Network.responseReceived', this._onResponseReceived.bind(this));
|
|
49
|
+
client.on('Network.loadingFinished', this._onLoadingFinished.bind(this));
|
|
50
|
+
client.on('Network.loadingFailed', this._onLoadingFailed.bind(this));
|
|
68
51
|
}
|
|
69
|
-
|
|
70
|
-
return
|
|
52
|
+
_findNetworkRecord(requestId) {
|
|
53
|
+
return this._InflightRequestMap.get(requestId);
|
|
71
54
|
}
|
|
72
|
-
|
|
73
|
-
const
|
|
55
|
+
_onRequestWillBeSent(event) {
|
|
56
|
+
const { requestId, request, timestamp, type, loaderId } = event;
|
|
57
|
+
const { url, method } = request;
|
|
74
58
|
/**
|
|
75
59
|
* Data URI should not show up as network requests
|
|
76
60
|
*/
|
|
77
61
|
if (url.startsWith('data:')) {
|
|
78
62
|
return;
|
|
79
63
|
}
|
|
80
|
-
const
|
|
81
|
-
const
|
|
64
|
+
const isNavigationRequest = requestId == loaderId && type === 'Document';
|
|
65
|
+
const record = this._findNetworkRecord(requestId);
|
|
66
|
+
/**
|
|
67
|
+
* On redirects, another `requestWillBeSent` event will be fired for the
|
|
68
|
+
* same requestId. We calculate the timings for the redirect request using
|
|
69
|
+
* the `redirectedResponse` from the redirected request.
|
|
70
|
+
*/
|
|
71
|
+
if (record) {
|
|
72
|
+
if (event.redirectResponse) {
|
|
73
|
+
const response = event.redirectResponse;
|
|
74
|
+
const data = Object.assign(event, {
|
|
75
|
+
type: event.type,
|
|
76
|
+
response,
|
|
77
|
+
encodedDataLength: response.encodedDataLength,
|
|
78
|
+
});
|
|
79
|
+
this._onResponseReceived(data);
|
|
80
|
+
this._onLoadingFinished(data);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
/**
|
|
84
|
+
* Edge case, we handle it to proceed with next navigation
|
|
85
|
+
*/
|
|
86
|
+
this._onLoadingFailed(Object.assign(event, {
|
|
87
|
+
type: event.type,
|
|
88
|
+
errorText: 'redirectResponse data is not available',
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
const redirectedRecord = this._findNetworkRecord(requestId);
|
|
92
|
+
/**
|
|
93
|
+
* Rewrite the map with new redirect id to not reset
|
|
94
|
+
* the redirect request with original request
|
|
95
|
+
*/
|
|
96
|
+
this._InflightRequestMap.delete(requestId);
|
|
97
|
+
this._InflightRequestMap.set(`redirect:${timestamp}:${requestId}`, redirectedRecord);
|
|
98
|
+
}
|
|
99
|
+
this._InflightRequestMap.set(requestId, {
|
|
82
100
|
browser: this._browser,
|
|
83
101
|
step: this._currentStep,
|
|
84
|
-
timestamp,
|
|
102
|
+
timestamp: helpers_1.getTimestamp(),
|
|
85
103
|
url,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
headers: {},
|
|
93
|
-
},
|
|
94
|
-
response: {
|
|
95
|
-
statusCode: -1,
|
|
96
|
-
headers: {},
|
|
97
|
-
redirectURL: '',
|
|
98
|
-
},
|
|
99
|
-
isNavigationRequest: request.isNavigationRequest(),
|
|
100
|
-
status: -1,
|
|
104
|
+
request,
|
|
105
|
+
type,
|
|
106
|
+
method,
|
|
107
|
+
requestSentTime: timestamp,
|
|
108
|
+
isNavigationRequest,
|
|
109
|
+
status: 0,
|
|
101
110
|
loadEndTime: -1,
|
|
102
111
|
responseReceivedTime: -1,
|
|
112
|
+
response: null,
|
|
103
113
|
resourceSize: 0,
|
|
104
114
|
transferSize: 0,
|
|
105
115
|
timings: null,
|
|
106
|
-
};
|
|
107
|
-
if (request.redirectedFrom()) {
|
|
108
|
-
const fromEntry = this._findNetworkEntry(request.redirectedFrom());
|
|
109
|
-
if (fromEntry)
|
|
110
|
-
fromEntry.response.redirectURL = request.url();
|
|
111
|
-
}
|
|
112
|
-
request[exports.NETWORK_ENTRY_SUMBOL] = networkEntry;
|
|
113
|
-
this.results.push(networkEntry);
|
|
116
|
+
});
|
|
114
117
|
}
|
|
115
|
-
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
if (!
|
|
118
|
+
_onRequestWillBeSentExtraInfo(event) {
|
|
119
|
+
const { requestId, headers } = event;
|
|
120
|
+
const record = this._findNetworkRecord(requestId);
|
|
121
|
+
if (!record) {
|
|
119
122
|
return;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
headers
|
|
127
|
-
redirectURL: networkEntry.response.redirectURL,
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Enhance request headers with additional information
|
|
126
|
+
*/
|
|
127
|
+
record.request.headers = {
|
|
128
|
+
...record.request.headers,
|
|
129
|
+
...headers,
|
|
128
130
|
};
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
this._addBarrier(page, response.serverAddr().then(server => {
|
|
135
|
-
networkEntry.response.remoteIPAddress = server === null || server === void 0 ? void 0 : server.ipAddress;
|
|
136
|
-
networkEntry.response.remotePort = server === null || server === void 0 ? void 0 : server.port;
|
|
137
|
-
}));
|
|
138
|
-
this._addBarrier(page, response.securityDetails().then(details => {
|
|
139
|
-
networkEntry.response.securityDetails = details;
|
|
140
|
-
}));
|
|
141
|
-
this._addBarrier(page, response.allHeaders().then(resHeaders => {
|
|
142
|
-
networkEntry.response.headers = resHeaders;
|
|
143
|
-
const mimeType = resHeaders['content-type']
|
|
144
|
-
? resHeaders['content-type'].split(';')[0]
|
|
145
|
-
: 'unknown';
|
|
146
|
-
networkEntry.response.mimeType = mimeType;
|
|
147
|
-
}));
|
|
148
|
-
}
|
|
149
|
-
async _onRequestCompleted(request) {
|
|
150
|
-
const networkEntry = this._findNetworkEntry(request);
|
|
151
|
-
if (!networkEntry)
|
|
131
|
+
}
|
|
132
|
+
_onDataReceived(event) {
|
|
133
|
+
const { requestId, dataLength, encodedDataLength } = event;
|
|
134
|
+
const record = this._findNetworkRecord(requestId);
|
|
135
|
+
if (!record) {
|
|
152
136
|
return;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
wait: -1,
|
|
163
|
-
receive: -1,
|
|
164
|
-
total: -1,
|
|
165
|
-
};
|
|
166
|
-
const firstPositive = (numbers) => {
|
|
167
|
-
for (let i = 0; i < numbers.length; ++i) {
|
|
168
|
-
if (numbers[i] > 0) {
|
|
169
|
-
return numbers[i];
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
return null;
|
|
173
|
-
};
|
|
174
|
-
const roundMilliSecs = (value) => {
|
|
175
|
-
return Math.floor(value * 1000) / 1000;
|
|
176
|
-
};
|
|
177
|
-
if (timing.startTime === 0) {
|
|
178
|
-
// Convert to milliseconds before round off
|
|
179
|
-
const total = roundMilliSecs((loadEndTime - requestSentTime) * 1000);
|
|
180
|
-
networkEntry.timings.total = total;
|
|
137
|
+
}
|
|
138
|
+
record.resourceSize += dataLength;
|
|
139
|
+
if (encodedDataLength >= 0)
|
|
140
|
+
record.transferSize += encodedDataLength;
|
|
141
|
+
}
|
|
142
|
+
_onResponseReceived(event) {
|
|
143
|
+
const { requestId, response, timestamp } = event;
|
|
144
|
+
const record = this._findNetworkRecord(requestId);
|
|
145
|
+
if (!record) {
|
|
181
146
|
return;
|
|
182
147
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
: -1;
|
|
194
|
-
const ssl = timing.secureConnectionStart !== -1
|
|
195
|
-
? roundMilliSecs(timing.connectEnd - timing.secureConnectionStart)
|
|
196
|
-
: -1;
|
|
197
|
-
const wait = timing.responseStart !== -1
|
|
198
|
-
? roundMilliSecs(timing.responseStart - timing.requestStart)
|
|
199
|
-
: -1;
|
|
200
|
-
const receive = timing.responseEnd !== -1
|
|
201
|
-
? roundMilliSecs(timing.responseEnd - timing.responseStart)
|
|
202
|
-
: -1;
|
|
203
|
-
const total = [blocked, dns, connect, wait, receive].reduce((pre, cur) => (cur > 0 ? cur + pre : pre), 0);
|
|
204
|
-
networkEntry.timings = {
|
|
205
|
-
blocked,
|
|
206
|
-
dns,
|
|
207
|
-
connect,
|
|
208
|
-
ssl,
|
|
209
|
-
wait,
|
|
210
|
-
send: 0,
|
|
211
|
-
receive,
|
|
212
|
-
total: roundMilliSecs(total),
|
|
213
|
-
};
|
|
214
|
-
const page = request.frame().page();
|
|
215
|
-
// For aborted/failed requests sizes does not exist
|
|
216
|
-
this._addBarrier(page, request.sizes().then(sizes => {
|
|
217
|
-
networkEntry.request.bytes =
|
|
218
|
-
sizes.requestHeadersSize + sizes.requestBodySize;
|
|
219
|
-
networkEntry.request.body = {
|
|
220
|
-
bytes: sizes.requestBodySize,
|
|
221
|
-
};
|
|
222
|
-
networkEntry.response.bytes =
|
|
223
|
-
sizes.responseHeadersSize + sizes.responseBodySize;
|
|
224
|
-
networkEntry.response.body = {
|
|
225
|
-
bytes: sizes.responseBodySize,
|
|
226
|
-
};
|
|
227
|
-
networkEntry.transferSize = sizes.responseBodySize;
|
|
228
|
-
}));
|
|
148
|
+
Object.assign(record, {
|
|
149
|
+
status: response.status,
|
|
150
|
+
response,
|
|
151
|
+
responseReceivedTime: timestamp,
|
|
152
|
+
transferSize: response.encodedDataLength,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
_onLoadingFinished(event) {
|
|
156
|
+
const { requestId, timestamp, encodedDataLength } = event;
|
|
157
|
+
this._requestCompleted(requestId, timestamp, encodedDataLength);
|
|
229
158
|
}
|
|
159
|
+
_onLoadingFailed(event) {
|
|
160
|
+
const { requestId, timestamp } = event;
|
|
161
|
+
this._requestCompleted(requestId, timestamp);
|
|
162
|
+
}
|
|
163
|
+
_requestCompleted(requestId, endTime, encodedDataLength) {
|
|
164
|
+
const record = this._findNetworkRecord(requestId);
|
|
165
|
+
if (!record) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (encodedDataLength >= 0) {
|
|
169
|
+
record.transferSize = encodedDataLength;
|
|
170
|
+
}
|
|
171
|
+
record.loadEndTime = endTime;
|
|
172
|
+
record.timings = calculateTimings(record);
|
|
173
|
+
this.results.push(record);
|
|
174
|
+
/**
|
|
175
|
+
* When there is DNS failure, browsers keeps retrying requests which
|
|
176
|
+
* might result in incorrect timings so we get remove them to measure only once
|
|
177
|
+
*/
|
|
178
|
+
this._InflightRequestMap.delete(requestId);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Account for missing response received event and also adjust the
|
|
182
|
+
* response received event based on when first byte event was recorded
|
|
183
|
+
*/
|
|
230
184
|
stop() {
|
|
231
|
-
const context = this.driver.context;
|
|
232
|
-
context.on('request', this._onRequest.bind(this));
|
|
233
|
-
context.on('response', this._onResponse.bind(this));
|
|
234
|
-
context.on('requestfinished', this._onRequestCompleted.bind(this));
|
|
235
|
-
context.on('requestfailed', this._onRequestCompleted.bind(this));
|
|
236
|
-
this._barrierPromises.clear();
|
|
237
185
|
return this.results;
|
|
238
186
|
}
|
|
239
187
|
}
|
|
240
188
|
exports.NetworkManager = NetworkManager;
|
|
189
|
+
function getResponseReceivedTime(timing, responseReceivedTime) {
|
|
190
|
+
if (timing == null) {
|
|
191
|
+
return responseReceivedTime;
|
|
192
|
+
}
|
|
193
|
+
const startTime = timing.requestTime;
|
|
194
|
+
const headersReceivedTime = startTime + timing.receiveHeadersEnd / 1000;
|
|
195
|
+
if (responseReceivedTime < 0 || responseReceivedTime > headersReceivedTime) {
|
|
196
|
+
responseReceivedTime = headersReceivedTime;
|
|
197
|
+
}
|
|
198
|
+
if (startTime > responseReceivedTime) {
|
|
199
|
+
responseReceivedTime = startTime;
|
|
200
|
+
}
|
|
201
|
+
return responseReceivedTime;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* The timing calculations are based on the chrome devtools frontend
|
|
205
|
+
* https://github.com/ChromeDevTools/devtools-frontend/blob/7f5478d8ceb7586f23f4073ab5c2085dac1ec26a/front_end/network/RequestTimingView.js#L98-L193
|
|
206
|
+
*/
|
|
207
|
+
function calculateTimings(record) {
|
|
208
|
+
const result = {
|
|
209
|
+
blocked: -1,
|
|
210
|
+
queueing: -1,
|
|
211
|
+
proxy: -1,
|
|
212
|
+
dns: -1,
|
|
213
|
+
ssl: -1,
|
|
214
|
+
connect: -1,
|
|
215
|
+
send: -1,
|
|
216
|
+
wait: -1,
|
|
217
|
+
receive: -1,
|
|
218
|
+
total: -1,
|
|
219
|
+
};
|
|
220
|
+
const { requestSentTime, loadEndTime, responseReceivedTime } = record;
|
|
221
|
+
/**
|
|
222
|
+
* Handle when request failed and no responseReceived event was
|
|
223
|
+
* fired for that particular request
|
|
224
|
+
* Eg: connection refused by remote host
|
|
225
|
+
*/
|
|
226
|
+
const response = record.response || {
|
|
227
|
+
timing: null,
|
|
228
|
+
fromServiceWorker: false,
|
|
229
|
+
};
|
|
230
|
+
const toMilliseconds = (time) => (time === -1 ? -1 : time * 1000);
|
|
231
|
+
const calculateDiffInMs = (name, start, end) => {
|
|
232
|
+
if (start < Number.MAX_VALUE && start <= end) {
|
|
233
|
+
result[name] = toMilliseconds(end - start);
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
const firstPositive = (numbers) => {
|
|
237
|
+
for (let i = 0; i < numbers.length; ++i) {
|
|
238
|
+
if (numbers[i] > 0) {
|
|
239
|
+
return numbers[i];
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return null;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* requestTime is baseline in seconds, rest of the timing data are ticks in milliseconds
|
|
246
|
+
* from the requestTime, so we calculate the offset from that
|
|
247
|
+
*/
|
|
248
|
+
const addOffsetRange = (name, start, end) => {
|
|
249
|
+
if (start >= 0 && end >= 0) {
|
|
250
|
+
calculateDiffInMs(name, startTime + start / 1000, startTime + end / 1000);
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
const timing = response.timing;
|
|
254
|
+
const actResRcvdTime = getResponseReceivedTime(timing, responseReceivedTime);
|
|
255
|
+
const issueTime = requestSentTime;
|
|
256
|
+
const startTime = timing == null ? -1 : timing.requestTime;
|
|
257
|
+
const endTime = firstPositive([loadEndTime, actResRcvdTime]) || startTime;
|
|
258
|
+
if (timing == null) {
|
|
259
|
+
const start = issueTime !== -1 ? issueTime : startTime !== -1 ? startTime : 0;
|
|
260
|
+
const middle = actResRcvdTime === -1 ? Number.MAX_VALUE : actResRcvdTime;
|
|
261
|
+
const end = endTime === -1 ? Number.MAX_VALUE : endTime;
|
|
262
|
+
calculateDiffInMs('total', start, end);
|
|
263
|
+
calculateDiffInMs('blocked', start, middle);
|
|
264
|
+
calculateDiffInMs('receive', middle, end);
|
|
265
|
+
// Check if the request is blocked/stalled for the whole timeframe and
|
|
266
|
+
// calculate timings appropriately for that request
|
|
267
|
+
if (!isFinite(result['blocked'])) {
|
|
268
|
+
result['blocked'] = result['total'];
|
|
269
|
+
}
|
|
270
|
+
return result;
|
|
271
|
+
}
|
|
272
|
+
calculateDiffInMs('total', issueTime < startTime ? issueTime : startTime, endTime);
|
|
273
|
+
if (issueTime < startTime) {
|
|
274
|
+
calculateDiffInMs('queueing', issueTime, startTime);
|
|
275
|
+
}
|
|
276
|
+
const responseReceived = toMilliseconds(actResRcvdTime - startTime);
|
|
277
|
+
if (response.fromServiceWorker) {
|
|
278
|
+
addOffsetRange('blocked', 0, timing.workerStart);
|
|
279
|
+
addOffsetRange('wait', timing.sendEnd, responseReceived);
|
|
280
|
+
}
|
|
281
|
+
else if (!timing.pushStart) {
|
|
282
|
+
const blockingEnd = firstPositive([
|
|
283
|
+
timing.dnsStart,
|
|
284
|
+
timing.connectStart,
|
|
285
|
+
timing.sendStart,
|
|
286
|
+
responseReceived,
|
|
287
|
+
]) || 0;
|
|
288
|
+
addOffsetRange('blocked', 0, blockingEnd);
|
|
289
|
+
addOffsetRange('proxy', timing.proxyStart, timing.proxyEnd);
|
|
290
|
+
addOffsetRange('dns', timing.dnsStart, timing.dnsEnd);
|
|
291
|
+
addOffsetRange('connect', timing.connectStart, timing.connectEnd);
|
|
292
|
+
addOffsetRange('ssl', timing.sslStart, timing.sslEnd);
|
|
293
|
+
addOffsetRange('send', timing.sendStart, timing.sendEnd);
|
|
294
|
+
addOffsetRange('wait', Math.max(timing.sendEnd, timing.connectEnd, timing.dnsEnd, timing.proxyEnd, blockingEnd), responseReceived);
|
|
295
|
+
}
|
|
296
|
+
calculateDiffInMs('receive', actResRcvdTime, endTime);
|
|
297
|
+
return result;
|
|
298
|
+
}
|
|
299
|
+
exports.calculateTimings = calculateTimings;
|
|
241
300
|
//# sourceMappingURL=network.js.map
|