@elastic/synthetics 1.0.0-beta.8 → 1.0.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 (220) hide show
  1. package/README.md +5 -4
  2. package/dist/cli.js +139 -165
  3. package/dist/cli.js.map +1 -1
  4. package/dist/common_types.d.ts +158 -34
  5. package/dist/common_types.d.ts.map +1 -1
  6. package/dist/config.d.ts +1 -0
  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 +5 -8
  18. package/dist/core/gatherer.d.ts.map +1 -1
  19. package/dist/core/gatherer.js +75 -17
  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 +10 -17
  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 +159 -92
  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 -7
  40. package/dist/dsl/journey.d.ts.map +1 -1
  41. package/dist/dsl/journey.js +32 -39
  42. package/dist/dsl/journey.js.map +1 -1
  43. package/dist/dsl/monitor.d.ts +93 -0
  44. package/dist/dsl/monitor.d.ts.map +1 -0
  45. package/dist/dsl/monitor.js +110 -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 +115 -0
  52. package/dist/formatter/javascript.d.ts.map +1 -0
  53. package/dist/formatter/javascript.js +331 -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 +36 -9
  64. package/dist/helpers.d.ts.map +1 -1
  65. package/dist/helpers.js +170 -24
  66. package/dist/helpers.js.map +1 -1
  67. package/dist/index.d.ts +5 -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 +153 -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 +42 -0
  84. package/dist/options.d.ts.map +1 -0
  85. package/dist/options.js +146 -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 +47 -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 +24 -31
  94. package/dist/plugins/network.d.ts.map +1 -1
  95. package/dist/plugins/network.js +226 -229
  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 +13 -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 +10 -0
  114. package/dist/push/index.d.ts.map +1 -0
  115. package/dist/push/index.js +235 -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 +55 -0
  122. package/dist/push/monitor.d.ts.map +1 -0
  123. package/dist/push/monitor.js +268 -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 +147 -177
  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 +38 -30
  165. package/src/cli.ts +223 -158
  166. package/src/common_types.ts +191 -34
  167. package/src/config.ts +1 -1
  168. package/src/core/expect.ts +58 -24
  169. package/src/core/gatherer.ts +92 -25
  170. package/src/core/index.ts +36 -15
  171. package/src/core/logger.ts +8 -12
  172. package/src/core/runner.ts +158 -148
  173. package/src/core/transform.ts +160 -0
  174. package/src/dsl/journey.ts +41 -21
  175. package/src/dsl/monitor.ts +152 -0
  176. package/src/dsl/step.ts +9 -2
  177. package/src/formatter/javascript.ts +414 -0
  178. package/src/generator/index.ts +308 -0
  179. package/src/generator/utils.ts +84 -0
  180. package/src/helpers.ts +182 -16
  181. package/src/index.ts +21 -22
  182. package/src/loader.ts +171 -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 +175 -0
  186. package/src/plugins/browser-console.ts +33 -8
  187. package/src/plugins/network.ts +266 -284
  188. package/src/plugins/performance.ts +6 -22
  189. package/src/plugins/plugin-manager.ts +49 -31
  190. package/src/plugins/tracing.ts +11 -9
  191. package/src/push/bundler.ts +112 -0
  192. package/src/push/index.ts +291 -0
  193. package/src/push/kibana_api.ts +191 -0
  194. package/src/push/monitor.ts +307 -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 +181 -201
  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 +9 -0
  211. package/templates/synthetics.config.ts +35 -0
  212. package/CHANGELOG.md +0 -181
  213. package/NOTICE.txt +0 -221
  214. package/dist/parse_args.d.ts.map +0 -1
  215. package/dist/parse_args.js +0 -98
  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 -1895
  220. package/src/parse_args.ts +0 -146
@@ -24,273 +24,270 @@
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
+ const logger_1 = require("../core/logger");
28
29
  const helpers_1 = require("../helpers");
