@elastic/synthetics 1.0.0-beta.3 → 1.0.0-beta.30

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 (189) hide show
  1. package/README.md +4 -3
  2. package/dist/cli.js +99 -162
  3. package/dist/cli.js.map +1 -1
  4. package/dist/common_types.d.ts +156 -34
  5. package/dist/common_types.d.ts.map +1 -1
  6. package/dist/config.d.ts +2 -5
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +5 -5
  9. package/dist/config.js.map +1 -1
  10. package/dist/core/browser-service.js +5 -5
  11. package/dist/core/browser-service.js.map +1 -1
  12. package/dist/core/gatherer.d.ts +4 -8
  13. package/dist/core/gatherer.d.ts.map +1 -1
  14. package/dist/core/gatherer.js +46 -14
  15. package/dist/core/gatherer.js.map +1 -1
  16. package/dist/core/index.d.ts +5 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +23 -11
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/core/logger.d.ts +0 -1
  21. package/dist/core/logger.d.ts.map +1 -1
  22. package/dist/core/logger.js +3 -16
  23. package/dist/core/logger.js.map +1 -1
  24. package/dist/core/runner.d.ts +21 -65
  25. package/dist/core/runner.d.ts.map +1 -1
  26. package/dist/core/runner.js +211 -93
  27. package/dist/core/runner.js.map +1 -1
  28. package/dist/dsl/journey.d.ts +7 -3
  29. package/dist/dsl/journey.d.ts.map +1 -1
  30. package/dist/dsl/journey.js +22 -6
  31. package/dist/dsl/journey.js.map +1 -1
  32. package/{src/reporters/reporter.ts → dist/dsl/locations.d.ts} +12 -10
  33. package/dist/dsl/locations.d.ts.map +1 -0
  34. package/dist/dsl/locations.js +41 -0
  35. package/dist/dsl/locations.js.map +1 -0
  36. package/dist/dsl/monitor.d.ts +65 -0
  37. package/dist/dsl/monitor.d.ts.map +1 -0
  38. package/dist/dsl/monitor.js +63 -0
  39. package/dist/dsl/monitor.js.map +1 -0
  40. package/dist/dsl/step.d.ts +3 -2
  41. package/dist/dsl/step.d.ts.map +1 -1
  42. package/dist/dsl/step.js +2 -1
  43. package/dist/dsl/step.js.map +1 -1
  44. package/dist/formatter/javascript.d.ts +98 -0
  45. package/dist/formatter/javascript.d.ts.map +1 -0
  46. package/dist/formatter/javascript.js +295 -0
  47. package/dist/formatter/javascript.js.map +1 -0
  48. package/dist/generator/index.d.ts +21 -0
  49. package/dist/generator/index.d.ts.map +1 -0
  50. package/dist/generator/index.js +169 -0
  51. package/dist/generator/index.js.map +1 -0
  52. package/dist/{reporters/reporter.d.ts → generator/utils.d.ts} +4 -9
  53. package/dist/generator/utils.d.ts.map +1 -0
  54. package/dist/generator/utils.js +57 -0
  55. package/dist/generator/utils.js.map +1 -0
  56. package/dist/helpers.d.ts +20 -1
  57. package/dist/helpers.d.ts.map +1 -1
  58. package/dist/helpers.js +98 -18
  59. package/dist/helpers.js.map +1 -1
  60. package/dist/index.d.ts +5 -6
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +5 -26
  63. package/dist/index.js.map +1 -1
  64. package/dist/{parse_args.d.ts → loader.d.ts} +2 -5
  65. package/dist/loader.d.ts.map +1 -0
  66. package/dist/loader.js +144 -0
  67. package/dist/loader.js.map +1 -0
  68. package/dist/options.d.ts +34 -0
  69. package/dist/options.d.ts.map +1 -0
  70. package/dist/options.js +162 -0
  71. package/dist/options.js.map +1 -0
  72. package/dist/plugins/browser-console.d.ts +5 -4
  73. package/dist/plugins/browser-console.d.ts.map +1 -1
  74. package/dist/plugins/browser-console.js +27 -8
  75. package/dist/plugins/browser-console.js.map +1 -1
  76. package/dist/plugins/network.d.ts +20 -33
  77. package/dist/plugins/network.d.ts.map +1 -1
  78. package/dist/plugins/network.js +173 -214
  79. package/dist/plugins/network.js.map +1 -1
  80. package/dist/plugins/performance.d.ts +4 -19
  81. package/dist/plugins/performance.d.ts.map +1 -1
  82. package/dist/plugins/performance.js +5 -5
  83. package/dist/plugins/performance.js.map +1 -1
  84. package/dist/plugins/plugin-manager.d.ts +9 -5
  85. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  86. package/dist/plugins/plugin-manager.js +44 -29
  87. package/dist/plugins/plugin-manager.js.map +1 -1
  88. package/dist/plugins/tracing.d.ts +6 -6
  89. package/dist/plugins/tracing.d.ts.map +1 -1
  90. package/dist/plugins/tracing.js +8 -7
  91. package/dist/plugins/tracing.js.map +1 -1
  92. package/dist/push/bundler.d.ts +34 -0
  93. package/dist/push/bundler.d.ts.map +1 -0
  94. package/dist/push/bundler.js +114 -0
  95. package/dist/push/bundler.js.map +1 -0
  96. package/dist/{reporters/reporter.js → push/index.d.ts} +4 -3
  97. package/dist/push/index.d.ts.map +1 -0
  98. package/dist/push/index.js +55 -0
  99. package/dist/push/index.js.map +1 -0
  100. package/dist/push/monitor.d.ts +32 -0
  101. package/dist/push/monitor.d.ts.map +1 -0
  102. package/dist/push/monitor.js +62 -0
  103. package/dist/push/monitor.js.map +1 -0
  104. package/dist/push/plugin.d.ts +33 -0
  105. package/dist/push/plugin.d.ts.map +1 -0
  106. package/dist/push/plugin.js +124 -0
  107. package/dist/push/plugin.js.map +1 -0
  108. package/dist/push/request.d.ts +42 -0
  109. package/dist/push/request.d.ts.map +1 -0
  110. package/dist/push/request.js +84 -0
  111. package/dist/push/request.js.map +1 -0
  112. package/dist/reporters/base.d.ts +14 -6
  113. package/dist/reporters/base.d.ts.map +1 -1
  114. package/dist/reporters/base.js +54 -48
  115. package/dist/reporters/base.js.map +1 -1
  116. package/dist/reporters/index.d.ts +18 -8
  117. package/dist/reporters/index.d.ts.map +1 -1
  118. package/dist/reporters/index.js.map +1 -1
  119. package/dist/reporters/json.d.ts +18 -67
  120. package/dist/reporters/json.d.ts.map +1 -1
  121. package/dist/reporters/json.js +153 -175
  122. package/dist/reporters/json.js.map +1 -1
  123. package/dist/reporters/junit.d.ts +7 -1
  124. package/dist/reporters/junit.d.ts.map +1 -1
  125. package/dist/reporters/junit.js +94 -89
  126. package/dist/reporters/junit.js.map +1 -1
  127. package/dist/sdk/lh-trace-processor.d.ts +35 -9
  128. package/dist/sdk/lh-trace-processor.d.ts.map +1 -1
  129. package/dist/sdk/lh-trace-processor.js +114 -53
  130. package/dist/sdk/lh-trace-processor.js.map +1 -1
  131. package/dist/sdk/trace-metrics.d.ts +4 -4
  132. package/dist/sdk/trace-metrics.d.ts.map +1 -1
  133. package/dist/sdk/trace-metrics.js +5 -6
  134. package/dist/sdk/trace-metrics.js.map +1 -1
  135. package/dist/sdk/trace-processor.d.ts +11 -3
  136. package/dist/sdk/trace-processor.d.ts.map +1 -1
  137. package/dist/sdk/trace-processor.js +17 -9
  138. package/dist/sdk/trace-processor.js.map +1 -1
  139. package/dist/tsconfig.tsbuildinfo +1 -1888
  140. package/package.json +31 -19
  141. package/src/cli.ts +187 -154
  142. package/src/common_types.ts +188 -34
  143. package/src/config.ts +2 -5
  144. package/src/core/gatherer.ts +55 -27
  145. package/src/core/index.ts +36 -15
  146. package/src/core/logger.ts +1 -12
  147. package/src/core/runner.ts +216 -152
  148. package/src/dsl/journey.ts +29 -5
  149. package/src/dsl/locations.ts +38 -0
  150. package/src/dsl/monitor.ts +87 -0
  151. package/src/dsl/step.ts +9 -2
  152. package/src/formatter/javascript.ts +367 -0
  153. package/src/generator/index.ts +212 -0
  154. package/src/generator/utils.ts +54 -0
  155. package/src/helpers.ts +106 -10
  156. package/src/index.ts +21 -22
  157. package/src/loader.ts +162 -0
  158. package/src/options.ts +173 -0
  159. package/src/plugins/browser-console.ts +30 -8
  160. package/src/plugins/network.ts +208 -267
  161. package/src/plugins/performance.ts +6 -22
  162. package/src/plugins/plugin-manager.ts +49 -31
  163. package/src/plugins/tracing.ts +8 -9
  164. package/src/push/bundler.ts +95 -0
  165. package/src/push/index.ts +59 -0
  166. package/src/push/monitor.ts +68 -0
  167. package/src/push/plugin.ts +114 -0
  168. package/src/push/request.ts +111 -0
  169. package/src/reporters/base.ts +63 -52
  170. package/src/reporters/index.ts +26 -3
  171. package/src/reporters/json.ts +203 -206
  172. package/src/reporters/junit.ts +98 -93
  173. package/src/sdk/lh-trace-processor.ts +132 -68
  174. package/src/sdk/trace-metrics.ts +10 -6
  175. package/src/sdk/trace-processor.ts +28 -13
  176. package/templates/.github/workflows/run-synthetics.yml +26 -0
  177. package/templates/README.md +21 -0
  178. package/templates/journeys/advanced-example-helpers.ts +54 -0
  179. package/templates/journeys/advanced-example.journey.ts +43 -0
  180. package/templates/journeys/example.journey.ts +18 -0
  181. package/templates/synthetics.config.ts +26 -0
  182. package/CHANGELOG.md +0 -102
  183. package/NOTICE.txt +0 -221
  184. package/dist/parse_args.d.ts.map +0 -1
  185. package/dist/parse_args.js +0 -89
  186. package/dist/parse_args.js.map +0 -1
  187. package/dist/reporters/reporter.d.ts.map +0 -1
  188. package/dist/reporters/reporter.js.map +0 -1
  189. package/src/parse_args.ts +0 -127
