@elastic/synthetics 1.24.4 → 1.25.0

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.
Files changed (101) hide show
  1. package/README.md +67 -0
  2. package/dist/common_types.d.ts +17 -0
  3. package/dist/common_types.d.ts.map +1 -1
  4. package/dist/core/gatherer.d.ts +4 -4
  5. package/dist/core/gatherer.d.ts.map +1 -1
  6. package/dist/core/gatherer.js +28 -7
  7. package/dist/core/gatherer.js.map +1 -1
  8. package/dist/core/globals.js +1 -1
  9. package/dist/core/index.d.ts +2 -1
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +16 -1
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/runner.d.ts +1 -1
  14. package/dist/core/runner.d.ts.map +1 -1
  15. package/dist/core/runner.js +86 -58
  16. package/dist/core/runner.js.map +1 -1
  17. package/dist/dsl/api-journey.d.ts +62 -0
  18. package/dist/dsl/api-journey.d.ts.map +1 -0
  19. package/dist/dsl/api-journey.js +55 -0
  20. package/dist/dsl/api-journey.js.map +1 -0
  21. package/dist/dsl/index.d.ts +1 -0
  22. package/dist/dsl/index.d.ts.map +1 -1
  23. package/dist/dsl/index.js +1 -0
  24. package/dist/dsl/index.js.map +1 -1
  25. package/dist/dsl/journey.d.ts +10 -2
  26. package/dist/dsl/journey.d.ts.map +1 -1
  27. package/dist/dsl/journey.js +11 -2
  28. package/dist/dsl/journey.js.map +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/loader.d.ts.map +1 -1
  34. package/dist/loader.js +66 -1
  35. package/dist/loader.js.map +1 -1
  36. package/dist/network-timings.d.ts +55 -0
  37. package/dist/network-timings.d.ts.map +1 -0
  38. package/dist/network-timings.js +107 -0
  39. package/dist/network-timings.js.map +1 -0
  40. package/dist/plugins/api-network.d.ts +39 -0
  41. package/dist/plugins/api-network.d.ts.map +1 -0
  42. package/dist/plugins/api-network.js +235 -0
  43. package/dist/plugins/api-network.js.map +1 -0
  44. package/dist/plugins/network.d.ts +0 -6
  45. package/dist/plugins/network.d.ts.map +1 -1
  46. package/dist/plugins/network.js +5 -70
  47. package/dist/plugins/network.js.map +1 -1
  48. package/dist/plugins/plugin-manager.d.ts +11 -4
  49. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  50. package/dist/plugins/plugin-manager.js +36 -16
  51. package/dist/plugins/plugin-manager.js.map +1 -1
  52. package/dist/push/index.d.ts.map +1 -1
  53. package/dist/push/index.js +4 -0
  54. package/dist/push/index.js.map +1 -1
  55. package/dist/push/monitor.d.ts.map +1 -1
  56. package/dist/push/monitor.js +1 -1
  57. package/dist/push/monitor.js.map +1 -1
  58. package/dist/push/run-local.d.ts.map +1 -1
  59. package/dist/push/run-local.js +2 -1
  60. package/dist/push/run-local.js.map +1 -1
  61. package/dist/push/utils.d.ts +7 -0
  62. package/dist/push/utils.d.ts.map +1 -1
  63. package/dist/push/utils.js +15 -1
  64. package/dist/push/utils.js.map +1 -1
  65. package/dist/reporters/base.d.ts +2 -2
  66. package/dist/reporters/base.d.ts.map +1 -1
  67. package/dist/reporters/base.js.map +1 -1
  68. package/dist/reporters/index.d.ts +2 -2
  69. package/dist/reporters/index.d.ts.map +1 -1
  70. package/dist/reporters/index.js.map +1 -1
  71. package/dist/reporters/json.d.ts +6 -2
  72. package/dist/reporters/json.d.ts.map +1 -1
  73. package/dist/reporters/json.js +68 -33
  74. package/dist/reporters/json.js.map +1 -1
  75. package/package.json +5 -5
  76. package/src/common_types.ts +22 -0
  77. package/src/core/gatherer.ts +41 -10
  78. package/src/core/globals.ts +1 -1
  79. package/src/core/index.ts +28 -0
  80. package/src/core/runner.ts +93 -67
  81. package/src/dsl/api-journey.ts +93 -0
  82. package/src/dsl/index.ts +1 -0
  83. package/src/dsl/journey.ts +21 -9
  84. package/src/index.ts +6 -0
  85. package/src/loader.ts +78 -2
  86. package/src/network-timings.ts +130 -0
  87. package/src/plugins/api-network.ts +252 -0
  88. package/src/plugins/network.ts +5 -87
  89. package/src/plugins/plugin-manager.ts +60 -19
  90. package/src/push/index.ts +11 -0
  91. package/src/push/monitor.ts +6 -2
  92. package/src/push/run-local.ts +2 -1
  93. package/src/push/utils.ts +15 -0
  94. package/src/reporters/base.ts +2 -1
  95. package/src/reporters/index.ts +2 -1
  96. package/src/reporters/json.ts +74 -41
  97. package/templates/README.md +3 -1
  98. package/templates/journeys/advanced-api-example-helpers.ts +79 -0
  99. package/templates/journeys/advanced-api-example.journey.ts +52 -0
  100. package/templates/journeys/api-example.journey.ts +35 -0
  101. package/templates/synthetics.config.ts +2 -0
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ /**
3
+ * MIT License
4
+ *
5
+ * Copyright (c) 2020-present, Elastic NV
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in
15
+ * all copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ * THE SOFTWARE.
24
+ *
25
+ */
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.calcTotalTime = exports.getResourceTimings = exports.firstPositive = exports.roundMilliSecs = void 0;
28
+ const roundMilliSecs = (value) => {
29
+ return Math.floor(value * 1000) / 1000;
30
+ };
31
+ exports.roundMilliSecs = roundMilliSecs;
32
+ /**
33
+ * First positive number in the list, used to derive the `blocked` phase from
34
+ * whichever Resource Timing marker fired first.
35
+ */
36
+ const firstPositive = (numbers) => {
37
+ for (let i = 0; i < numbers.length; ++i) {
38
+ if (numbers[i] > 0) {
39
+ return numbers[i];
40
+ }
41
+ }
42
+ return null;
43
+ };
44
+ exports.firstPositive = firstPositive;
45
+ /**
46
+ * Maps a Playwright Resource Timing object into the per-phase `NetworkInfo`
47
+ * timings. `total` is left at `-1` for the caller to fill via `calcTotalTime`
48
+ * once `loadEndTime`/`requestSentTime` are known. `receive` resolves to `-1`
49
+ * until `responseEnd` is available (browser journeys learn it on
50
+ * `requestfinished`); API journeys have the full timing up front.
51
+ */
52
+ function getResourceTimings(rtiming) {
53
+ const blocked = (0, exports.roundMilliSecs)((0, exports.firstPositive)([
54
+ rtiming.domainLookupStart,
55
+ rtiming.connectStart,
56
+ rtiming.requestStart,
57
+ ])) || -1;
58
+ const dns = rtiming.domainLookupEnd !== -1
59
+ ? (0, exports.roundMilliSecs)(rtiming.domainLookupEnd - rtiming.domainLookupStart)
60
+ : -1;
61
+ const connect = rtiming.connectEnd !== -1
62
+ ? (0, exports.roundMilliSecs)(rtiming.connectEnd - rtiming.connectStart)
63
+ : -1;
64
+ const ssl = rtiming.secureConnectionStart !== -1
65
+ ? (0, exports.roundMilliSecs)(rtiming.connectEnd - rtiming.secureConnectionStart)
66
+ : -1;
67
+ const wait = rtiming.responseStart !== -1
68
+ ? (0, exports.roundMilliSecs)(rtiming.responseStart - rtiming.requestStart)
69
+ : -1;
70
+ const receive = rtiming.responseEnd !== -1
71
+ ? (0, exports.roundMilliSecs)(rtiming.responseEnd - rtiming.responseStart)
72
+ : -1;
73
+ return {
74
+ blocked,
75
+ dns,
76
+ ssl,
77
+ connect,
78
+ send: 0,
79
+ wait,
80
+ receive,
81
+ total: -1,
82
+ };
83
+ }
84
+ exports.getResourceTimings = getResourceTimings;
85
+ /**
86
+ * Returns the `total` phase by summing the positive phases. Falls back to the
87
+ * wall-clock span between `requestSentTime` and `loadEndTime` when Resource
88
+ * Timing data is unavailable (`startTime <= 0`, e.g. HAR replay or aborted
89
+ * requests). Pure — the caller assigns the result onto `timings.total`.
90
+ */
91
+ function calcTotalTime(entry, rtiming) {
92
+ if (rtiming.startTime <= 0) {
93
+ const end = entry.loadEndTime || entry.responseReceivedTime || entry.requestSentTime;
94
+ const total = (0, exports.roundMilliSecs)((end - entry.requestSentTime) * 1000);
95
+ return total <= 0 ? -1 : total;
96
+ }
97
+ const { timings } = entry;
98
+ return [
99
+ timings.blocked,
100
+ timings.dns,
101
+ timings.connect,
102
+ timings.wait,
103
+ timings.receive,
104
+ ].reduce((pre, cur) => ((cur || -1) > 0 ? cur + pre : pre), 0);
105
+ }
106
+ exports.calcTotalTime = calcTotalTime;
107
+ //# sourceMappingURL=network-timings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-timings.js","sourceRoot":"","sources":["../src/network-timings.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAaI,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACzC,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEF;;;GAGG;AACI,MAAM,aAAa,GAAG,CAAC,OAAiB,EAAiB,EAAE;IAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACvC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YAClB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;SACnB;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAPW,QAAA,aAAa,iBAOxB;AAEF;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,OAAuB;IAEvB,MAAM,OAAO,GACX,IAAA,sBAAc,EACZ,IAAA,qBAAa,EAAC;QACZ,OAAO,CAAC,iBAAiB;QACzB,OAAO,CAAC,YAAY;QACpB,OAAO,CAAC,YAAY;KACrB,CAAC,CACH,IAAI,CAAC,CAAC,CAAC;IACV,MAAM,GAAG,GACP,OAAO,CAAC,eAAe,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,IAAA,sBAAc,EAAC,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACrE,CAAC,CAAC,CAAC,CAAC,CAAC;IACT,MAAM,OAAO,GACX,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,IAAA,sBAAc,EAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;QAC3D,CAAC,CAAC,CAAC,CAAC,CAAC;IACT,MAAM,GAAG,GACP,OAAO,CAAC,qBAAqB,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,IAAA,sBAAc,EAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC;QACpE,CAAC,CAAC,CAAC,CAAC,CAAC;IACT,MAAM,IAAI,GACR,OAAO,CAAC,aAAa,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,IAAA,sBAAc,EAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;QAC9D,CAAC,CAAC,CAAC,CAAC,CAAC;IACT,MAAM,OAAO,GACX,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,IAAA,sBAAc,EAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7D,CAAC,CAAC,CAAC,CAAC,CAAC;IAET,OAAO;QACL,OAAO;QACP,GAAG;QACH,GAAG;QACH,OAAO;QACP,IAAI,EAAE,CAAC;QACP,IAAI;QACJ,OAAO;QACP,KAAK,EAAE,CAAC,CAAC;KACV,CAAC;AACJ,CAAC;AA1CD,gDA0CC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,KAAkB,EAClB,OAAuB;IAEvB,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE;QAC1B,MAAM,GAAG,GACP,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,eAAe,CAAC;QAC3E,MAAM,KAAK,GAAG,IAAA,sBAAc,EAAC,CAAC,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KAChC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,OAAO;QACL,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,GAAG;QACX,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,OAAO;KAChB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAnBD,sCAmBC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * MIT License
3
+ *
4
+ * Copyright (c) 2020-present, Elastic NV
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in
14
+ * all copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ * THE SOFTWARE.
23
+ *
24
+ */
25
+ import { NetworkInfo, APIDriver } from '../common_types';
26
+ import { Step } from '../dsl';
27
+ export declare class APINetworkManager {
28
+ private driver;
29
+ results: Array<NetworkInfo>;
30
+ _currentStep: Partial<Step> | null;
31
+ private _originalFetch?;
32
+ private _patched;
33
+ constructor(driver: APIDriver);
34
+ start(): Promise<void>;
35
+ private _interceptRequest;
36
+ private _restore;
37
+ stop(): Promise<NetworkInfo[]>;
38
+ }
39
+ //# sourceMappingURL=api-network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-network.d.ts","sourceRoot":"","sources":["../../src/plugins/api-network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAuD9B,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,MAAM;IAL1B,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAM;IACjC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC1C,OAAO,CAAC,cAAc,CAAC,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAS;gBAEL,MAAM,EAAE,SAAS;IAE/B,KAAK;YAUG,iBAAiB;IA0H/B,OAAO,CAAC,QAAQ;IAOV,IAAI;CAKX"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /**
3
+ * MIT License
4
+ *
5
+ * Copyright (c) 2020-present, Elastic NV
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in
15
+ * all copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ * THE SOFTWARE.
24
+ *
25
+ */
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.APINetworkManager = void 0;
28
+ const logger_1 = require("../core/logger");
29
+ const helpers_1 = require("../helpers");
30
+ const network_timings_1 = require("../network-timings");
31
+ /**
32
+ * Kibana UI expects the requestStartTime and loadEndTime to be baseline
33
+ * in seconds as they have the logic to convert it to milliseconds before
34
+ * using for offset calculation
35
+ */
36
+ function epochTimeInSeconds() {
37
+ return (0, helpers_1.getTimestamp)() / 1e6;
38
+ }
39
+ function normalizeUrl(urlOrRequest) {
40
+ if (typeof urlOrRequest === 'string')
41
+ return urlOrRequest;
42
+ try {
43
+ return urlOrRequest.url();
44
+ }
45
+ catch {
46
+ return String(urlOrRequest);
47
+ }
48
+ }
49
+ // Best-effort request body size; returns 0 for shapes we can't measure.
50
+ function bodyBytes(body) {
51
+ if (body == null)
52
+ return 0;
53
+ if (typeof body === 'string')
54
+ return Buffer.byteLength(body);
55
+ if (Buffer.isBuffer(body))
56
+ return body.byteLength;
57
+ if (body instanceof Uint8Array)
58
+ return body.byteLength;
59
+ if (typeof body === 'object') {
60
+ try {
61
+ return Buffer.byteLength(JSON.stringify(body));
62
+ }
63
+ catch {
64
+ return 0;
65
+ }
66
+ }
67
+ return 0;
68
+ }
69
+ // Wire size of headers (`name: value\r\n`) for ECS `*.bytes`.
70
+ function headersBytes(headers) {
71
+ let total = 0;
72
+ for (const [k, v] of Object.entries(headers ?? {})) {
73
+ total += Buffer.byteLength(k) + Buffer.byteLength(String(v)) + 4; // ": " + CRLF
74
+ }
75
+ return total;
76
+ }
77
+ class APINetworkManager {
78
+ driver;
79
+ results = [];
80
+ _currentStep = null;
81
+ _originalFetch;
82
+ _patched = false;
83
+ constructor(driver) {
84
+ this.driver = driver;
85
+ }
86
+ async start() {
87
+ if (this._patched)
88
+ return;
89
+ (0, logger_1.log)(`Plugins: started collecting API network events`);
90
+ const request = this.driver.request;
91
+ this._originalFetch = request.fetch.bind(request);
92
+ request.fetch = (urlOrRequest, options) => this._interceptRequest(urlOrRequest, options);
93
+ this._patched = true;
94
+ }
95
+ async _interceptRequest(urlOrRequest, options) {
96
+ const url = normalizeUrl(urlOrRequest);
97
+ const timestamp = (0, helpers_1.getTimestamp)();
98
+ const requestSentTime = epochTimeInSeconds();
99
+ const httpMethod = (options?.method ?? 'GET').toUpperCase();
100
+ (0, logger_1.log)(`API network: ${httpMethod} ${url}`);
101
+ const requestBody = options?.postData ?? options?.data;
102
+ const requestBodyBytes = bodyBytes(requestBody);
103
+ const requestHeaders = options?.headers ?? {};
104
+ const entry = {
105
+ step: this._currentStep,
106
+ timestamp,
107
+ url,
108
+ type: 'fetch',
109
+ isNavigationRequest: false,
110
+ browser: { name: 'api', version: '' },
111
+ request: {
112
+ url,
113
+ method: httpMethod,
114
+ headers: requestHeaders,
115
+ bytes: headersBytes(requestHeaders) + requestBodyBytes,
116
+ body: requestBodyBytes > 0 ? { bytes: requestBodyBytes } : undefined,
117
+ },
118
+ response: {
119
+ status: -1,
120
+ headers: {},
121
+ mimeType: 'x-unknown',
122
+ },
123
+ requestSentTime,
124
+ loadEndTime: -1,
125
+ responseReceivedTime: -1,
126
+ resourceSize: 0,
127
+ transferSize: 0,
128
+ timings: {
129
+ blocked: -1,
130
+ dns: -1,
131
+ ssl: -1,
132
+ connect: -1,
133
+ send: -1,
134
+ wait: -1,
135
+ receive: -1,
136
+ total: -1,
137
+ },
138
+ };
139
+ this.results.push(entry);
140
+ const startTime = (0, helpers_1.now)();
141
+ try {
142
+ const response = (await this._originalFetch(urlOrRequest, options));
143
+ const headers = response.headers();
144
+ // Prefer `Content-Length`; fall back to the body buffer (chunked
145
+ // responses omit the header).
146
+ const contentLength = parseContentLength(headers['content-length']);
147
+ let responseBodyBytes = contentLength;
148
+ if (responseBodyBytes < 0) {
149
+ try {
150
+ const buf = await response.body();
151
+ responseBodyBytes = buf?.byteLength ?? 0;
152
+ }
153
+ catch {
154
+ responseBodyBytes = 0;
155
+ }
156
+ }
157
+ const responseHeaderBytes = headersBytes(headers);
158
+ const transferBytes = responseHeaderBytes + responseBodyBytes;
159
+ entry.response = {
160
+ url: response.url(),
161
+ status: response.status(),
162
+ statusText: response.statusText(),
163
+ headers,
164
+ mimeType: headers['content-type'] ?? 'x-unknown',
165
+ bytes: transferBytes,
166
+ body: { bytes: responseBodyBytes },
167
+ };
168
+ entry.transferSize = transferBytes;
169
+ entry.resourceSize = responseBodyBytes;
170
+ entry.responseReceivedTime = epochTimeInSeconds();
171
+ entry.loadEndTime = entry.responseReceivedTime;
172
+ // Per-phase Resource Timing (Playwright >= 1.62). Phases that did not
173
+ // happen (reused keep-alive socket) or are unknown (HAR replay) come
174
+ // back as `-1`; `calcTotalTime` then falls back to the wall-clock span.
175
+ const timing = response.timing();
176
+ entry.timings = (0, network_timings_1.getResourceTimings)(timing);
177
+ entry.timings.total = (0, network_timings_1.calcTotalTime)(entry, timing);
178
+ // Native (Playwright >= 1.61) TLS/socket info for the final hop;
179
+ // both resolve to `null` for non-HTTPS or unknown addresses.
180
+ const [serverAddr, securityDetails] = await Promise.all([
181
+ response.serverAddr(),
182
+ response.securityDetails(),
183
+ ]);
184
+ if (serverAddr) {
185
+ entry.response.remoteIPAddress = serverAddr.ipAddress;
186
+ entry.response.remotePort = serverAddr.port;
187
+ }
188
+ if (securityDetails) {
189
+ entry.response.securityDetails = {
190
+ ...securityDetails,
191
+ protocol: normalizeTLSProtocol(securityDetails.protocol),
192
+ };
193
+ }
194
+ return response;
195
+ }
196
+ catch (error) {
197
+ entry.responseReceivedTime = epochTimeInSeconds();
198
+ entry.loadEndTime = entry.responseReceivedTime;
199
+ entry.timings.total = (0, network_timings_1.roundMilliSecs)((0, helpers_1.now)() - startTime);
200
+ throw error;
201
+ }
202
+ }
203
+ // Drop the own-property `fetch` so the prototype method is reachable
204
+ // again, keeping the context usable after the plugin stops.
205
+ _restore() {
206
+ if (!this._patched)
207
+ return;
208
+ delete this.driver.request.fetch;
209
+ this._originalFetch = undefined;
210
+ this._patched = false;
211
+ }
212
+ async stop() {
213
+ this._restore();
214
+ (0, logger_1.log)(`Plugins: stopped collecting API network events`);
215
+ return this.results;
216
+ }
217
+ }
218
+ exports.APINetworkManager = APINetworkManager;
219
+ function parseContentLength(raw) {
220
+ if (!raw)
221
+ return -1;
222
+ const n = Number(raw);
223
+ return Number.isFinite(n) && n >= 0 ? n : -1;
224
+ }
225
+ /**
226
+ * `securityDetails()` reports `"TLSv1.3"` but the reporter splits on a
227
+ * space to derive `tls.version_protocol`/`tls.version`. Normalize to the
228
+ * spaced `"TLS 1.3"` shape so both journey types emit consistent fields.
229
+ */
230
+ function normalizeTLSProtocol(raw) {
231
+ if (!raw)
232
+ return undefined;
233
+ return raw.replace(/\s*v(?=\d)/i, ' ');
234
+ }
235
+ //# sourceMappingURL=api-network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-network.js","sourceRoot":"","sources":["../../src/plugins/api-network.ts"],"names":[],"mappings":"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"}
@@ -49,12 +49,6 @@ export declare class NetworkManager {
49
49
  private _onRequest;
50
50
  private _onResponse;
51
51
  private _onRequestCompleted;
52
- /**
53
- * Calculates the total time for the network request based on the ResourceTiming
54
- * data from Playwright. Fallbacks to the event timings if ResourceTiming data
55
- * is not available.
56
- */
57
- private _calcTotalTime;
58
52
  stop(): Promise<NetworkInfo[]>;
59
53
  }
