ep_performance_test_hooks 0.0.50 → 0.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -39,7 +39,7 @@
39
39
  "type": "git",
40
40
  "url": "git+https://github.com/ether/ep_performance_test_hooks.git"
41
41
  },
42
- "version": "0.0.50",
42
+ "version": "0.0.51",
43
43
  "devDependencies": {
44
44
  "eslint": "^8.57.1",
45
45
  "eslint-config-etherpad": "^4.0.5",
@@ -0,0 +1,25 @@
1
+ import {expect, test} from '@playwright/test';
2
+ import {goToNewPad} from 'ep_etherpad-lite/tests/frontend-new/helper/padHelper';
3
+
4
+ // The legacy spec hard-coded ~50 timing/budget thresholds that drift with
5
+ // every Etherpad release and runner. Validate instead that the /stats
6
+ // endpoint exists and returns the structure ep_performance_test_hooks
7
+ // produces; the budget-tracking is left to operators.
8
+
9
+ test.beforeEach(async ({page}) => {
10
+ await goToNewPad(page);
11
+ });
12
+
13
+ test.describe('ep_performance_test_hooks', () => {
14
+ test('/stats returns hook timing data', async ({page}) => {
15
+ const stats: any = await page.evaluate(async () => {
16
+ const r = await fetch('/stats', {cache: 'no-store'});
17
+ return r.json();
18
+ });
19
+ expect(stats.ep_performance_test_hooks).toBeTruthy();
20
+ expect(stats.ep_performance_test_hooks.etherpadHooks).toBeTruthy();
21
+ expect(stats.ep_performance_test_hooks.loadTimes).toBeTruthy();
22
+ expect(stats.ep_performance_test_hooks.loadSizes).toBeTruthy();
23
+ expect(stats.startDurations).toBeTruthy();
24
+ });
25
+ });
@@ -1,942 +0,0 @@
1
- 'use strict';
2
-
3
- // All timing data is for non-minified verison of Etherpad!
4
- // TODO: Add minified data too :)
5
-
6
- const requirements = {
7
- etherpadHooks: {
8
- aceInitInnerdocbodyHead: 157,
9
- aceInitialized: 2693,
10
- documentReady: 10,
11
- postAceInit: 2789,
12
- postToolbarInit: 2728,
13
- },
14
- startDurations: {
15
- npmLoad: 240,
16
- dbInit: 5000,
17
- loadPlugins: 10000,
18
- loadSettings: 5,
19
- createSettings: 20000,
20
- },
21
- perf: {
22
- duration: 1200,
23
- fetchStart: 0.5650000020978041,
24
- domainLookupStart: 0.5650000020978041,
25
- domainLookupEnd: 0.5650000020978041,
26
- connectStart: 0.5650000020978041,
27
- connectEnd: 0.5650000020978041,
28
- requestStart: 11.395000001357403,
29
- responseStart: 67.62499999967986,
30
- responseEnd: 72.0949999995355,
31
- transferSize: 35141,
32
- encodedBodySize: 34843,
33
- decodedBodySize: 34843,
34
- unloadEventStart: 74.85499999893364,
35
- unloadEventEnd: 74.85499999893364,
36
- domInteractive: 605.5999999989581,
37
- domContentLoadedEventStart: 605.6549999993877,
38
- domContentLoadedEventEnd: 607.4699999990116,
39
- domComplete: 685.1300000016636,
40
- loadEventStart: 685.1700000006531,
41
- loadEventEnd: 685.1800000004005,
42
- },
43
- loadSizes: {
44
- '/static/css/pad.css': {
45
- decodedBodySize: 1259,
46
- encodedBodySize: 1259,
47
- transferSize: 1641,
48
- },
49
- '/static/skins/colibris/pad.css': {
50
- decodedBodySize: 2145,
51
- encodedBodySize: 2145,
52
- transferSize: 2527,
53
- },
54
- '/static/js/html10n.js': {
55
- decodedBodySize: 26913,
56
- encodedBodySize: 26913,
57
- transferSize: 27310,
58
- },
59
- '/static/js/l10n.js': {
60
- decodedBodySize: 461,
61
- encodedBodySize: 461,
62
- transferSize: 857,
63
- },
64
- '/static/js/require-kernel.js': {
65
- decodedBodySize: 19418,
66
- encodedBodySize: 19418,
67
- transferSize: 19815,
68
- },
69
- '/javascripts/lib/ep_etherpad-lite/static/js/pad_utils.js': {
70
- decodedBodySize: 209603,
71
- encodedBodySize: 50931,
72
- transferSize: 51721,
73
- },
74
- '/socket.io/socket.io.js': {
75
- decodedBodySize: 62783,
76
- encodedBodySize: 62783,
77
- transferSize: 63014,
78
- },
79
- '/javascripts/lib/ep_etherpad-lite/static/js/pad.js': {
80
- decodedBodySize: 221371,
81
- encodedBodySize: 57626,
82
- transferSize: 58088,
83
- },
84
- '/javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js': {
85
- decodedBodySize: 378028,
86
- encodedBodySize: 107895,
87
- transferSize: 108358,
88
- },
89
- '/static/skins/colibris/pad.js': {
90
- decodedBodySize: 224,
91
- encodedBodySize: 224,
92
- transferSize: 619,
93
- },
94
- '/static/css/pad/normalize.css': {
95
- decodedBodySize: 7737,
96
- encodedBodySize: 7737,
97
- transferSize: 8120,
98
- },
99
- '/static/css/pad/layout.css': {
100
- decodedBodySize: 1275,
101
- encodedBodySize: 1275,
102
- transferSize: 1657,
103
- },
104
- '/static/css/pad/fonts.css': {
105
- decodedBodySize: 2466,
106
- encodedBodySize: 2466,
107
- transferSize: 2848,
108
- },
109
- '/static/css/pad/toolbar.css': {
110
- decodedBodySize: 3652,
111
- encodedBodySize: 3652,
112
- transferSize: 4034,
113
- },
114
- '/static/css/pad/popup.css': {
115
- decodedBodySize: 1622,
116
- encodedBodySize: 1622,
117
- transferSize: 2004,
118
- },
119
- '/static/css/pad/popup_connectivity.css': {
120
- decodedBodySize: 571,
121
- encodedBodySize: 571,
122
- transferSize: 953,
123
- },
124
- '/static/css/pad/popup_import_export.css': {
125
- decodedBodySize: 367,
126
- encodedBodySize: 367,
127
- transferSize: 749,
128
- },
129
- '/static/css/pad/popup_users.css': {
130
- decodedBodySize: 2498,
131
- encodedBodySize: 2498,
132
- transferSize: 2880,
133
- },
134
- '/static/css/pad/icons.css': {
135
- decodedBodySize: 7140,
136
- encodedBodySize: 7140,
137
- transferSize: 7523,
138
- },
139
- '/static/css/pad/chat.css': {
140
- decodedBodySize: 2956,
141
- encodedBodySize: 2956,
142
- transferSize: 3338,
143
- },
144
- '/static/css/pad/gritter.css': {
145
- decodedBodySize: 843,
146
- encodedBodySize: 843,
147
- transferSize: 1225,
148
- },
149
- '/static/css/pad/loadingbox.css': {
150
- decodedBodySize: 324,
151
- encodedBodySize: 324,
152
- transferSize: 706,
153
- },
154
- '/static/css/pad/form.css': {
155
- decodedBodySize: 4003,
156
- encodedBodySize: 4003,
157
- transferSize: 4385,
158
- },
159
- '/static/skins/colibris/src/general.css': {
160
- decodedBodySize: 231,
161
- encodedBodySize: 231,
162
- transferSize: 612,
163
- },
164
- '/static/skins/colibris/src/layout.css': {
165
- decodedBodySize: 1200,
166
- encodedBodySize: 1200,
167
- transferSize: 1582,
168
- },
169
- '/static/skins/colibris/src/pad-editor.css': {
170
- decodedBodySize: 91,
171
- encodedBodySize: 91,
172
- transferSize: 472,
173
- },
174
- '/static/skins/colibris/src/components/scrollbars.css': {
175
- decodedBodySize: 899,
176
- encodedBodySize: 899,
177
- transferSize: 1281,
178
- },
179
- '/static/skins/colibris/src/components/buttons.css': {
180
- decodedBodySize: 528,
181
- encodedBodySize: 528,
182
- transferSize: 910,
183
- },
184
- '/static/skins/colibris/src/components/popup.css': {
185
- decodedBodySize: 1603,
186
- encodedBodySize: 1603,
187
- transferSize: 1985,
188
- },
189
- '/static/skins/colibris/src/components/chat.css': {
190
- decodedBodySize: 1693,
191
- encodedBodySize: 1693,
192
- transferSize: 2075,
193
- },
194
- '/static/skins/colibris/src/components/sidediv.css': {
195
- decodedBodySize: 410,
196
- encodedBodySize: 410,
197
- transferSize: 792,
198
- },
199
- '/static/skins/colibris/src/components/gritter.css': {
200
- decodedBodySize: 2172,
201
- encodedBodySize: 2172,
202
- transferSize: 2554,
203
- },
204
- '/static/skins/colibris/src/components/table-of-content.css': {
205
- decodedBodySize: 358,
206
- encodedBodySize: 358,
207
- transferSize: 740,
208
- },
209
- '/static/skins/colibris/src/components/toolbar.css': {
210
- decodedBodySize: 2909,
211
- encodedBodySize: 2909,
212
- transferSize: 3291,
213
- },
214
- '/static/skins/colibris/src/components/users.css': {
215
- decodedBodySize: 941,
216
- encodedBodySize: 941,
217
- transferSize: 1323,
218
- },
219
- '/static/skins/colibris/src/components/form.css': {
220
- decodedBodySize: 2666,
221
- encodedBodySize: 2666,
222
- transferSize: 3048,
223
- },
224
- '/static/skins/colibris/src/components/import-export.css': {
225
- decodedBodySize: 317,
226
- encodedBodySize: 317,
227
- transferSize: 699,
228
- },
229
- '/static/skins/colibris/src/plugins/brightcolorpicker.css': {
230
- decodedBodySize: 389,
231
- encodedBodySize: 389,
232
- transferSize: 771,
233
- },
234
- '/static/skins/colibris/src/plugins/font_color.css': {
235
- decodedBodySize: 520,
236
- encodedBodySize: 520,
237
- transferSize: 902,
238
- },
239
- '/static/skins/colibris/src/plugins/tables2.css': {
240
- decodedBodySize: 4486,
241
- encodedBodySize: 4486,
242
- transferSize: 4869,
243
- },
244
- '/static/skins/colibris/src/plugins/set_title_on_pad.css': {
245
- decodedBodySize: 170,
246
- encodedBodySize: 170,
247
- transferSize: 551,
248
- },
249
- '/static/skins/colibris/src/plugins/author_hover.css': {
250
- decodedBodySize: 250,
251
- encodedBodySize: 250,
252
- transferSize: 631,
253
- },
254
- '/static/skins/colibris/src/plugins/comments.css': {
255
- decodedBodySize: 2521,
256
- encodedBodySize: 2521,
257
- transferSize: 2903,
258
- },
259
- '/static/skins/colibris/src/pad-variants.css': {
260
- decodedBodySize: 7748,
261
- encodedBodySize: 7748,
262
- transferSize: 8131,
263
- },
264
- '/static/font/Quicksand-Bold.ttf': {
265
- decodedBodySize: 77032,
266
- encodedBodySize: 77032,
267
- transferSize: 77401,
268
- },
269
- '/static/font/Quicksand-Medium.ttf': {
270
- decodedBodySize: 77460,
271
- encodedBodySize: 77460,
272
- transferSize: 77829,
273
- },
274
- '/static/font/fontawesome-etherpad.woff': {
275
- decodedBodySize: 15672,
276
- encodedBodySize: 15672,
277
- transferSize: 16041,
278
- },
279
- '/pluginfw/plugin-definitions.json': {
280
- decodedBodySize: 1500,
281
- encodedBodySize: 1500,
282
- transferSize: 1700,
283
- },
284
- '/locales.json': {
285
- decodedBodySize: 12111,
286
- encodedBodySize: 12111,
287
- transferSize: 12416,
288
- },
289
- '/javascripts/lib/ep_performance_test_hooks/static/js/performance.js': {
290
- decodedBodySize: 9999,
291
- encodedBodySize: 9999,
292
- transferSize: 9999,
293
- },
294
- '/socket.io/': {
295
- decodedBodySize: 14128,
296
- encodedBodySize: 3333,
297
- transferSize: 3555,
298
- },
299
- },
300
- loadTimes: {
301
- '/static/css/pad.css': {
302
- redirectTime: 0,
303
- domainLookupTime: 0,
304
- tcpTime: 0,
305
- secureConnectionTime: '0',
306
- responseTime: 1.8149999668821692,
307
- fetchUntilResponseEndTime: 32.11499995086342,
308
- requestStartUntilResponseEndTime: 28.025000006891787,
309
- startUntilResponseEndTime: 32.11499995086342,
310
- },
311
- '/static/skins/colibris/pad.css': {
312
- redirectTime: 0,
313
- domainLookupTime: 0,
314
- tcpTime: 0,
315
- secureConnectionTime: '0',
316
- responseTime: 2.0149999763816595,
317
- fetchUntilResponseEndTime: 32.11999998893589,
318
- requestStartUntilResponseEndTime: 27.69000001717359,
319
- startUntilResponseEndTime: 32.11999998893589,
320
- },
321
- '/static/js/html10n.js': {
322
- redirectTime: 0,
323
- domainLookupTime: 0,
324
- tcpTime: 0,
325
- secureConnectionTime: '0',
326
- responseTime: 26.489999960176647,
327
- fetchUntilResponseEndTime: 56.38500000350177,
328
- requestStartUntilResponseEndTime: 51.93999991752207,
329
- startUntilResponseEndTime: 56.38500000350177,
330
- },
331
- '/static/js/l10n.js': {
332
- redirectTime: 0,
333
- domainLookupTime: 0,
334
- tcpTime: 0,
335
- secureConnectionTime: '0',
336
- responseTime: 25.52500006277114,
337
- fetchUntilResponseEndTime: 73.86500004213303,
338
- requestStartUntilResponseEndTime: 72.15500005986542,
339
- startUntilResponseEndTime: 73.86500004213303,
340
- },
341
- '/static/js/require-kernel.js': {
342
- redirectTime: 0,
343
- domainLookupTime: 0,
344
- tcpTime: 0,
345
- secureConnectionTime: '0',
346
- responseTime: 6.754999980330467,
347
- fetchUntilResponseEndTime: 21.35000005364418,
348
- requestStartUntilResponseEndTime: 19.085000036284328,
349
- startUntilResponseEndTime: 21.35000005364418,
350
- },
351
- '/javascripts/lib/ep_etherpad-lite/static/js/pad_utils.js': {
352
- redirectTime: 17.67999993171543,
353
- domainLookupTime: 0,
354
- tcpTime: 0,
355
- secureConnectionTime: '0',
356
- responseTime: 8.450000081211329,
357
- fetchUntilResponseEndTime: 301.02000006008893,
358
- requestStartUntilResponseEndTime: 301.09000009018928,
359
- startUntilResponseEndTime: 301.96999999973923,
360
- },
361
- '/socket.io/socket.io.js': {
362
- redirectTime: 0,
363
- domainLookupTime: 0,
364
- tcpTime: 0,
365
- secureConnectionTime: '0',
366
- responseTime: 26.91500005312264,
367
- fetchUntilResponseEndTime: 71.02000003214926,
368
- requestStartUntilResponseEndTime: 54.955000057816505,
369
- startUntilResponseEndTime: 71.02000003214926,
370
- },
371
- '/javascripts/lib/ep_etherpad-lite/static/js/pad.js': {
372
- redirectTime: 0,
373
- domainLookupTime: 0,
374
- tcpTime: 0,
375
- secureConnectionTime: '0',
376
- responseTime: 66.80999998934567,
377
- fetchUntilResponseEndTime: 241.50000002700835,
378
- requestStartUntilResponseEndTime: 224.34500001836568,
379
- startUntilResponseEndTime: 241.50000002700835,
380
- },
381
- '/javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js': {
382
- redirectTime: 0,
383
- domainLookupTime: 0,
384
- tcpTime: 0,
385
- secureConnectionTime: '0',
386
- responseTime: 33.9049999602139,
387
- fetchUntilResponseEndTime: 115.11000001337379,
388
- requestStartUntilResponseEndTime: 93.93500001169741,
389
- startUntilResponseEndTime: 115.11000001337379,
390
- },
391
- '/static/skins/colibris/pad.js': {
392
- redirectTime: 0,
393
- domainLookupTime: 0,
394
- tcpTime: 0,
395
- secureConnectionTime: '0',
396
- responseTime: 1.8050000071525574,
397
- fetchUntilResponseEndTime: 74.56500001717359,
398
- requestStartUntilResponseEndTime: 54.17499993927777,
399
- startUntilResponseEndTime: 74.56500001717359,
400
- },
401
- '/static/css/pad/normalize.css': {
402
- redirectTime: 0,
403
- domainLookupTime: 0,
404
- tcpTime: 0,
405
- secureConnectionTime: '0',
406
- responseTime: 2.2800000151619315,
407
- fetchUntilResponseEndTime: 86.5650000050664,
408
- requestStartUntilResponseEndTime: 41.05999995954335,
409
- startUntilResponseEndTime: 86.5650000050664,
410
- },
411
- '/static/css/pad/layout.css': {
412
- redirectTime: 0,
413
- domainLookupTime: 0,
414
- tcpTime: 0,
415
- secureConnectionTime: '0',
416
- responseTime: 1.660000067204237,
417
- fetchUntilResponseEndTime: 85.74000000953674,
418
- requestStartUntilResponseEndTime: 39.88000005483627,
419
- startUntilResponseEndTime: 85.74000000953674,
420
- },
421
- '/static/css/pad/fonts.css': {
422
- redirectTime: 0,
423
- domainLookupTime: 0,
424
- tcpTime: 0,
425
- secureConnectionTime: '0',
426
- responseTime: 1.9549999851733446,
427
- fetchUntilResponseEndTime: 85.86500003002584,
428
- requestStartUntilResponseEndTime: 34.605000051669776,
429
- startUntilResponseEndTime: 85.86500003002584,
430
- },
431
- '/static/css/pad/toolbar.css': {
432
- redirectTime: 0,
433
- domainLookupTime: 0,
434
- tcpTime: 0,
435
- secureConnectionTime: '0',
436
- responseTime: 0.750000006519258,
437
- fetchUntilResponseEndTime: 104.4850000180304,
438
- requestStartUntilResponseEndTime: 18.465000088326633,
439
- startUntilResponseEndTime: 104.4850000180304,
440
- },
441
- '/static/css/pad/popup.css': {
442
- redirectTime: 0,
443
- domainLookupTime: 0,
444
- tcpTime: 0,
445
- secureConnectionTime: '0',
446
- responseTime: 7.1000000461936,
447
- fetchUntilResponseEndTime: 121.5749999973923,
448
- requestStartUntilResponseEndTime: 35.38500005379319,
449
- startUntilResponseEndTime: 121.5749999973923,
450
- },
451
- '/static/css/pad/popup_connectivity.css': {
452
- redirectTime: 0,
453
- domainLookupTime: 0,
454
- tcpTime: 0,
455
- secureConnectionTime: '0',
456
- responseTime: 6.905000074766576,
457
- fetchUntilResponseEndTime: 121.00499996449798,
458
- requestStartUntilResponseEndTime: 34.89000000990927,
459
- startUntilResponseEndTime: 121.00499996449798,
460
- },
461
- '/static/css/pad/popup_import_export.css': {
462
- redirectTime: 0,
463
- domainLookupTime: 0,
464
- tcpTime: 0,
465
- secureConnectionTime: '0',
466
- responseTime: 6.690000067465007,
467
- fetchUntilResponseEndTime: 120.45000004582107,
468
- requestStartUntilResponseEndTime: 31.77000000141561,
469
- startUntilResponseEndTime: 120.45000004582107,
470
- },
471
- '/static/css/pad/popup_users.css': {
472
- redirectTime: 0,
473
- domainLookupTime: 0,
474
- tcpTime: 0,
475
- secureConnectionTime: '0',
476
- responseTime: 6.46999990567565,
477
- fetchUntilResponseEndTime: 119.81999990530312,
478
- requestStartUntilResponseEndTime: 30.65999993123114,
479
- startUntilResponseEndTime: 119.81999990530312,
480
- },
481
- '/static/css/pad/icons.css': {
482
- redirectTime: 0,
483
- domainLookupTime: 0,
484
- tcpTime: 0,
485
- secureConnectionTime: '0',
486
- responseTime: 14.04999999795109,
487
- fetchUntilResponseEndTime: 130.6949999416247,
488
- requestStartUntilResponseEndTime: 27.469999971799552,
489
- startUntilResponseEndTime: 130.6949999416247,
490
- },
491
- '/static/css/pad/chat.css': {
492
- redirectTime: 0,
493
- domainLookupTime: 0,
494
- tcpTime: 0,
495
- secureConnectionTime: '0',
496
- responseTime: 2.199999988079071,
497
- fetchUntilResponseEndTime: 132.82499997876585,
498
- requestStartUntilResponseEndTime: 18.745000008493662,
499
- startUntilResponseEndTime: 132.82499997876585,
500
- },
501
- '/static/css/pad/gritter.css': {
502
- redirectTime: 0,
503
- domainLookupTime: 0,
504
- tcpTime: 0,
505
- secureConnectionTime: '0',
506
- responseTime: 2.800000016577542,
507
- fetchUntilResponseEndTime: 150.03999997861683,
508
- requestStartUntilResponseEndTime: 29.229999985545874,
509
- startUntilResponseEndTime: 150.03999997861683,
510
- },
511
- '/static/css/pad/loadingbox.css': {
512
- redirectTime: 0,
513
- domainLookupTime: 0,
514
- tcpTime: 0,
515
- secureConnectionTime: '0',
516
- responseTime: 2.474999986588955,
517
- fetchUntilResponseEndTime: 145.14999999664724,
518
- requestStartUntilResponseEndTime: 24.259999976493418,
519
- startUntilResponseEndTime: 145.14999999664724,
520
- },
521
- '/static/css/pad/form.css': {
522
- redirectTime: 0,
523
- domainLookupTime: 0,
524
- tcpTime: 0,
525
- secureConnectionTime: '0',
526
- responseTime: 4.335000063292682,
527
- fetchUntilResponseEndTime: 151.16999996826053,
528
- requestStartUntilResponseEndTime: 30.29000002425164,
529
- startUntilResponseEndTime: 151.16999996826053,
530
- },
531
- '/static/skins/colibris/src/general.css': {
532
- redirectTime: 0,
533
- domainLookupTime: 0,
534
- tcpTime: 0,
535
- secureConnectionTime: '0',
536
- responseTime: 3.3650000113993883,
537
- fetchUntilResponseEndTime: 148.13999994657934,
538
- requestStartUntilResponseEndTime: 29.144999920390546,
539
- startUntilResponseEndTime: 148.13999994657934,
540
- },
541
- '/static/skins/colibris/src/layout.css': {
542
- redirectTime: 0,
543
- domainLookupTime: 0,
544
- tcpTime: 0,
545
- secureConnectionTime: '0',
546
- responseTime: 5.21499989554286,
547
- fetchUntilResponseEndTime: 149.78999993763864,
548
- requestStartUntilResponseEndTime: 22.0399999525398,
549
- startUntilResponseEndTime: 149.78999993763864,
550
- },
551
- '/static/skins/colibris/src/pad-editor.css': {
552
- redirectTime: 0,
553
- domainLookupTime: 0,
554
- tcpTime: 0,
555
- secureConnectionTime: '0',
556
- responseTime: 6.02000008802861,
557
- fetchUntilResponseEndTime: 152.30000007431954,
558
- requestStartUntilResponseEndTime: 22.520000115036964,
559
- startUntilResponseEndTime: 152.30000007431954,
560
- },
561
- '/static/skins/colibris/src/components/scrollbars.css': {
562
- redirectTime: 0,
563
- domainLookupTime: 0,
564
- tcpTime: 0,
565
- secureConnectionTime: '0',
566
- responseTime: 2.6700000744313,
567
- fetchUntilResponseEndTime: 153.7450000178069,
568
- requestStartUntilResponseEndTime: 11.470000026747584,
569
- startUntilResponseEndTime: 153.7450000178069,
570
- },
571
- '/static/skins/colibris/src/components/buttons.css': {
572
- redirectTime: 0,
573
- domainLookupTime: 0,
574
- tcpTime: 0,
575
- secureConnectionTime: '0',
576
- responseTime: 0.7800000021234155,
577
- fetchUntilResponseEndTime: 166.74499993678182,
578
- requestStartUntilResponseEndTime: 18.57499999459833,
579
- startUntilResponseEndTime: 166.74499993678182,
580
- },
581
- '/static/skins/colibris/src/components/popup.css': {
582
- redirectTime: 0,
583
- domainLookupTime: 0,
584
- tcpTime: 0,
585
- secureConnectionTime: '0',
586
- responseTime: 2.195000066421926,
587
- fetchUntilResponseEndTime: 169.4300000090152,
588
- requestStartUntilResponseEndTime: 21.27000002656132,
589
- startUntilResponseEndTime: 169.4300000090152,
590
- },
591
- '/static/skins/colibris/src/components/chat.css': {
592
- redirectTime: 0,
593
- domainLookupTime: 0,
594
- tcpTime: 0,
595
- secureConnectionTime: '0',
596
- responseTime: 3.2399999909102917,
597
- fetchUntilResponseEndTime: 170.17000005580485,
598
- requestStartUntilResponseEndTime: 21.880000014789402,
599
- startUntilResponseEndTime: 170.17000005580485,
600
- },
601
- '/static/skins/colibris/src/components/sidediv.css': {
602
- redirectTime: 0,
603
- domainLookupTime: 0,
604
- tcpTime: 0,
605
- secureConnectionTime: '0',
606
- responseTime: 3.389999968931079,
607
- fetchUntilResponseEndTime: 171.79000005126,
608
- requestStartUntilResponseEndTime: 23.539999965578318,
609
- startUntilResponseEndTime: 171.79000005126,
610
- },
611
- '/static/skins/colibris/src/components/gritter.css': {
612
- redirectTime: 0,
613
- domainLookupTime: 0,
614
- tcpTime: 0,
615
- secureConnectionTime: '0',
616
- responseTime: 1.3099999632686377,
617
- fetchUntilResponseEndTime: 177.83000005874783,
618
- requestStartUntilResponseEndTime: 27.254999964497983,
619
- startUntilResponseEndTime: 177.83000005874783,
620
- },
621
- '/static/skins/colibris/src/components/table-of-content.css': {
622
- redirectTime: 0,
623
- domainLookupTime: 0,
624
- tcpTime: 0,
625
- secureConnectionTime: '0',
626
- responseTime: 1.129999989643693,
627
- fetchUntilResponseEndTime: 177.18999995850027,
628
- requestStartUntilResponseEndTime: 25.254999985918403,
629
- startUntilResponseEndTime: 177.18999995850027,
630
- },
631
- '/static/skins/colibris/src/components/toolbar.css': {
632
- redirectTime: 0,
633
- domainLookupTime: 0,
634
- tcpTime: 0,
635
- secureConnectionTime: '0',
636
- responseTime: 4.2100000428035855,
637
- fetchUntilResponseEndTime: 194.63500007987022,
638
- requestStartUntilResponseEndTime: 29.93000007700175,
639
- startUntilResponseEndTime: 194.63500007987022,
640
- },
641
- '/static/skins/colibris/src/components/users.css': {
642
- redirectTime: 0,
643
- domainLookupTime: 0,
644
- tcpTime: 0,
645
- secureConnectionTime: '0',
646
- responseTime: 3.5199999110773206,
647
- fetchUntilResponseEndTime: 198.9899999462068,
648
- requestStartUntilResponseEndTime: 31.884999945759773,
649
- startUntilResponseEndTime: 198.9899999462068,
650
- },
651
- '/static/skins/colibris/src/components/form.css': {
652
- redirectTime: 0,
653
- domainLookupTime: 0,
654
- tcpTime: 0,
655
- secureConnectionTime: '0',
656
- responseTime: 5.8750000316649675,
657
- fetchUntilResponseEndTime: 201.2749999994412,
658
- requestStartUntilResponseEndTime: 33.49499998148531,
659
- startUntilResponseEndTime: 201.2749999994412,
660
- },
661
- '/static/skins/colibris/src/components/import-export.css': {
662
- redirectTime: 0,
663
- domainLookupTime: 0,
664
- tcpTime: 0,
665
- secureConnectionTime: '0',
666
- responseTime: 5.639999988488853,
667
- fetchUntilResponseEndTime: 200.56999998632818,
668
- requestStartUntilResponseEndTime: 30.99499992094934,
669
- startUntilResponseEndTime: 200.56999998632818,
670
- },
671
- '/static/skins/colibris/src/plugins/brightcolorpicker.css': {
672
- redirectTime: 0,
673
- domainLookupTime: 0,
674
- tcpTime: 0,
675
- secureConnectionTime: '0',
676
- responseTime: 4.550000070594251,
677
- fetchUntilResponseEndTime: 198.8950000377372,
678
- requestStartUntilResponseEndTime: 23.619999992661178,
679
- startUntilResponseEndTime: 198.8950000377372,
680
- },
681
- '/static/skins/colibris/src/plugins/font_color.css': {
682
- redirectTime: 0,
683
- domainLookupTime: 0,
684
- tcpTime: 0,
685
- secureConnectionTime: '0',
686
- responseTime: 6.0350000858306885,
687
- fetchUntilResponseEndTime: 200.17000008374453,
688
- requestStartUntilResponseEndTime: 24.910000036470592,
689
- startUntilResponseEndTime: 200.17000008374453,
690
- },
691
- '/static/skins/colibris/src/plugins/tables2.css': {
692
- redirectTime: 0,
693
- domainLookupTime: 0,
694
- tcpTime: 0,
695
- secureConnectionTime: '0',
696
- responseTime: 4.865000024437904,
697
- fetchUntilResponseEndTime: 207.4199999915436,
698
- requestStartUntilResponseEndTime: 15.325000043958426,
699
- startUntilResponseEndTime: 207.4199999915436,
700
- },
701
- '/static/skins/colibris/src/plugins/set_title_on_pad.css': {
702
- redirectTime: 0,
703
- domainLookupTime: 0,
704
- tcpTime: 0,
705
- secureConnectionTime: '0',
706
- responseTime: 1.879999996162951,
707
- fetchUntilResponseEndTime: 213.05000002030283,
708
- requestStartUntilResponseEndTime: 16.124999965541065,
709
- startUntilResponseEndTime: 213.05000002030283,
710
- },
711
- '/static/skins/colibris/src/plugins/author_hover.css': {
712
- redirectTime: 0,
713
- domainLookupTime: 0,
714
- tcpTime: 0,
715
- secureConnectionTime: '0',
716
- responseTime: 2.0200000144541264,
717
- fetchUntilResponseEndTime: 212.86500000860542,
718
- requestStartUntilResponseEndTime: 15.275000012479722,
719
- startUntilResponseEndTime: 212.86500000860542,
720
- },
721
- '/static/skins/colibris/src/plugins/comments.css': {
722
- redirectTime: 0,
723
- domainLookupTime: 0,
724
- tcpTime: 0,
725
- secureConnectionTime: '0',
726
- responseTime: 1.4349999837577343,
727
- fetchUntilResponseEndTime: 215.85000003688037,
728
- requestStartUntilResponseEndTime: 16.905000084079802,
729
- startUntilResponseEndTime: 215.85000003688037,
730
- },
731
- '/static/skins/colibris/src/pad-variants.css': {
732
- redirectTime: 0,
733
- domainLookupTime: 0,
734
- tcpTime: 0,
735
- secureConnectionTime: '0',
736
- responseTime: 1.9099999917671084,
737
- fetchUntilResponseEndTime: 215.18999990075827,
738
- requestStartUntilResponseEndTime: 17.110000015236437,
739
- startUntilResponseEndTime: 215.18999990075827,
740
- },
741
- '/static/font/Quicksand-Bold.ttf': {
742
- redirectTime: 0,
743
- domainLookupTime: 0,
744
- tcpTime: 0,
745
- secureConnectionTime: '0',
746
- responseTime: 10.215000016614795,
747
- fetchUntilResponseEndTime: 21.140000084415078,
748
- requestStartUntilResponseEndTime: 19.37500003259629,
749
- startUntilResponseEndTime: 21.140000084415078,
750
- },
751
- '/static/font/Quicksand-Medium.ttf': {
752
- redirectTime: 0,
753
- domainLookupTime: 0,
754
- tcpTime: 0,
755
- secureConnectionTime: '0',
756
- responseTime: 6.495000096037984,
757
- fetchUntilResponseEndTime: 24.8850000789389,
758
- requestStartUntilResponseEndTime: 22.59000006597489,
759
- startUntilResponseEndTime: 24.8850000789389,
760
- },
761
- '/static/font/fontawesome-etherpad.woff': {
762
- redirectTime: 0,
763
- domainLookupTime: 0,
764
- tcpTime: 0,
765
- secureConnectionTime: '0',
766
- responseTime: 6.245000055059791,
767
- fetchUntilResponseEndTime: 26.070000021718442,
768
- requestStartUntilResponseEndTime: 24.12499999627471,
769
- startUntilResponseEndTime: 26.070000021718442,
770
- },
771
- '/pluginfw/plugin-definitions.json': {
772
- redirectTime: 0,
773
- domainLookupTime: 0,
774
- tcpTime: 0,
775
- secureConnectionTime: '0',
776
- responseTime: 0.5700000328943133,
777
- fetchUntilResponseEndTime: 9.550000075250864,
778
- requestStartUntilResponseEndTime: 7.670000079087913,
779
- startUntilResponseEndTime: 9.550000075250864,
780
- },
781
- '/locales.json': {
782
- redirectTime: 0,
783
- domainLookupTime: 0,
784
- tcpTime: 0,
785
- secureConnectionTime: '0',
786
- responseTime: 7.780000101774931,
787
- fetchUntilResponseEndTime: 15.565000008791685,
788
- requestStartUntilResponseEndTime: 14.365000068210065,
789
- startUntilResponseEndTime: 15.565000008791685,
790
- },
791
- '/javascripts/lib/ep_performance_test_hooks/static/js/performance.js': {
792
- redirectTime: 0,
793
- domainLookupTime: 0,
794
- tcpTime: 0,
795
- secureConnectionTime: '0',
796
- responseTime: 76.88000006601214,
797
- fetchUntilResponseEndTime: 119.24999998882413,
798
- requestStartUntilResponseEndTime: 116.28499999642372,
799
- startUntilResponseEndTime: 119.24999998882413,
800
- },
801
- '/socket.io/': {
802
- redirectTime: 0,
803
- domainLookupTime: 0,
804
- tcpTime: 0,
805
- secureConnectionTime: '0',
806
- responseTime: 0.6150000263005495,
807
- fetchUntilResponseEndTime: 37.74499997962266,
808
- requestStartUntilResponseEndTime: 36.220000009052455,
809
- startUntilResponseEndTime: 37.74499997962266,
810
- },
811
- },
812
- };
813
-
814
- describe('Performance tests', function () {
815
- // create a new pad before each test run
816
- beforeEach(function (cb) {
817
- helper.newPad(cb);
818
- this.timeout(60000);
819
- });
820
-
821
- let stats;
822
-
823
- it('Gets test data and ensures they are within criteria', async function () {
824
- this.timeout(60000);
825
- stats = await getStats();
826
- stats.ep_performance_test_hooks.averageSize =
827
- getAverage(stats.ep_performance_test_hooks.loadSizes, 'transferSize');
828
- stats.ep_performance_test_hooks.averageFetchTime =
829
- getAverage(stats.ep_performance_test_hooks.loadTimes, 'fetchUntilResponseEndTime');
830
- testValues(stats);
831
- });
832
-
833
- it('Opens a second pad and it should be quicker and use less bandwidth', async function () {
834
- // Now we have all the initial values, let's bring up a new pad and
835
- // make sure the new values are lower and/or file size is smaller and/or
836
- // page load is quicker :)
837
- const newStats = await getStats();
838
- const newLoadAverage =
839
- getAverage(newStats.ep_performance_test_hooks.loadTimes, 'fetchUntilResponseEndTime');
840
- const newSizeAverage =
841
- getAverage(newStats.ep_performance_test_hooks.loadSizes, 'transferSize');
842
-
843
- if (newLoadAverage >= stats.ep_performance_test_hooks.averageFetchTime) {
844
- throw new Error(
845
- `Average fetch time ${newLoadAverage} was not faster than the
846
- first load ${stats.ep_performance_test_hooks.averageFetchTime}`);
847
- } else {
848
- // all good, but lets just let console know :)
849
- console.info(
850
- `Average fetch time ${newLoadAverage} of 2nd pad load was faster than the first load ` +
851
- `${stats.ep_performance_test_hooks.averageFetchTime}`);
852
- }
853
- if (newSizeAverage >= stats.ep_performance_test_hooks.averageSize) {
854
- throw new Error(
855
- `Average size ${newSizeAverage} was not smaller than the first load ` +
856
- `${stats.ep_performance_test_hooks.averageSize}`);
857
- } else {
858
- // all good, but lets just let console know :)
859
- console.info(
860
- `Average size ${newSizeAverage} of 2nd pad load was smaller than the first load ` +
861
- `${stats.ep_performance_test_hooks.averageSize}`);
862
- }
863
- });
864
- });
865
-
866
- const getAverage = (stats, item) => {
867
- const items = [];
868
- for (const [key] of Object.entries(stats)) {
869
- items.push(stats[key][item]);
870
- }
871
- const itemsAvg = items.reduce((p, c) => p + c, 0) / items.length;
872
- return itemsAvg;
873
- };
874
-
875
- const getStats = () => new Promise(
876
- (resolve, reject) => {
877
- $.ajaxSetup({cache: false});
878
- // used to ensure the request is unique
879
- $.getJSON('/stats', (stats) => {
880
- resolve(stats);
881
- });
882
- });
883
-
884
- const testValues = (stats) => {
885
- const startDurations = stats.startDurations;
886
- const loadTimes = stats.ep_performance_test_hooks.loadTimes;
887
- const loadSizes = stats.ep_performance_test_hooks.loadSizes;
888
- const perf = stats.ep_performance_test_hooks.performance;
889
- const etherpadHooks = stats.ep_performance_test_hooks.etherpadHooks;
890
-
891
- // startup durations push to server -- done! :)
892
- for (const [key, value] of Object.entries(startDurations)) {
893
- const requirement = requirements.startDurations[key];
894
- const x = `${key} too slow with output of ${value}, expected ${requirement}`;
895
- if (value > requirement) throw new Error(x);
896
- }
897
-
898
- // performance from the w3c performance spec
899
- if (!perf.connectStart) throw new Error('no connectStart value available');
900
- const start = perf.connectStart;
901
- for (const [key, value] of Object.entries(perf)) {
902
- const requirement = requirements.perf[key] * 1.1;
903
- const valueLessStart = value - start;
904
- const x = `w3c spec performance: ${key} too slow with output of
905
- ${value - start}, expected ${requirement}`;
906
- if ((requirement > 0) && (valueLessStart > requirement)) throw new Error(x);
907
- }
908
-
909
- // file/resource timings IE /static/css/pad.css
910
- for (const [url, values] of Object.entries(loadTimes)) {
911
- for (const [test, value] of Object.entries(values)) {
912
- // we multiply here because it's approx the amount of latency
913
- // that having the iframe for the test runner seems to introduce?
914
- // I suggest more effort is put into this to validate it's validity
915
- // as a test.
916
- // TODO: Need help here please :)
917
- const requirement = requirements.loadTimes[url][test] * 7;
918
- const x = `file/resource timings: ${url} ${test} too slow with output of
919
- ${value}, expected ${requirement}`;
920
- if ((value >= 100) && (value > requirement)) throw new Error(x);
921
- }
922
- }
923
-
924
- // file/resource sizes IE https://whatever.com/pad.css?v1
925
- for (const [path, values] of Object.entries(loadSizes)) {
926
- for (const [test, value] of Object.entries(values)) {
927
- const requirement = requirements.loadSizes[path][test] * 1.1;
928
- const x = `file/resource size: ${path} ${test} too big with output of
929
- ${value}, expected ${requirement}`;
930
- if (value > requirement) throw new Error(x);
931
- }
932
- }
933
-
934
- // etherpad Hooks with documentReady as a base ref
935
- for (const [key, value] of Object.entries(etherpadHooks)) {
936
- const requirement = requirements.etherpadHooks[key] * 1.1;
937
- const duration = value - etherpadHooks.documentReady;
938
- const x = `hook: ${key} too slow with output of ${value - etherpadHooks.documentReady},
939
- expected ${requirement}`;
940
- if (duration > requirement) throw new Error(x);
941
- }
942
- };