@@ -24,185 +24,152 @@
24
24
  *
25
25
  */
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.NetworkManager = void 0;
27
+ exports.NetworkManager = exports.NETWORK_ENTRY_SUMBOL = 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 (0, 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');
29
42
  class NetworkManager {
30
- constructor() {
31
- this._InflightRequestMap = new Map();
43
+ constructor(driver) {
44
+ this.driver = driver;
45
+ this._barrierPromises = new Set();
32
46
  this.results = [];
33
47
  this._currentStep = null;
34
48
  }
35
- async start(client) {
49
+ /**
50
+ * Adds a protection barrier aganist all asynchronous extract operations from
51
+ * request/response object that are happening during page lifecycle, If the
52
+ * page is closed during the extraction, the barrier enforces those operations
53
+ * to not result in exception
54
+ */
55
+ _addBarrier(page, promise) {
56
+ if (!page)
57
+ return;
58
+ const race = Promise.race([
59
+ new Promise(resolve => page.on('close', () => {
60
+ this._barrierPromises.delete(race);
61
+ resolve();
62
+ })),
63
+ promise,
64
+ ]);
65
+ this._barrierPromises.add(race);
66
+ race.then(() => this._barrierPromises.delete(race));
67
+ }
68
+ async start() {
69
+ const { client, context } = this.driver;
36
70
  const { product } = await client.send('Browser.getVersion');
37
71
  const [name, version] = product.split('/');
38
72
  this._browser = { name, version };
39
73
  await client.send('Network.enable');
40
74
  /**
41
- * Listen for all network events
75
+ * Listen for all network events from PW context
42
76
  */
43
- client.on('Network.requestWillBeSent', this._onRequestWillBeSent.bind(this));
44
- client.on('Network.requestWillBeSentExtraInfo', this._onRequestWillBeSentExtraInfo.bind(this));
45
- client.on('Network.dataReceived', this._onDataReceived.bind(this));
46
- client.on('Network.responseReceived', this._onResponseReceived.bind(this));
47
- client.on('Network.loadingFinished', this._onLoadingFinished.bind(this));
48
- client.on('Network.loadingFailed', this._onLoadingFailed.bind(this));
77
+ context.on('request', this._onRequest.bind(this));
78
+ context.on('response', this._onResponse.bind(this));
79
+ context.on('requestfinished', this._onRequestCompleted.bind(this));
80
+ context.on('requestfailed', this._onRequestCompleted.bind(this));
49
81
  }
50
- _findNetworkRecord(requestId) {
51
- return this._InflightRequestMap.get(requestId);
82
+ _findNetworkEntry(request) {
83
+ return request[exports.NETWORK_ENTRY_SUMBOL];
52
84
  }
53
- _onRequestWillBeSent(event) {
54
- const { requestId, request, timestamp, type, loaderId } = event;
55
- const { url, method } = request;
85
+ _onRequest(request) {
86
+ const url = request.url();
56
87
  /**
57
88
  * Data URI should not show up as network requests
58
89
  */
59
90
  if (url.startsWith('data:')) {
60
91
  return;
61
92
  }
62
- const isNavigationRequest = requestId == loaderId && type === 'Document';
63
- const record = this._findNetworkRecord(requestId);
64
- /**
65
- * On redirects, another `requestWillBeSent` event will be fired for the
66
- * same requestId. We calculate the timings for the redirect request using
67
- * the `redirectedResponse` from the redirected request.
68
- */
69
- if (record) {
70
- if (event.redirectResponse) {
71
- const response = event.redirectResponse;
72
- const data = Object.assign(event, {
73
- type: event.type,
74
- response,
75
- encodedDataLength: response.encodedDataLength,
76
- });
77
- this._onResponseReceived(data);
78
- this._onLoadingFinished(data);
79
- }
80
- else {
81
- /**
82
- * Edge case, we handle it to proceed with next navigation
83
- */
84
- this._onLoadingFailed(Object.assign(event, {
85
- type: event.type,
86
- errorText: 'redirectResponse data is not available',
87
- }));
88
- }
89
- const redirectedRecord = this._findNetworkRecord(requestId);
90
- /**
91
- * Rewrite the map with new redirect id to not reset
92
- * the redirect request with original request
93
- */
94
- this._InflightRequestMap.delete(requestId);
95
- this._InflightRequestMap.set(`redirect:${timestamp}:${requestId}`, redirectedRecord);
96
- }
97
- this._InflightRequestMap.set(requestId, {
93
+ const timestamp = (0, helpers_1.getTimestamp)();
94
+ const networkEntry = {
98
95
  browser: this._browser,
99
96
  step: this._currentStep,
100
- timestamp: helpers_1.getTimestamp(),
97
+ timestamp,
101
98
  url,
102
- request,
103
- type,
104
- method,
105
- requestSentTime: timestamp,
106
- isNavigationRequest,
107
- status: 0,
99
+ type: request.resourceType(),
100
+ request: {
101
+ url,
102
+ method: request.method(),
103
+ headers: {},
104
+ body: {
105
+ bytes: request.postDataBuffer()?.length || 0,
106
+ },
107
+ },
108
+ response: {
109
+ status: -1,
110
+ headers: {},
111
+ mimeType: 'x-unknown',
112
+ redirectURL: '',
113
+ },
114
+ isNavigationRequest: request.isNavigationRequest(),
115
+ requestSentTime: epochTimeInSeconds(),
108
116
  loadEndTime: -1,
109
117
  responseReceivedTime: -1,
110
- response: null,
111
118
  resourceSize: 0,
112
119
  transferSize: 0,
113
120
  timings: null,
114
- });
115
- }
116
- _onRequestWillBeSentExtraInfo(event) {
117
- const { requestId, headers } = event;
118
- const record = this._findNetworkRecord(requestId);
119
- if (!record) {
120
- return;
121
- }
122
- /**
123
- * Enhance request headers with additional information
124
- */
125
- record.request.headers = {
126
- ...record.request.headers,
127
- ...headers,
128
121
  };
129
- }
130
- _onDataReceived(event) {
131
- const { requestId, dataLength, encodedDataLength } = event;
132
- const record = this._findNetworkRecord(requestId);
133
- if (!record) {
134
- return;
122
+ if (request.redirectedFrom()) {
123
+ const fromEntry = this._findNetworkEntry(request.redirectedFrom());
124
+ if (fromEntry)
125
+ fromEntry.response.redirectURL = request.url();
135
126
  }
136
- record.resourceSize += dataLength;
137
- if (encodedDataLength >= 0)
138
- record.transferSize += encodedDataLength;
127
+ request[exports.NETWORK_ENTRY_SUMBOL] = networkEntry;
128
+ this.results.push(networkEntry);
139
129
  }
140
- _onResponseReceived(event) {
141
- const { requestId, response, timestamp } = event;
142
- const record = this._findNetworkRecord(requestId);
143
- if (!record) {
130
+ async _onResponse(response) {
131
+ const request = response.request();
132
+ const networkEntry = this._findNetworkEntry(request);
133
+ if (!networkEntry)
144
134
  return;
145
- }
146
- Object.assign(record, {
147
- status: response.status,
148
- response,
149
- responseReceivedTime: timestamp,
150
- transferSize: response.encodedDataLength,
151
- });
152
- }
153
- _onLoadingFinished(event) {
154
- const { requestId, timestamp, encodedDataLength } = event;
155
- this._requestCompleted(requestId, timestamp, encodedDataLength);
156
- }
157
- _onLoadingFailed(event) {
158
- const { requestId, timestamp } = event;
159
- this._requestCompleted(requestId, timestamp);
135
+ networkEntry.responseReceivedTime = epochTimeInSeconds();
136
+ networkEntry.response = {
137
+ url: response.url(),
138
+ status: response.status(),
139
+ statusText: response.statusText(),
140
+ headers: {},
141
+ mimeType: 'x-unknown',
142
+ redirectURL: networkEntry.response.redirectURL,
143
+ };
144
+ const page = request.frame().page();
145
+ this._addBarrier(page, request.allHeaders().then(reqHeaders => {
146
+ networkEntry.request.headers = reqHeaders;
147
+ networkEntry.request.referrer = reqHeaders?.referer;
148
+ }));
149
+ this._addBarrier(page, response.serverAddr().then(server => {
150
+ networkEntry.response.remoteIPAddress = server?.ipAddress;
151
+ networkEntry.response.remotePort = server?.port;
152
+ }));
153
+ this._addBarrier(page, response.securityDetails().then(details => {
154
+ if (details)
155
+ networkEntry.response.securityDetails = details;
156
+ }));
157
+ this._addBarrier(page, response.allHeaders().then(resHeaders => {
158
+ networkEntry.response.headers = resHeaders;
159
+ const contentType = resHeaders['content-type'];
160
+ if (contentType)
161
+ networkEntry.response.mimeType = contentType.split(';')[0];
162
+ }));
160
163
  }
161
- _requestCompleted(requestId, endTime, encodedDataLength) {
162
- const record = this._findNetworkRecord(requestId);
163
- if (!record) {
164
+ async _onRequestCompleted(request) {
165
+ const networkEntry = this._findNetworkEntry(request);
166
+ if (!networkEntry)
164
167
  return;
165
- }
166
- if (encodedDataLength >= 0) {
167
- record.transferSize = encodedDataLength;
168
- }
169
- record.loadEndTime = endTime;
170
- record.timings = this.calculateTimings(record);
171
- this.results.push(record);
172
- /**
173
- * When there is DNS failure, browsers keeps retrying requests which
174
- * might result in incorrect timings so we get remove them to measure only once
175
- */
176
- this._InflightRequestMap.delete(requestId);
177
- }
178
- /**
179
- * Account for missing response received event and also adjust the
180
- * response received event based on when first byte event was recorded
181
- */
182
- getResponseReceivedTime(timing, responseReceivedTime) {
183
- if (timing == null) {
184
- return responseReceivedTime;
185
- }
186
- const startTime = timing.requestTime;
187
- const headersReceivedTime = startTime + timing.receiveHeadersEnd / 1000;
188
- if (responseReceivedTime < 0 ||
189
- responseReceivedTime > headersReceivedTime) {
190
- responseReceivedTime = headersReceivedTime;
191
- }
192
- if (startTime > responseReceivedTime) {
193
- responseReceivedTime = startTime;
194
- }
195
- return responseReceivedTime;
196
- }
197
- /**
198
- * The timing calculations are based on the chrome devtools frontend
199
- * https://github.com/ChromeDevTools/devtools-frontend/blob/7f5478d8ceb7586f23f4073ab5c2085dac1ec26a/front_end/network/RequestTimingView.js#L98-L193
200
- */
201
- calculateTimings(record) {
202
- const result = {
168
+ networkEntry.loadEndTime = epochTimeInSeconds();
169
+ const timing = request.timing();
170
+ const { loadEndTime, requestSentTime } = networkEntry;
171
+ networkEntry.timings = {
203
172
  blocked: -1,
204
- queueing: -1,
205
- proxy: -1,
206
173
  dns: -1,
207
174
  ssl: -1,
208
175
  connect: -1,
@@ -211,22 +178,6 @@ class NetworkManager {
211
178
  receive: -1,
212
179
  total: -1,
213
180
  };
214
- const { requestSentTime, loadEndTime, responseReceivedTime } = record;
215
- /**
216
- * Handle when request failed and no responseReceived event was
217
- * fired for that particular request
218
- * Eg: connection refused by remote host
219
- */
220
- const response = record.response || {
221
- timing: null,
222
- fromServiceWorker: false,
223
- };
224
- const toMilliseconds = (time) => (time === -1 ? -1 : time * 1000);
225
- const calculateDiffInMs = (name, start, end) => {
226
- if (start < Number.MAX_VALUE && start <= end) {
227
- result[name] = toMilliseconds(end - start);
228
- }
229
- };
230
181
  const firstPositive = (numbers) => {
231
182
  for (let i = 0; i < numbers.length; ++i) {
232
183
  if (numbers[i] > 0) {
@@ -235,62 +186,70 @@ class NetworkManager {
235
186
  }
236
187
  return null;
237
188
  };
238
- /**
239
- * requestTime is baseline in seconds, rest of the timing data are ticks in milliseconds
240
- * from the requestTime, so we calculate the offset from that
241
- */
242
- const addOffsetRange = (name, start, end) => {
243
- if (start >= 0 && end >= 0) {
244
- calculateDiffInMs(name, startTime + start / 1000, startTime + end / 1000);
245
- }
189
+ const roundMilliSecs = (value) => {
190
+ return Math.floor(value * 1000) / 1000;
246
191
  };
247
- const timing = response.timing;
248
- const actResRcvdTime = this.getResponseReceivedTime(timing, responseReceivedTime);
249
- const issueTime = requestSentTime;
250
- const startTime = timing == null ? -1 : timing.requestTime;
251
- const endTime = firstPositive([loadEndTime, actResRcvdTime]) || startTime;
252
- if (timing == null) {
253
- const start = issueTime !== -1 ? issueTime : startTime !== -1 ? startTime : 0;
254
- const middle = actResRcvdTime === -1 ? Number.MAX_VALUE : actResRcvdTime;
255
- const end = endTime === -1 ? Number.MAX_VALUE : endTime;
256
- calculateDiffInMs('total', start, end);
257
- calculateDiffInMs('blocked', start, middle);
258
- calculateDiffInMs('receive', middle, end);
259
- // Check if the request is blocked/stalled for the whole timeframe and
260
- // calculate timings appropriately for that request
261
- if (!isFinite(result['blocked'])) {
262
- result['blocked'] = result['total'];
263
- }
264
- return result;
265
- }
266
- calculateDiffInMs('total', issueTime < startTime ? issueTime : startTime, endTime);
267
- if (issueTime < startTime) {
268
- calculateDiffInMs('queueing', issueTime, startTime);
269
- }
270
- const responseReceived = toMilliseconds(actResRcvdTime - startTime);
271
- if (response.fromServiceWorker) {
272
- addOffsetRange('blocked', 0, timing.workerStart);
273
- addOffsetRange('wait', timing.sendEnd, responseReceived);
274
- }
275
- else if (!timing.pushStart) {
276
- const blockingEnd = firstPositive([
277
- timing.dnsStart,
278
- timing.connectStart,
279
- timing.sendStart,
280
- responseReceived,
281
- ]) || 0;
282
- addOffsetRange('blocked', 0, blockingEnd);
283
- addOffsetRange('proxy', timing.proxyStart, timing.proxyEnd);
284
- addOffsetRange('dns', timing.dnsStart, timing.dnsEnd);
285
- addOffsetRange('connect', timing.connectStart, timing.connectEnd);
286
- addOffsetRange('ssl', timing.sslStart, timing.sslEnd);
287
- addOffsetRange('send', timing.sendStart, timing.sendEnd);
288
- addOffsetRange('wait', Math.max(timing.sendEnd, timing.connectEnd, timing.dnsEnd, timing.proxyEnd, blockingEnd), responseReceived);
192
+ if (timing.startTime === 0) {
193
+ // Convert to milliseconds before round off
194
+ const total = roundMilliSecs((loadEndTime - requestSentTime) * 1000);
195
+ networkEntry.timings.total = total;
196
+ return;
289
197
  }
290
- calculateDiffInMs('receive', actResRcvdTime, endTime);
291
- return result;
198
+ const blocked = roundMilliSecs(firstPositive([
199
+ timing.domainLookupStart,
200
+ timing.connectStart,
201
+ timing.requestStart,
202
+ ])) || -1;
203
+ const dns = timing.domainLookupEnd !== -1
204
+ ? roundMilliSecs(timing.domainLookupEnd - timing.domainLookupStart)
205
+ : -1;
206
+ const connect = timing.connectEnd !== -1
207
+ ? roundMilliSecs(timing.connectEnd - timing.connectStart)
208
+ : -1;
209
+ const ssl = timing.secureConnectionStart !== -1
210
+ ? roundMilliSecs(timing.connectEnd - timing.secureConnectionStart)
211
+ : -1;
212
+ const wait = timing.responseStart !== -1
213
+ ? roundMilliSecs(timing.responseStart - timing.requestStart)
214
+ : -1;
215
+ const receive = timing.responseEnd !== -1
216
+ ? roundMilliSecs(timing.responseEnd - timing.responseStart)
217
+ : -1;
218
+ const total = [blocked, dns, connect, wait, receive].reduce((pre, cur) => (cur > 0 ? cur + pre : pre), 0);
219
+ networkEntry.timings = {
220
+ blocked,
221
+ dns,
222
+ connect,
223
+ ssl,
224
+ wait,
225
+ send: 0,
226
+ receive,
227
+ total,
228
+ };
229
+ const page = request.frame().page();
230
+ // For aborted/failed requests sizes will not be present
231
+ this._addBarrier(page, request.sizes().then(sizes => {
232
+ networkEntry.request.bytes =
233
+ sizes.requestHeadersSize + sizes.requestBodySize;
234
+ networkEntry.request.body = {
235
+ bytes: sizes.requestBodySize,
236
+ };
237
+ networkEntry.response.bytes =
238
+ sizes.responseHeadersSize + sizes.responseBodySize;
239
+ networkEntry.response.body = {
240
+ bytes: sizes.responseBodySize,
241
+ };
242
+ networkEntry.transferSize = sizes.responseBodySize;
243
+ }));
292
244
  }
293
- stop() {
245
+ async stop() {
246
+ await Promise.all(this._barrierPromises);
247
+ const context = this.driver.context;
248
+ context.off('request', this._onRequest.bind(this));
249
+ context.off('response', this._onResponse.bind(this));
250
+ context.off('requestfinished', this._onRequestCompleted.bind(this));
251
+ context.off('requestfailed', this._onRequestCompleted.bind(this));
252
+ this._barrierPromises.clear();
294
253
  return this.results;
295
254
  }
296
255
  }
@@ -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,28 +22,13 @@
22
22
  * THE SOFTWARE.
23
23
  *
24
24
  */
25
- import { CDPSession } from 'playwright-chromium';
26
- export interface Metrics {
27
- Timestamp?: number;
28
- Documents?: number;
29
- Frames?: number;
30
- JSEventListeners?: number;
31
- Nodes?: number;
32
- LayoutCount?: number;
33
- RecalcStyleCount?: number;
34
- LayoutDuration?: number;
35
- RecalcStyleDuration?: number;
36
- ScriptDuration?: number;
37
- TaskDuration?: number;
38
- JSHeapUsedSize?: number;
39
- JSHeapTotalSize?: number;
40
- }
25
+ import { Driver, PageMetrics } from '../common_types';
41
26
  export declare class PerformanceManager {
42
- private client;
43
- constructor(client: CDPSession);
27
+ private driver;
28
+ constructor(driver: Driver);
44
29
  start(): Promise<void>;
45
30
  stop(): Promise<void>;
46
- getMetrics(): Promise<Metrics>;
31
+ getMetrics(): Promise<PageMetrics>;
47
32
  private buildMetricsObject;
48
33
  }
49
34
  //# sourceMappingURL=performance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/plugins/performance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAkBjD,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEhC,KAAK;IAIL,IAAI;IAIJ,UAAU;IAKhB,OAAO,CAAC,kBAAkB;CAO3B"}
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/plugins/performance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAkBtD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE5B,KAAK;IAIL,IAAI;IAIJ,UAAU;IAKhB,OAAO,CAAC,kBAAkB;CAO3B"}
@@ -41,17 +41,17 @@ const supportedMetrics = new Set([
41
41
  'JSHeapTotalSize',
42
42
  ]);
43
43
  class PerformanceManager {
44
- constructor(client) {
45
- this.client = client;
44
+ constructor(driver) {
45
+ this.driver = driver;
46
46
  }
47
47
  async start() {
48
- await this.client.send('Performance.enable');
48
+ await this.driver.client.send('Performance.enable');
49
49
  }
50
50
  async stop() {
51
- await this.client.send('Performance.disable');
51
+ await this.driver.client.send('Performance.disable');
52
52
  }
53
53
  async getMetrics() {
54
- const { metrics } = await this.client.send('Performance.getMetrics');
54
+ const { metrics } = await this.driver.client.send('Performance.getMetrics');
55
55
  return this.buildMetricsObject(metrics);
56
56
  }
57
57
  buildMetricsObject(metrics = []) {
@@ -1 +1 @@
1
- {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/plugins/performance.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAIH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS;IACvC,WAAW;IACX,WAAW;IACX,QAAQ;IACR,kBAAkB;IAClB,OAAO;IACP,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,iBAAiB;CAClB,CAAC,CAAC;AAkBH,MAAa,kBAAkB;IAC7B,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAE1C,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,kBAAkB,CAAC,OAAO,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;SAC3E;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAvBD,gDAuBC"}
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/plugins/performance.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAIH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS;IACvC,WAAW;IACX,WAAW;IACX,QAAQ;IACR,kBAAkB;IAClB,OAAO;IACP,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAa,kBAAkB;IAC7B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,kBAAkB,CAAC,OAAO,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;SAC3E;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAvBD,gDAuBC"}
@@ -22,19 +22,23 @@
22
22
  * THE SOFTWARE.
23
23
  *
24
24
  */
25
- import { PluginOutput } from '../common_types';
25
+ import { PluginOutput, Driver } from '../common_types';
26
26
  import { BrowserConsole, NetworkManager, PerformanceManager, Tracing, TraceOptions } from './';
27
- import { Driver } from '../core/gatherer';
28
27
  import { Step } from '../dsl';
29
28
  declare type PluginType = 'network' | 'trace' | 'performance' | 'browserconsole';
30
29
  declare type Plugin = NetworkManager | Tracing | PerformanceManager | BrowserConsole;
31
30
  declare type PluginOptions = TraceOptions;
32
31
  export declare class PluginManager {
33
32
  private driver;
34
- protected plugins: Map<string, Plugin>;
33
+ protected plugins: Map<PluginType, Plugin>;
34
+ PLUGIN_TYPES: Array<PluginType>;
35
35
  constructor(driver: Driver);
36
- start(type: PluginType, options?: PluginOptions): Promise<Plugin>;
37
- get<T extends Plugin>(Type: new (...args: any[]) => T): T;
36
+ register(type: PluginType, options: PluginOptions): Plugin;
37
+ registerAll(options: PluginOptions): void;
38
+ unregisterAll(): void;
39
+ stop(type: PluginType): Promise<void | import("../common_types").NetworkInfo[] | import("../common_types").BrowserMessage[] | Partial<PluginOutput>>;
40
+ start(type: PluginType): Promise<Plugin>;
41
+ get(type: PluginType): Plugin;
38
42
  onStep(step: Step): void;
39
43
  output(): Promise<PluginOutput>;
40
44
  }
@@ -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,iBAAiB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,YAAY,EACb,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,aAAK,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,CAAC;AACzE,aAAK,MAAM,GAAG,cAAc,GAAG,OAAO,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAC7E,aAAK,aAAa,GAAG,YAAY,CAAC;AAElC,qBAAa,aAAa;IAGZ,OAAO,CAAC,MAAM;IAF1B,SAAS,CAAC,OAAO,sBAA6B;gBAE1B,MAAM,EAAE,MAAM;IAE5B,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa;IAyBrD,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;IAIzD,MAAM,CAAC,IAAI,EAAE,IAAI;IAKX,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAkBtC"}
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,aAAK,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,CAAC;AACzE,aAAK,MAAM,GAAG,cAAc,GAAG,OAAO,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAC7E,aAAK,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"}