@elastic/synthetics 1.0.0-beta.4 → 1.0.0-beta.41

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 (220) hide show
  1. package/README.md +4 -3
  2. package/dist/cli.js +137 -160
  3. package/dist/cli.js.map +1 -1
  4. package/dist/common_types.d.ts +161 -31
  5. package/dist/common_types.d.ts.map +1 -1
  6. package/dist/config.d.ts +3 -5
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +7 -6
  9. package/dist/config.js.map +1 -1
  10. package/dist/core/browser-service.d.ts +1 -1
  11. package/dist/core/browser-service.d.ts.map +1 -1
  12. package/dist/core/browser-service.js +7 -6
  13. package/dist/core/browser-service.js.map +1 -1
  14. package/dist/core/expect.d.ts +25 -25
  15. package/dist/core/expect.d.ts.map +1 -1
  16. package/dist/core/expect.js.map +1 -1
  17. package/dist/core/gatherer.d.ts +4 -8
  18. package/dist/core/gatherer.d.ts.map +1 -1
  19. package/dist/core/gatherer.js +53 -15
  20. package/dist/core/gatherer.js.map +1 -1
  21. package/dist/core/index.d.ts +5 -1
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +23 -11
  24. package/dist/core/index.js.map +1 -1
  25. package/dist/core/logger.d.ts +0 -1
  26. package/dist/core/logger.d.ts.map +1 -1
  27. package/dist/core/logger.js +3 -16
  28. package/dist/core/logger.js.map +1 -1
  29. package/dist/core/runner.d.ts +12 -63
  30. package/dist/core/runner.d.ts.map +1 -1
  31. package/dist/core/runner.js +156 -90
  32. package/dist/core/runner.js.map +1 -1
  33. package/dist/core/transform.d.ts +37 -0
  34. package/dist/core/transform.d.ts.map +1 -0
  35. package/dist/core/transform.js +148 -0
  36. package/dist/core/transform.js.map +1 -0
  37. package/dist/dsl/index.js +5 -1
  38. package/dist/dsl/index.js.map +1 -1
  39. package/dist/dsl/journey.d.ts +9 -4
  40. package/dist/dsl/journey.d.ts.map +1 -1
  41. package/dist/dsl/journey.js +37 -9
  42. package/dist/dsl/journey.js.map +1 -1
  43. package/dist/dsl/monitor.d.ts +83 -0
  44. package/dist/dsl/monitor.d.ts.map +1 -0
  45. package/dist/dsl/monitor.js +108 -0
  46. package/dist/dsl/monitor.js.map +1 -0
  47. package/dist/dsl/step.d.ts +3 -2
  48. package/dist/dsl/step.d.ts.map +1 -1
  49. package/dist/dsl/step.js +6 -1
  50. package/dist/dsl/step.js.map +1 -1
  51. package/dist/formatter/javascript.d.ts +98 -0
  52. package/dist/formatter/javascript.d.ts.map +1 -0
  53. package/dist/formatter/javascript.js +298 -0
  54. package/dist/formatter/javascript.js.map +1 -0
  55. package/dist/generator/index.d.ts +24 -0
  56. package/dist/generator/index.d.ts.map +1 -0
  57. package/dist/generator/index.js +241 -0
  58. package/dist/generator/index.js.map +1 -0
  59. package/dist/{reporters/reporter.js → generator/utils.d.ts} +5 -3
  60. package/dist/generator/utils.d.ts.map +1 -0
  61. package/dist/generator/utils.js +84 -0
  62. package/dist/generator/utils.js.map +1 -0
  63. package/dist/helpers.d.ts +28 -3
  64. package/dist/helpers.d.ts.map +1 -1
  65. package/dist/helpers.js +152 -20
  66. package/dist/helpers.js.map +1 -1
  67. package/dist/index.d.ts +6 -7
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +5 -26
  70. package/dist/index.js.map +1 -1
  71. package/dist/loader.d.ts +34 -0
  72. package/dist/loader.d.ts.map +1 -0
  73. package/dist/loader.js +149 -0
  74. package/dist/loader.js.map +1 -0
  75. package/dist/locations/index.d.ts +45 -0
  76. package/dist/locations/index.d.ts.map +1 -0
  77. package/dist/locations/index.js +83 -0
  78. package/dist/locations/index.js.map +1 -0
  79. package/dist/{reporters/reporter.d.ts → locations/public-locations.d.ts} +12 -8
  80. package/dist/locations/public-locations.d.ts.map +1 -0
  81. package/dist/locations/public-locations.js +41 -0
  82. package/dist/locations/public-locations.js.map +1 -0
  83. package/dist/options.d.ts +41 -0
  84. package/dist/options.d.ts.map +1 -0
  85. package/dist/options.js +198 -0
  86. package/dist/options.js.map +1 -0
  87. package/dist/plugins/browser-console.d.ts +5 -4
  88. package/dist/plugins/browser-console.d.ts.map +1 -1
  89. package/dist/plugins/browser-console.js +44 -24
  90. package/dist/plugins/browser-console.js.map +1 -1
  91. package/dist/plugins/index.js +5 -1
  92. package/dist/plugins/index.js.map +1 -1
  93. package/dist/plugins/network.d.ts +20 -33
  94. package/dist/plugins/network.d.ts.map +1 -1
  95. package/dist/plugins/network.js +177 -216
  96. package/dist/plugins/network.js.map +1 -1
  97. package/dist/plugins/performance.d.ts +4 -19
  98. package/dist/plugins/performance.d.ts.map +1 -1
  99. package/dist/plugins/performance.js +6 -5
  100. package/dist/plugins/performance.js.map +1 -1
  101. package/dist/plugins/plugin-manager.d.ts +9 -5
  102. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  103. package/dist/plugins/plugin-manager.js +46 -30
  104. package/dist/plugins/plugin-manager.js.map +1 -1
  105. package/dist/plugins/tracing.d.ts +6 -6
  106. package/dist/plugins/tracing.d.ts.map +1 -1
  107. package/dist/plugins/tracing.js +10 -7
  108. package/dist/plugins/tracing.js.map +1 -1
  109. package/dist/push/bundler.d.ts +35 -0
  110. package/dist/push/bundler.d.ts.map +1 -0
  111. package/dist/push/bundler.js +131 -0
  112. package/dist/push/bundler.js.map +1 -0
  113. package/dist/push/index.d.ts +9 -0
  114. package/dist/push/index.d.ts.map +1 -0
  115. package/dist/push/index.js +227 -0
  116. package/dist/push/index.js.map +1 -0
  117. package/dist/push/kibana_api.d.ts +56 -0
  118. package/dist/push/kibana_api.d.ts.map +1 -0
  119. package/dist/push/kibana_api.js +135 -0
  120. package/dist/push/kibana_api.js.map +1 -0
  121. package/dist/push/monitor.d.ts +51 -0
  122. package/dist/push/monitor.d.ts.map +1 -0
  123. package/dist/push/monitor.js +244 -0
  124. package/dist/push/monitor.js.map +1 -0
  125. package/dist/{parse_args.d.ts → push/plugin.d.ts} +9 -6
  126. package/dist/push/plugin.d.ts.map +1 -0
  127. package/dist/push/plugin.js +66 -0
  128. package/dist/push/plugin.js.map +1 -0
  129. package/dist/push/request.d.ts +45 -0
  130. package/dist/push/request.d.ts.map +1 -0
  131. package/dist/push/request.js +109 -0
  132. package/dist/push/request.js.map +1 -0
  133. package/dist/push/utils.d.ts +31 -0
  134. package/dist/push/utils.d.ts.map +1 -0
  135. package/dist/push/utils.js +64 -0
  136. package/dist/push/utils.js.map +1 -0
  137. package/dist/reporters/base.d.ts +14 -6
  138. package/dist/reporters/base.d.ts.map +1 -1
  139. package/dist/reporters/base.js +58 -50
  140. package/dist/reporters/base.js.map +1 -1
  141. package/dist/reporters/index.d.ts +18 -8
  142. package/dist/reporters/index.d.ts.map +1 -1
  143. package/dist/reporters/index.js.map +1 -1
  144. package/dist/reporters/json.d.ts +17 -62
  145. package/dist/reporters/json.d.ts.map +1 -1
  146. package/dist/reporters/json.js +149 -179
  147. package/dist/reporters/json.js.map +1 -1
  148. package/dist/reporters/junit.d.ts +7 -1
  149. package/dist/reporters/junit.d.ts.map +1 -1
  150. package/dist/reporters/junit.js +90 -95
  151. package/dist/reporters/junit.js.map +1 -1
  152. package/dist/sdk/lh-trace-processor.d.ts +35 -9
  153. package/dist/sdk/lh-trace-processor.d.ts.map +1 -1
  154. package/dist/sdk/lh-trace-processor.js +114 -53
  155. package/dist/sdk/lh-trace-processor.js.map +1 -1
  156. package/dist/sdk/trace-metrics.d.ts +4 -4
  157. package/dist/sdk/trace-metrics.d.ts.map +1 -1
  158. package/dist/sdk/trace-metrics.js +3 -4
  159. package/dist/sdk/trace-metrics.js.map +1 -1
  160. package/dist/sdk/trace-processor.d.ts +11 -3
  161. package/dist/sdk/trace-processor.d.ts.map +1 -1
  162. package/dist/sdk/trace-processor.js +17 -9
  163. package/dist/sdk/trace-processor.js.map +1 -1
  164. package/package.json +39 -24
  165. package/src/cli.ts +219 -151
  166. package/src/common_types.ts +193 -31
  167. package/src/config.ts +3 -6
  168. package/src/core/expect.ts +58 -24
  169. package/src/core/gatherer.ts +64 -24
  170. package/src/core/index.ts +36 -15
  171. package/src/core/logger.ts +1 -12
  172. package/src/core/runner.ts +151 -136
  173. package/src/core/transform.ts +160 -0
  174. package/src/dsl/journey.ts +39 -6
  175. package/src/dsl/monitor.ts +140 -0
  176. package/src/dsl/step.ts +9 -2
  177. package/src/formatter/javascript.ts +367 -0
  178. package/src/generator/index.ts +308 -0
  179. package/src/generator/utils.ts +84 -0
  180. package/src/helpers.ts +159 -13
  181. package/src/index.ts +22 -22
  182. package/src/loader.ts +167 -0
  183. package/src/locations/index.ts +95 -0
  184. package/src/{reporters/reporter.ts → locations/public-locations.ts} +12 -9
  185. package/src/options.ts +227 -0
  186. package/src/plugins/browser-console.ts +30 -8
  187. package/src/plugins/network.ts +208 -267
  188. package/src/plugins/performance.ts +6 -22
  189. package/src/plugins/plugin-manager.ts +49 -31
  190. package/src/plugins/tracing.ts +8 -9
  191. package/src/push/bundler.ts +112 -0
  192. package/src/push/index.ts +282 -0
  193. package/src/push/kibana_api.ts +191 -0
  194. package/src/push/monitor.ts +276 -0
  195. package/src/push/plugin.ts +66 -0
  196. package/src/push/request.ts +141 -0
  197. package/src/push/utils.ts +77 -0
  198. package/src/reporters/base.ts +63 -52
  199. package/src/reporters/index.ts +26 -3
  200. package/src/reporters/json.ts +183 -202
  201. package/src/reporters/junit.ts +98 -93
  202. package/src/sdk/lh-trace-processor.ts +132 -68
  203. package/src/sdk/trace-metrics.ts +8 -4
  204. package/src/sdk/trace-processor.ts +28 -13
  205. package/templates/.github/workflows/run-synthetics.yml +27 -0
  206. package/templates/README.md +21 -0
  207. package/templates/journeys/advanced-example-helpers.ts +54 -0
  208. package/templates/journeys/advanced-example.journey.ts +43 -0
  209. package/templates/journeys/example.journey.ts +18 -0
  210. package/templates/lightweight/heartbeat.yml +8 -0
  211. package/templates/synthetics.config.ts +35 -0
  212. package/CHANGELOG.md +0 -131
  213. package/NOTICE.txt +0 -221
  214. package/dist/parse_args.d.ts.map +0 -1
  215. package/dist/parse_args.js +0 -95
  216. package/dist/parse_args.js.map +0 -1
  217. package/dist/reporters/reporter.d.ts.map +0 -1
  218. package/dist/reporters/reporter.js.map +0 -1
  219. package/dist/tsconfig.tsbuildinfo +0 -1888
  220. package/src/parse_args.ts +0 -135