60
54
  //# sourceMappingURL=network.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/plugins/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,WAAW,EAAe,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA4B9B;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAA6B,CAAC;AAM/D,qBAAa,cAAc;IAMb,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAM;IACjC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAQ;gBAEf,MAAM,EAAE,MAAM;IAElC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,qBAAqB;IAWvB,KAAK;IAeX,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,UAAU;YAyDJ,WAAW;YAyFX,mBAAmB;IAuCjC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAwBhB,IAAI;CAkBX"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/plugins/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,WAAW,EAAe,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAa9B;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAA6B,CAAC;AAM/D,qBAAa,cAAc;IAMb,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAM;IACjC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAQ;gBAEf,MAAM,EAAE,MAAM;IAElC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,qBAAqB;IAWvB,KAAK;IAeX,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,UAAU;YAyDJ,WAAW;YAuDX,mBAAmB;IAmC3B,IAAI;CAkBX"}
@@ -27,6 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.NetworkManager = exports.NETWORK_ENTRY_SUMBOL = void 0;
28
28
  const logger_1 = require("../core/logger");
29
29
  const helpers_1 = require("../helpers");
30
+ const network_timings_1 = require("../network-timings");
30
31
  /**
31
32
  * Kibana UI expects the requestStartTime and loadEndTime to be baseline
32
33
  * in seconds as they have the logic to convert it to milliseconds before
@@ -35,20 +36,6 @@ const helpers_1 = require("../helpers");
35
36
  function epochTimeInSeconds() {
36
37
  return (0, helpers_1.getTimestamp)() / 1e6;
37
38
  }
38
- /**
39
- * Find the first positive number in an array for Resource timing data
40
- */
41
- const firstPositive = (numbers) => {
42
- for (let i = 0; i < numbers.length; ++i) {
43
- if (numbers[i] > 0) {
44
- return numbers[i];
45
- }
46
- }
47
- return null;
48
- };
49
- const roundMilliSecs = (value) => {
50
- return Math.floor(value * 1000) / 1000;
51
- };
52
39
  /**
53
40
  * Used as a key in each Network Request to identify the
54
41
  * associated request across distinct lifecycle events
@@ -181,34 +168,8 @@ class NetworkManager {
181
168
  // Gather all resource timing information up until the
182
169
  // TTFB(Time to first byte) is received
183
170
  const timing = request.timing();
184
- const blocked = roundMilliSecs(firstPositive([
185
- timing.domainLookupStart,
186
- timing.connectStart,
187
- timing.requestStart,
188
- ])) || -1;
189
- const dns = timing.domainLookupEnd !== -1
190
- ? roundMilliSecs(timing.domainLookupEnd - timing.domainLookupStart)
191
- : -1;
192
- const connect = timing.connectEnd !== -1
193
- ? roundMilliSecs(timing.connectEnd - timing.connectStart)
194
- : -1;
195
- const ssl = timing.secureConnectionStart !== -1
196
- ? roundMilliSecs(timing.connectEnd - timing.secureConnectionStart)
197
- : -1;
198
- const wait = timing.responseStart !== -1
199
- ? roundMilliSecs(timing.responseStart - timing.requestStart)
200
- : -1;
201
- networkEntry.timings = {
202
- blocked,
203
- dns,
204
- ssl,
205
- connect,
206
- send: 0,
207
- wait,
208
- receive: -1,
209
- total: -1,
210
- };
211
- this._calcTotalTime(networkEntry, timing);
171
+ networkEntry.timings = (0, network_timings_1.getResourceTimings)(timing);
172
+ networkEntry.timings.total = (0, network_timings_1.calcTotalTime)(networkEntry, timing);
212
173
  const frame = this._nullableFrameBarrier(request);
213
174
  const page = frame?.page();
214
175
  this._addBarrier(page, request.allHeaders().then(reqHeaders => {
@@ -237,11 +198,8 @@ class NetworkManager {
237
198
  networkEntry.loadEndTime = epochTimeInSeconds();
238
199
  // responseEnd is fired after the last byte of the response is received.
239
200
  const timing = request.timing();
240
- const receive = timing.responseEnd !== -1
241
- ? roundMilliSecs(timing.responseEnd - timing.responseStart)
242
- : -1;
243
- networkEntry.timings.receive = receive;
244
- this._calcTotalTime(networkEntry, timing);
201
+ networkEntry.timings = (0, network_timings_1.getResourceTimings)(timing);
202
+ networkEntry.timings.total = (0, network_timings_1.calcTotalTime)(networkEntry, timing);
245
203
  // For aborted/failed requests sizes will not be present
246
204
  if (timing.startTime <= 0) {
247
205
  return;
@@ -262,29 +220,6 @@ class NetworkManager {
262
220
  };
263
221
  }));
264
222
  }
265
- /**
266
- * Calculates the total time for the network request based on the ResourceTiming
267
- * data from Playwright. Fallbacks to the event timings if ResourceTiming data
268
- * is not available.
269
- */
270
- _calcTotalTime(entry, rtiming) {
271
- const timings = entry.timings;
272
- entry.timings.total = [
273
- timings.blocked,
274
- timings.dns,
275
- timings.connect,
276
- timings.wait,
277
- timings.receive,
278
- ].reduce((pre, cur) => ((cur || -1) > 0 ? cur + pre : pre), 0);
279
- // fallback when ResourceTiming data is not available
280
- if (rtiming.startTime <= 0) {
281
- const end = entry.loadEndTime ||
282
- entry.responseReceivedTime ||
283
- entry.requestSentTime;
284
- const total = roundMilliSecs((end - entry.requestSentTime) * 1000);
285
- entry.timings.total = total <= 0 ? -1 : total;
286
- }
287
- }
288
223
  async stop() {
289
224
  /**
290
225
  * Waiting for all network events is error prone and might hang the tests
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/plugins/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/plugins/network.ts"],"names":[],"mappings":"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"}
@@ -22,21 +22,28 @@
22
22
  * THE SOFTWARE.
23
23
  *
24
24
  */
25
- import { PluginOutput, Driver } from '../common_types';
25
+ import { PluginOutput, Driver, APIDriver, NetworkInfo } from '../common_types';
26
26
  import { BrowserConsole, NetworkManager, PerformanceManager, Tracing, TraceOptions } from './';
27
27
  import { Step } from '../dsl';
28
+ import { APINetworkManager } from './api-network';
28
29
  type PluginType = 'network' | 'trace' | 'performance' | 'browserconsole';
29
- type Plugin = NetworkManager | Tracing | PerformanceManager | BrowserConsole;
30
+ export type NetworkPlugin = {
31
+ results: Array<NetworkInfo>;
32
+ _currentStep: Partial<Step> | null;
33
+ start(): Promise<void>;
34
+ stop(): Promise<Array<NetworkInfo>>;
35
+ };
36
+ type Plugin = NetworkManager | Tracing | PerformanceManager | BrowserConsole | APINetworkManager;
30
37
  type PluginOptions = TraceOptions;
31
38
  export declare class PluginManager {
32
39
  private driver;
33
40
  protected plugins: Map<PluginType, Plugin>;
34
41
  PLUGIN_TYPES: Array<PluginType>;
35
- constructor(driver: Driver);
42
+ constructor(driver: Driver | APIDriver);
36
43
  register(type: PluginType, options: PluginOptions): Plugin;
37
44
  registerAll(options: PluginOptions): void;
38
45
  unregisterAll(): void;
39
- stop(type: PluginType): Promise<void | import("../common_types").NetworkInfo[] | import("../common_types").BrowserMessage[] | Partial<PluginOutput>>;
46
+ stop(type: PluginType): Promise<void | NetworkInfo[] | import("../common_types").BrowserMessage[] | Partial<PluginOutput>>;
40
47
  start(type: PluginType): Promise<Plugin>;
41
48
  get(type: PluginType): Plugin;
42
49
  onStep(step: Step): void;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/plugins/plugin-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,YAAY,EACb,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,KAAK,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,CAAC;AACzE,KAAK,MAAM,GAAG,cAAc,GAAG,OAAO,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAC7E,KAAK,aAAa,GAAG,YAAY,CAAC;AAElC,qBAAa,aAAa;IAQZ,OAAO,CAAC,MAAM;IAP1B,SAAS,CAAC,OAAO,0BAAiC;IAC3C,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAKpC;gBACkB,MAAM,EAAE,MAAM;IAElC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa;IAoBjD,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,aAAa;IAMP,IAAI,CAAC,IAAI,EAAE,UAAU;IAQrB,KAAK,CAAC,IAAI,EAAE,UAAU;IAM5B,GAAG,CAAC,IAAI,EAAE,UAAU;IAIpB,MAAM,CAAC,IAAI,EAAE,IAAI;IAKX,MAAM;CAWb"}
1
+ {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/plugins/plugin-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,YAAY,EACb,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,KAAK,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAIzE,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;CACrC,CAAC;AAEF,KAAK,MAAM,GACP,cAAc,GACd,OAAO,GACP,kBAAkB,GAClB,cAAc,GACd,iBAAiB,CAAC;AACtB,KAAK,aAAa,GAAG,YAAY,CAAC;AAclC,qBAAa,aAAa;IAQZ,OAAO,CAAC,MAAM;IAP1B,SAAS,CAAC,OAAO,0BAAiC;IAC3C,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAKpC;gBACkB,MAAM,EAAE,MAAM,GAAG,SAAS;IAE9C,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa;IA4BjD,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,aAAa;IAMP,IAAI,CAAC,IAAI,EAAE,UAAU;IAQrB,KAAK,CAAC,IAAI,EAAE,UAAU;IAM5B,GAAG,CAAC,IAAI,EAAE,UAAU;IAKpB,MAAM,CAAC,IAAI,EAAE,IAAI;IASX,MAAM;CAWb"}