30
+ /**
31
+ * Kibana UI expects the requestStartTime and loadEndTime to be baseline
32
+ * in seconds as they have the logic to convert it to milliseconds before
33
+ * using for offset calculation
34
+ */
35
+ function epochTimeInSeconds() {
36
+ return (0, helpers_1.getTimestamp)() / 1e6;
37
+ }
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
+ /**
53
+ * Used as a key in each Network Request to identify the
54
+ * associated request across distinct lifecycle events
55
+ */
56
+ exports.NETWORK_ENTRY_SUMBOL = Symbol.for('NetworkEntry');
29
57
  class NetworkManager {
30
- constructor() {
31
- this._InflightRequestMap = new Map();
32
- this.results = [];
33
- this._currentStep = null;
58
+ driver;
59
+ _browser;
60
+ _barrierPromises = new Set();
61
+ results = [];
62
+ _currentStep = null;
63
+ constructor(driver) {
64
+ this.driver = driver;
65
+ }
66
+ /**
67
+ * Adds a protection barrier aganist all asynchronous extract operations from
68
+ * request/response object that are happening during page lifecycle, If the
69
+ * page is closed during the extraction, the barrier enforces those operations
70
+ * to not result in exception
71
+ */
72
+ _addBarrier(page, promise) {
73
+ if (!page)
74
+ return;
75
+ const race = Promise.race([
76
+ new Promise(resolve => page.on('close', () => {
77
+ this._barrierPromises.delete(race);
78
+ resolve();
79
+ })),
80
+ promise,
81
+ ]);
82
+ this._barrierPromises.add(race);
83
+ race.then(() => this._barrierPromises.delete(race));
34
84
  }
35
- async start(client) {
85
+ async start() {
86
+ (0, logger_1.log)(`Plugins: started collecting network events`);
87
+ const { client, context } = this.driver;
36
88
  const { product } = await client.send('Browser.getVersion');
37
89
  const [name, version] = product.split('/');
38
90
  this._browser = { name, version };
39
- await client.send('Network.enable');
40
91
  /**
41
- * Listen for all network events
92
+ * Listen for all network events from PW context
42
93
  */
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));
94
+ context.on('request', this._onRequest.bind(this));
95
+ context.on('response', this._onResponse.bind(this));
96
+ context.on('requestfinished', this._onRequestCompleted.bind(this));
97
+ context.on('requestfailed', this._onRequestCompleted.bind(this));
49
98
  }
50
- _findNetworkRecord(requestId) {
51
- return this._InflightRequestMap.get(requestId);
99
+ _findNetworkEntry(request) {
100
+ return request[exports.NETWORK_ENTRY_SUMBOL];
52
101
  }
53
- _onRequestWillBeSent(event) {
54
- const { requestId, request, timestamp, type, loaderId } = event;
55
- const { url, method } = request;
102
+ _onRequest(request) {
103
+ const url = request.url();
56
104
  /**
57
105
  * Data URI should not show up as network requests
58
106
  */
59
107
  if (url.startsWith('data:')) {
60
108
  return;
61
109
  }
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, {
110
+ const timestamp = (0, helpers_1.getTimestamp)();
111
+ const networkEntry = {
98
112
  browser: this._browser,
99
113
  step: this._currentStep,
100
- timestamp: helpers_1.getTimestamp(),
114
+ timestamp,
101
115
  url,
102
- request,
103
- type,
104
- method,
105
- requestSentTime: timestamp,
106
- isNavigationRequest,
107
- status: 0,
116
+ type: request.resourceType(),
117
+ request: {
118
+ url,
119
+ method: request.method(),
120
+ headers: request.headers(),
121
+ body: {
122
+ bytes: request.postDataBuffer()?.length || 0,
123
+ },
124
+ },
125
+ response: {
126
+ status: -1,
127
+ headers: {},
128
+ mimeType: 'x-unknown',
129
+ redirectURL: '',
130
+ },
131
+ isNavigationRequest: request.isNavigationRequest(),
132
+ requestSentTime: epochTimeInSeconds(),
108
133
  loadEndTime: -1,
109
134
  responseReceivedTime: -1,
110
- response: null,
111
135
  resourceSize: 0,
112
136
  transferSize: 0,
113
- 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,
137
+ timings: {
138
+ blocked: -1,
139
+ dns: -1,
140
+ ssl: -1,
141
+ connect: -1,
142
+ send: -1,
143
+ wait: -1,
144
+ receive: -1,
145
+ total: -1,
146
+ },
128
147
  };
129
- }
130
- _onDataReceived(event) {
131
- const { requestId, dataLength, encodedDataLength } = event;
132
- const record = this._findNetworkRecord(requestId);
133
- if (!record) {
134
- return;
148
+ if (request.redirectedFrom()) {
149
+ const fromEntry = this._findNetworkEntry(request.redirectedFrom());
150
+ if (fromEntry)
151
+ fromEntry.response.redirectURL = request.url();
135
152
  }
136
- record.resourceSize += dataLength;
137
- if (encodedDataLength >= 0)
138
- record.transferSize += encodedDataLength;
153
+ request[exports.NETWORK_ENTRY_SUMBOL] = networkEntry;
154
+ this.results.push(networkEntry);
139
155
  }
140
- _onResponseReceived(event) {
141
- const { requestId, response, timestamp } = event;
142
- const record = this._findNetworkRecord(requestId);
143
- if (!record) {
156
+ async _onResponse(response) {
157
+ const request = response.request();
158
+ const networkEntry = this._findNetworkEntry(request);
159
+ if (!networkEntry)
144
160
  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);
161
+ networkEntry.responseReceivedTime = epochTimeInSeconds();
162
+ networkEntry.response = {
163
+ url: response.url(),
164
+ status: response.status(),
165
+ statusText: response.statusText(),
166
+ headers: {},
167
+ mimeType: 'x-unknown',
168
+ redirectURL: networkEntry.response.redirectURL,
169
+ };
170
+ // Gather all resource timing information up until the
171
+ // TTFB(Time to first byte) is received
172
+ const timing = request.timing();
173
+ const blocked = roundMilliSecs(firstPositive([
174
+ timing.domainLookupStart,
175
+ timing.connectStart,
176
+ timing.requestStart,
177
+ ])) || -1;
178
+ const dns = timing.domainLookupEnd !== -1
179
+ ? roundMilliSecs(timing.domainLookupEnd - timing.domainLookupStart)
180
+ : -1;
181
+ const connect = timing.connectEnd !== -1
182
+ ? roundMilliSecs(timing.connectEnd - timing.connectStart)
183
+ : -1;
184
+ const ssl = timing.secureConnectionStart !== -1
185
+ ? roundMilliSecs(timing.connectEnd - timing.secureConnectionStart)
186
+ : -1;
187
+ const wait = timing.responseStart !== -1
188
+ ? roundMilliSecs(timing.responseStart - timing.requestStart)
189
+ : -1;
190
+ networkEntry.timings = {
191
+ blocked,
192
+ dns,
193
+ ssl,
194
+ connect,
195
+ send: 0,
196
+ wait,
197
+ receive: -1,
198
+ total: -1,
199
+ };
200
+ this._calcTotalTime(networkEntry, timing);
201
+ const page = request.frame().page();
202
+ this._addBarrier(page, request.allHeaders().then(reqHeaders => {
203
+ networkEntry.request.headers = reqHeaders;
204
+ networkEntry.request.referrer = reqHeaders?.referer;
205
+ }));
206
+ this._addBarrier(page, response.allHeaders().then(resHeaders => {
207
+ networkEntry.response.headers = resHeaders;
208
+ const contentType = resHeaders['content-type'];
209
+ if (contentType)
210
+ networkEntry.response.mimeType = contentType.split(';')[0];
211
+ }));
212
+ this._addBarrier(page, response.serverAddr().then(server => {
213
+ networkEntry.response.remoteIPAddress = server?.ipAddress;
214
+ networkEntry.response.remotePort = server?.port;
215
+ }));
216
+ this._addBarrier(page, response.securityDetails().then(details => {
217
+ if (details)
218
+ networkEntry.response.securityDetails = details;
219
+ }));
160
220
  }
161
- _requestCompleted(requestId, endTime, encodedDataLength) {
162
- const record = this._findNetworkRecord(requestId);
163
- if (!record) {
221
+ async _onRequestCompleted(request) {
222
+ const networkEntry = this._findNetworkEntry(request);
223
+ if (!networkEntry)
224
+ return;
225
+ networkEntry.loadEndTime = epochTimeInSeconds();
226
+ // responseEnd is fired after the last byte of the response is received.
227
+ const timing = request.timing();
228
+ const receive = timing.responseEnd !== -1
229
+ ? roundMilliSecs(timing.responseEnd - timing.responseStart)
230
+ : -1;
231
+ networkEntry.timings.receive = receive;
232
+ this._calcTotalTime(networkEntry, timing);
233
+ // For aborted/failed requests sizes will not be present
234
+ if (timing.startTime <= 0) {
164
235
  return;
165
236
  }
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);
237
+ const page = request.frame().page();
238
+ this._addBarrier(page, request.sizes().then(sizes => {
239
+ networkEntry.request.bytes =
240
+ sizes.requestHeadersSize + sizes.requestBodySize;
241
+ networkEntry.request.body = {
242
+ bytes: sizes.requestBodySize,
243
+ };
244
+ const transferSize = sizes.responseHeadersSize + sizes.responseBodySize;
245
+ networkEntry.transferSize = transferSize;
246
+ networkEntry.response.bytes = transferSize;
247
+ networkEntry.response.body = {
248
+ bytes: sizes.responseBodySize,
249
+ };
250
+ }));
177
251
  }
178
252
  /**
179
- * Account for missing response received event and also adjust the
180
- * response received event based on when first byte event was recorded
253
+ * Calculates the total time for the network request based on the ResourceTiming
254
+ * data from Playwright. Fallbacks to the event timings if ResourceTiming data
255
+ * is not available.
181
256
  */
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;
257
+ _calcTotalTime(entry, rtiming) {
258
+ const timings = entry.timings;
259
+ entry.timings.total = [
260
+ timings.blocked,
261
+ timings.dns,
262
+ timings.connect,
263
+ timings.wait,
264
+ timings.receive,
265
+ ].reduce((pre, cur) => ((cur || -1) > 0 ? cur + pre : pre), 0);
266
+ // fallback when ResourceTiming data is not available
267
+ if (rtiming.startTime <= 0) {
268
+ const end = entry.loadEndTime ||
269
+ entry.responseReceivedTime ||
270
+ entry.requestSentTime;
271
+ const total = roundMilliSecs((end - entry.requestSentTime) * 1000);
272
+ entry.timings.total = total <= 0 ? -1 : total;
194
273
  }
195
- return responseReceivedTime;
196
274
  }
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 = {
203
- blocked: -1,
204
- queueing: -1,
205
- proxy: -1,
206
- dns: -1,
207
- ssl: -1,
208
- connect: -1,
209
- send: -1,
210
- wait: -1,
211
- receive: -1,
212
- total: -1,
213
- };
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
- const firstPositive = (numbers) => {
231
- for (let i = 0; i < numbers.length; ++i) {
232
- if (numbers[i] > 0) {
233
- return numbers[i];
234
- }
235
- }
236
- return null;
237
- };
275
+ async stop() {
238
276
  /**
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
277
+ * Waiting for all network events is error prone and might hang the tests
278
+ * from getting closed forever when there are upstream bugs in browsers or
279
+ * Playwright. So we log and drop these events once the test run is completed
241
280
  */
242
- const addOffsetRange = (name, start, end) => {
243
- if (start >= 0 && end >= 0) {
244
- calculateDiffInMs(name, startTime + start / 1000, startTime + end / 1000);
245
- }
246
- };
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);
281
+ if (this._barrierPromises.size > 0) {
282
+ (0, logger_1.log)(`Plugins: dropping ${this._barrierPromises.size} network events`);
269
283
  }
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);
289
- }
290
- calculateDiffInMs('receive', actResRcvdTime, endTime);
291
- return result;
292
- }
293
- stop() {
284
+ const context = this.driver.context;
285
+ context.off('request', this._onRequest.bind(this));
286
+ context.off('response', this._onResponse.bind(this));
287
+ context.off('requestfinished', this._onRequestCompleted.bind(this));
288
+ context.off('requestfailed', this._onRequestCompleted.bind(this));
289
+ this._barrierPromises.clear();
290
+ (0, logger_1.log)(`Plugins: stopped collecting network events`);
294
291
  return this.results;
295
292
  }
296
293
  }
@@ -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,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 = []) {