@@ -24,185 +24,154 @@
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();
32
- this.results = [];
33
- this._currentStep = null;
43
+ driver;
44
+ _browser;
45
+ _barrierPromises = new Set();
46
+ results = [];
47
+ _currentStep = null;
48
+ constructor(driver) {
49
+ this.driver = driver;
34
50
  }
35
- async start(client) {
51
+ /**
52
+ * Adds a protection barrier aganist all asynchronous extract operations from
53
+ * request/response object that are happening during page lifecycle, If the
54
+ * page is closed during the extraction, the barrier enforces those operations
55
+ * to not result in exception
56
+ */
57
+ _addBarrier(page, promise) {
58
+ if (!page)
59
+ return;
60
+ const race = Promise.race([
61
+ new Promise(resolve => page.on('close', () => {
62
+ this._barrierPromises.delete(race);
63
+ resolve();
64
+ })),
65
+ promise,
66
+ ]);
67
+ this._barrierPromises.add(race);
68
+ race.then(() => this._barrierPromises.delete(race));
69
+ }
70
+ async start() {
71
+ const { client, context } = this.driver;
36
72
  const { product } = await client.send('Browser.getVersion');
37
73
  const [name, version] = product.split('/');
38
74
  this._browser = { name, version };
39
75
  await client.send('Network.enable');
40
76
  /**
41
- * Listen for all network events
77
+ * Listen for all network events from PW context
42
78
  */
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));
79
+ context.on('request', this._onRequest.bind(this));
80
+ context.on('response', this._onResponse.bind(this));
81
+ context.on('requestfinished', this._onRequestCompleted.bind(this));
82
+ context.on('requestfailed', this._onRequestCompleted.bind(this));
49
83
  }
50
- _findNetworkRecord(requestId) {
51
- return this._InflightRequestMap.get(requestId);
84
+ _findNetworkEntry(request) {
85
+ return request[exports.NETWORK_ENTRY_SUMBOL];
52
86
  }
53
- _onRequestWillBeSent(event) {
54
- const { requestId, request, timestamp, type, loaderId } = event;
55
- const { url, method } = request;
87
+ _onRequest(request) {
88
+ const url = request.url();
56
89
  /**
57
90
  * Data URI should not show up as network requests
58
91
  */
59
92
  if (url.startsWith('data:')) {
60
93
  return;
61
94
  }
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, {
95
+ const timestamp = (0, helpers_1.getTimestamp)();
96
+ const networkEntry = {
98
97
  browser: this._browser,
99
98
  step: this._currentStep,
100
- timestamp: helpers_1.getTimestamp(),
99
+ timestamp,
101
100
  url,
102
- request,
103
- type,
104
- method,
105
- requestSentTime: timestamp,
106
- isNavigationRequest,
107
- status: 0,
101
+ type: request.resourceType(),
102
+ request: {
103
+ url,
104
+ method: request.method(),
105
+ headers: {},
106
+ body: {
107
+ bytes: request.postDataBuffer()?.length || 0,
108
+ },
109
+ },
110
+ response: {
111
+ status: -1,
112
+ headers: {},
113
+ mimeType: 'x-unknown',
114
+ redirectURL: '',
115
+ },
116
+ isNavigationRequest: request.isNavigationRequest(),
117
+ requestSentTime: epochTimeInSeconds(),
108
118
  loadEndTime: -1,
109
119
  responseReceivedTime: -1,
110
- response: null,
111
120
  resourceSize: 0,
112
121
  transferSize: 0,
113
122
  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
123
  };
129
- }
130
- _onDataReceived(event) {
131
- const { requestId, dataLength, encodedDataLength } = event;
132
- const record = this._findNetworkRecord(requestId);
133
- if (!record) {
134
- return;
124
+ if (request.redirectedFrom()) {
125
+ const fromEntry = this._findNetworkEntry(request.redirectedFrom());
126
+ if (fromEntry)
127
+ fromEntry.response.redirectURL = request.url();
135
128
  }
136
- record.resourceSize += dataLength;
137
- if (encodedDataLength >= 0)
138
- record.transferSize += encodedDataLength;
129
+ request[exports.NETWORK_ENTRY_SUMBOL] = networkEntry;
130
+ this.results.push(networkEntry);
139
131
  }
140
- _onResponseReceived(event) {
141
- const { requestId, response, timestamp } = event;
142
- const record = this._findNetworkRecord(requestId);
143
- if (!record) {
132
+ async _onResponse(response) {
133
+ const request = response.request();
134
+ const networkEntry = this._findNetworkEntry(request);
135
+ if (!networkEntry)
144
136
  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);
137
+ networkEntry.responseReceivedTime = epochTimeInSeconds();
138
+ networkEntry.response = {
139
+ url: response.url(),
140
+ status: response.status(),
141
+ statusText: response.statusText(),
142
+ headers: {},
143
+ mimeType: 'x-unknown',
144
+ redirectURL: networkEntry.response.redirectURL,
145
+ };
146
+ const page = request.frame().page();
147
+ this._addBarrier(page, request.allHeaders().then(reqHeaders => {
148
+ networkEntry.request.headers = reqHeaders;
149
+ networkEntry.request.referrer = reqHeaders?.referer;
150
+ }));
151
+ this._addBarrier(page, response.serverAddr().then(server => {
152
+ networkEntry.response.remoteIPAddress = server?.ipAddress;
153
+ networkEntry.response.remotePort = server?.port;
154
+ }));
155
+ this._addBarrier(page, response.securityDetails().then(details => {
156
+ if (details)
157
+ networkEntry.response.securityDetails = details;
158
+ }));
159
+ this._addBarrier(page, response.allHeaders().then(resHeaders => {
160
+ networkEntry.response.headers = resHeaders;
161
+ const contentType = resHeaders['content-type'];
162
+ if (contentType)
163
+ networkEntry.response.mimeType = contentType.split(';')[0];
164
+ }));
160
165
  }
161
- _requestCompleted(requestId, endTime, encodedDataLength) {
162
- const record = this._findNetworkRecord(requestId);
163
- if (!record) {
166
+ async _onRequestCompleted(request) {
167
+ const networkEntry = this._findNetworkEntry(request);
168
+ if (!networkEntry)
164
169
  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 = {
170
+ networkEntry.loadEndTime = epochTimeInSeconds();
171
+ const timing = request.timing();
172
+ const { loadEndTime, requestSentTime } = networkEntry;
173
+ networkEntry.timings = {
203
174
  blocked: -1,
204
- queueing: -1,
205
- proxy: -1,
206
175
  dns: -1,
207
176
  ssl: -1,
208
177
  connect: -1,
@@ -211,22 +180,6 @@ class NetworkManager {
211
180
  receive: -1,
212
181
  total: -1,
213
182
  };
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
183
  const firstPositive = (numbers) => {
231
184
  for (let i = 0; i < numbers.length; ++i) {
232
185
  if (numbers[i] > 0) {
@@ -235,62 +188,70 @@ class NetworkManager {
235
188
  }
236
189
  return null;
237
190
  };
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
- }
191
+ const roundMilliSecs = (value) => {
192
+ return Math.floor(value * 1000) / 1000;
246
193
  };
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);
194
+ if (timing.startTime === 0) {
195
+ // Convert to milliseconds before round off
196
+ const total = roundMilliSecs((loadEndTime - requestSentTime) * 1000);
197
+ networkEntry.timings.total = total;
198
+ return;
289
199
  }
290
- calculateDiffInMs('receive', actResRcvdTime, endTime);
291
- return result;
200
+ const blocked = roundMilliSecs(firstPositive([
201
+ timing.domainLookupStart,
202
+ timing.connectStart,
203
+ timing.requestStart,
204
+ ])) || -1;
205
+ const dns = timing.domainLookupEnd !== -1
206
+ ? roundMilliSecs(timing.domainLookupEnd - timing.domainLookupStart)
207
+ : -1;
208
+ const connect = timing.connectEnd !== -1
209
+ ? roundMilliSecs(timing.connectEnd - timing.connectStart)
210
+ : -1;
211
+ const ssl = timing.secureConnectionStart !== -1
212
+ ? roundMilliSecs(timing.connectEnd - timing.secureConnectionStart)
213
+ : -1;
214
+ const wait = timing.responseStart !== -1
215
+ ? roundMilliSecs(timing.responseStart - timing.requestStart)
216
+ : -1;
217
+ const receive = timing.responseEnd !== -1
218
+ ? roundMilliSecs(timing.responseEnd - timing.responseStart)
219
+ : -1;
220
+ const total = [blocked, dns, connect, wait, receive].reduce((pre, cur) => (cur > 0 ? cur + pre : pre), 0);
221
+ networkEntry.timings = {
222
+ blocked,
223
+ dns,
224
+ connect,
225
+ ssl,
226
+ wait,
227
+ send: 0,
228
+ receive,
229
+ total,
230
+ };
231
+ const page = request.frame().page();
232
+ // For aborted/failed requests sizes will not be present
233
+ this._addBarrier(page, request.sizes().then(sizes => {
234
+ networkEntry.request.bytes =
235
+ sizes.requestHeadersSize + sizes.requestBodySize;
236
+ networkEntry.request.body = {
237
+ bytes: sizes.requestBodySize,
238
+ };
239
+ const transferSize = sizes.responseHeadersSize + sizes.responseBodySize;
240
+ networkEntry.transferSize = transferSize;
241
+ networkEntry.response.bytes = transferSize;
242
+ networkEntry.response.body = {
243
+ bytes: sizes.responseBodySize,
244
+ };
245
+ }));
292
246
  }
293
- stop() {
247
+ async stop() {
248
+ await Promise.all(this._barrierPromises);
249
+ const context = this.driver.context;
250
+ context.off('request', this._onRequest.bind(this));
251
+ context.off('response', this._onResponse.bind(this));
252
+ context.off('requestfinished', this._onRequestCompleted.bind(this));
253
+ context.off('requestfailed', this._onRequestCompleted.bind(this));
254
+ this._barrierPromises.clear();
294
255
  return this.results;
295
256
  }
296
257
  }
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAKH,wCAA0C;AAE1C;;;;GAIG;AACH,SAAS,kBAAkB;IACzB,OAAO,IAAA,sBAAY,GAAE,GAAG,GAAG,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACU,QAAA,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAM/D,MAAa,cAAc;IAML;IALZ,QAAQ,CAAc;IACtB,gBAAgB,GAAG,IAAI,GAAG,EAAiB,CAAC;IACpD,OAAO,GAAuB,EAAE,CAAC;IACjC,YAAY,GAAkB,IAAI,CAAC;IAEnC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC;;;;;OAKG;IACK,WAAW,CAAC,IAAU,EAAE,OAAsB;QACpD,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACxB,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAC1B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CACH;YACD,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACxC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpC;;WAEG;QACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,iBAAiB,CACvB,OAAyB;QAEzB,OAAO,OAAO,CAAC,4BAAoB,CAAC,CAAC;IACvC,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B;;WAEG;QACH,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO;SACR;QAED,MAAM,SAAS,GAAG,IAAA,sBAAY,GAAE,CAAC;QACjC,MAAM,YAAY,GAAgB;YAChC,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,SAAS;YACT,GAAG;YACH,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE;YAC5B,OAAO,EAAE;gBACP,GAAG;gBACH,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;gBACxB,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE;oBACJ,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,MAAM,IAAI,CAAC;iBAC7C;aACF;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,CAAC,CAAC;gBACV,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,EAAE;aAChB;YACD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;YAClD,eAAe,EAAE,kBAAkB,EAAE;YACrC,WAAW,EAAE,CAAC,CAAC;YACf,oBAAoB,EAAE,CAAC,CAAC;YACxB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;YACnE,IAAI,SAAS;gBAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D;QAED,OAAO,CAAC,4BAAoB,CAAC,GAAG,YAAY,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,QAAkB;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,YAAY,CAAC,oBAAoB,GAAG,kBAAkB,EAAE,CAAC;QACzD,YAAY,CAAC,QAAQ,GAAG;YACtB,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE;YACjC,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW;SAC/C,CAAC;QAEF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,CACd,IAAI,EACJ,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrC,YAAY,CAAC,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;YAC1C,YAAY,CAAC,OAAO,CAAC,QAAQ,GAAG,UAAU,EAAE,OAAO,CAAC;QACtD,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,WAAW,CACd,IAAI,EACJ,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAClC,YAAY,CAAC,QAAQ,CAAC,eAAe,GAAG,MAAM,EAAE,SAAS,CAAC;YAC1D,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,EAAE,IAAI,CAAC;QAClD,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,WAAW,CACd,IAAI,EACJ,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACxC,IAAI,OAAO;gBAAE,YAAY,CAAC,QAAQ,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/D,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,WAAW,CACd,IAAI,EACJ,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;YAE3C,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,WAAW;gBACb,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,OAAgB;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,YAAY,CAAC,WAAW,GAAG,kBAAkB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;QACtD,YAAY,CAAC,OAAO,GAAG;YACrB,OAAO,EAAE,CAAC,CAAC;YACX,GAAG,EAAE,CAAC,CAAC;YACP,GAAG,EAAE,CAAC,CAAC;YACP,OAAO,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,CAAC,CAAC;YACR,IAAI,EAAE,CAAC,CAAC;YACR,OAAO,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,CAAC,CAAC;SACV,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,OAAiB,EAAE,EAAE;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBACvC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBAClB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;iBACnB;aACF;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACzC,CAAC,CAAC;QAEF,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;YAC1B,2CAA2C;YAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,WAAW,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;YACrE,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YACnC,OAAO;SACR;QAED,MAAM,OAAO,GACX,cAAc,CACZ,aAAa,CAAC;YACZ,MAAM,CAAC,iBAAiB;YACxB,MAAM,CAAC,YAAY;YACnB,MAAM,CAAC,YAAY;SACpB,CAAC,CACH,IAAI,CAAC,CAAC,CAAC;QACV,MAAM,GAAG,GACP,MAAM,CAAC,eAAe,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACnE,CAAC,CAAC,CAAC,CAAC,CAAC;QACT,MAAM,OAAO,GACX,MAAM,CAAC,UAAU,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;YACzD,CAAC,CAAC,CAAC,CAAC,CAAC;QACT,MAAM,GAAG,GACP,MAAM,CAAC,qBAAqB,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC;YAClE,CAAC,CAAC,CAAC,CAAC,CAAC;QACT,MAAM,IAAI,GACR,MAAM,CAAC,aAAa,KAAK,CAAC,CAAC;YACzB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;YAC5D,CAAC,CAAC,CAAC,CAAC,CAAC;QACT,MAAM,OAAO,GACX,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;YAC3D,CAAC,CAAC,CAAC,CAAC,CAAC;QACT,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CACzD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EACzC,CAAC,CACF,CAAC;QACF,YAAY,CAAC,OAAO,GAAG;YACrB,OAAO;YACP,GAAG;YACH,OAAO;YACP,GAAG;YACH,IAAI;YACJ,IAAI,EAAE,CAAC;YACP,OAAO;YACP,KAAK;SACN,CAAC;QAEF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACpC,wDAAwD;QACxD,IAAI,CAAC,WAAW,CACd,IAAI,EACJ,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,YAAY,CAAC,OAAO,CAAC,KAAK;gBACxB,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,eAAe,CAAC;YACnD,YAAY,CAAC,OAAO,CAAC,IAAI,GAAG;gBAC1B,KAAK,EAAE,KAAK,CAAC,eAAe;aAC7B,CAAC;YACF,MAAM,YAAY,GAAG,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,gBAAgB,CAAC;YACxE,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;YACzC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC;YAC3C,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG;gBAC3B,KAAK,EAAE,KAAK,CAAC,gBAAgB;aAC9B,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAhQD,wCAgQC"}
@@ -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,18 @@ const supportedMetrics = new Set([
41
41
  'JSHeapTotalSize',
42
42
  ]);
43
43
  class PerformanceManager {
44
- constructor(client) {
45
- this.client = client;
44
+ driver;
45
+ constructor(driver) {
46
+ this.driver = driver;
46
47
  }
47
48
  async start() {
48
- await this.client.send('Performance.enable');
49
+ await this.driver.client.send('Performance.enable');
49
50
  }
50
51
  async stop() {
51
- await this.client.send('Performance.disable');
52
+ await this.driver.client.send('Performance.disable');
52
53
  }
53
54
  async getMetrics() {
54
- const { metrics } = await this.client.send('Performance.getMetrics');
55
+ const { metrics } = await this.driver.client.send('Performance.getMetrics');
55
56
  return this.buildMetricsObject(metrics);
56
57
  }
57
58
  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;IACT;IAApB,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"}