sitespeed.io 28.0.0-beta.1 → 28.0.0-beta.2

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.
@@ -1,186 +1,189 @@
1
1
  - const browsertime = medianRun ? (pageInfo.data.browsertime ? pageInfo.data.browsertime.pageSummary.browserScripts[medianRun.runIndex - 1]: undefined) : pageInfo.data.browsertime.run
2
2
 
3
- small
4
- ||
5
- if browsertime && browsertime.cpu && browsertime.cpu.longTasks
6
- a(href='#long-tasks') CPU Long Tasks
7
- |  | 
8
- if browsertime && browsertime.timings && browsertime.timings.firstInput !== undefined
9
- a(href='#first-input-delay') First Input Delay
10
- |  | 
11
- if browsertime && browsertime.cpu && browsertime.cpu.categories
12
- a(href='#cpu-time-spent') CPU Time Spent
13
- |  | 
14
- if browsertime && browsertime.cpu && browsertime.cpu.urls && browsertime.cpu.urls.length > 0
15
- a(href='#cpu-time-spent-per-request') CPU Time Spent Per Request
16
- |  | 
17
- if pageInfo.data.thirdparty
18
- a(href='#cpu-time-per-tool') CPU Time Per Tool/Domain
19
- |  | 
3
+ - const cpu = medianRun ? (pageInfo.data.browsertime ? pageInfo.data.browsertime.pageSummary.cpu[medianRun.runIndex - 1]: undefined) : pageInfo.data.browsertime.run.cpu
20
4
 
21
- a#cpu
22
- h2 CPU
5
+ if cpu
6
+ small
7
+ ||
8
+ if cpu.longTasks
9
+ a(href='#long-tasks') CPU Long Tasks
10
+ |  | 
11
+ if browsertime && browsertime.timings && browsertime.timings.firstInput !== undefined
12
+ a(href='#first-input-delay') First Input Delay
13
+ |  | 
14
+ if cpu.categories
15
+ a(href='#cpu-time-spent') CPU Time Spent
16
+ |  | 
17
+ if cpu.urls && cpu.urls.length > 0
18
+ a(href='#cpu-time-spent-per-request') CPU Time Spent Per Request
19
+ |  | 
20
+ if pageInfo.data.thirdparty
21
+ a(href='#cpu-time-per-tool') CPU Time Per Tool/Domain
22
+ |  | 
23
23
 
24
- if browsertime && browsertime.cpu && browsertime.cpu.events && !options.browsertime.enableProfileRun
25
- p Download the Chrome trace log and drag and drop it into Developer Tools / Performance in Chrome.
26
- .downloads
27
- if options.browsertime.chrome && options.browsertime.chrome.timeline
28
- - const tracePath = 'data/trace-' + (runNumber? runNumber : 1) + '.json.gz'
29
- a.button.button-download(href=tracePath, download=downloadName + '-timeline.json.gz') Download trace log
24
+ a#cpu
25
+ h2 CPU
30
26
 
31
- if options.browsertime && options.browsertime.firefox && options.browsertime.firefox.geckoProfiler && options.browser === 'firefox' && !options.browsertime.enableProfileRun
32
- p Download the Firefox Geckoprofiler trace and drag and drop it into
33
- a(href='https://profiler.firefox.com') https://profiler.firefox.com
34
- .downloads
35
- - const tracePath = 'data/geckoProfile-' + (runNumber? runNumber : 1) + '.json.gz'
36
- a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download trace
27
+ if cpu.events && !options.browsertime.enableProfileRun
28
+ p Download the Chrome trace log and drag and drop it into Developer Tools / Performance in Chrome.
29
+ .downloads
30
+ if options.browsertime.chrome && options.browsertime.chrome.timeline
31
+ - const tracePath = 'data/trace-' + (runNumber? runNumber : 1) + '.json.gz'
32
+ a.button.button-download(href=tracePath, download=downloadName + '-timeline.json.gz') Download trace log
37
33
 
38
- if options.browsertime && options.browsertime.enableProfileRun
39
- if options.browser === 'firefox'
34
+ if options.browsertime && options.browsertime.firefox && options.browsertime.firefox.geckoProfiler && options.browser === 'firefox' && !options.browsertime.enableProfileRun
40
35
  p Download the Firefox Geckoprofiler trace and drag and drop it into
41
- a(href='https://profiler.firefox.com') https://profiler.firefox.com
36
+ a(href='https://profiler.firefox.com') https://profiler.firefox.com
42
37
  .downloads
43
- - const tracePath = 'data/geckoProfile-1-extra.json.gz'
44
- a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download extra run trace log
45
- else if options.browser === 'chrome'
46
- p Download the Chrome trace log and drag and drop it into Developer Tools / Performance in Chrome.
47
- - const tracePath = 'data/trace-1-extra-run.json.gz'
48
- a.button.button-download(href=tracePath, download=downloadName + '-timeline.json.gz') Download extra run trace log
38
+ - const tracePath = 'data/geckoProfile-' + (runNumber? runNumber : 1) + '.json.gz'
39
+ a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download trace
49
40
 
50
- if browsertime && browsertime.cpu && browsertime.cpu.longTasks
51
- a#long-tasks
52
- h3 Long Tasks
53
- p Collected using the Long Task API. A long task is a task that take 50 milliseconds or more.
54
- if browsertime.cpu.longTasks.tasks > 0
55
- table
56
- tr
57
- th Type
58
- th Quantity
59
- th Total duration (ms)
60
- tr
61
- td Total Blocking Time
62
- td
63
- td #{browsertime.cpu.longTasks.totalBlockingTime}
64
- tr
65
- td Max Potential First Input Delay
66
- td
67
- td #{browsertime.cpu.longTasks.maxPotentialFid}
41
+ if options.browsertime && options.browsertime.enableProfileRun
42
+ if options.browser === 'firefox'
43
+ p Download the Firefox Geckoprofiler trace and drag and drop it into
44
+ a(href='https://profiler.firefox.com') https://profiler.firefox.com
45
+ .downloads
46
+ - const tracePath = 'data/geckoProfile-1-extra.json.gz'
47
+ a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download extra run trace log
48
+ else if options.browser === 'chrome'
49
+ p Download the Chrome trace log and drag and drop it into Developer Tools / Performance in Chrome.
50
+ - const tracePath = 'data/trace-1-extra-run.json.gz'
51
+ a.button.button-download(href=tracePath, download=downloadName + '-timeline.json.gz') Download extra run trace log
68
52
 
69
- tr
70
- td Long Tasks before First Paint
71
- td #{browsertime.cpu.longTasks.beforeFirstPaint.tasks}
72
- td #{browsertime.cpu.longTasks.beforeFirstPaint.totalDuration.toFixed(0)}
73
- tr
74
- td Long Tasks before First Contentful Paint
75
- td #{browsertime.cpu.longTasks.beforeFirstContentfulPaint.tasks}
76
- td #{browsertime.cpu.longTasks.beforeFirstContentfulPaint.totalDuration.toFixed(0)}
77
- tr
78
- td Long Tasks before Largest Contentful Paint
79
- td #{browsertime.cpu.longTasks.beforeLargestContentfulPaint.tasks}
80
- td #{browsertime.cpu.longTasks.beforeLargestContentfulPaint.totalDuration.toFixed(0)}
81
- tr
82
- td Long Tasks after Load Event End
83
- td #{browsertime.cpu.longTasks.afterLoadEventEnd.tasks}
84
- td #{browsertime.cpu.longTasks.afterLoadEventEnd.totalDuration.toFixed(0)}
85
- tr
86
- td Total Long Tasks
87
- td #{browsertime.cpu.longTasks.tasks}
88
- td #{browsertime.cpu.longTasks.totalDuration.toFixed(0)}
89
- p CPU last long task happened at #{h.time.ms(browsertime.cpu.longTasks.lastLongTask)}
90
- h4 Individual Long Tasks
91
- table
92
- tr
93
- th name
94
- th startTime
95
- th duration
96
- th containerId
97
- th containerName
98
- th containerSrc
99
- th containerType
100
-
101
- each task in browsertime.pageinfo.longTask
53
+ if cpu.longTasks
54
+ a#long-tasks
55
+ h3 Long Tasks
56
+ p Collected using the Long Task API. A long task is a task that take 50 milliseconds or more.
57
+ if cpu.longTasks.tasks > 0
58
+ table
102
59
  tr
103
- td #{task.name}
104
- td #{task.startTime.toFixed(0)}
105
- td #{task.duration.toFixed(0)}
106
- td #{task.attribution[0].containerId}
107
- td #{task.attribution[0].containerName}
108
- td.url.assetsurl #{task.attribution[0].containerSrc}
109
- td #{task.attribution[0].containerType}
110
- else
111
- p No long tasks on the page!
112
-
113
- if browsertime && browsertime.timings && browsertime.timings.firstInput !== undefined
114
- a#first-input-delay
115
- h3 First Input Delay
116
- table
117
- tr
118
- th Name
119
- th Delay
120
- th Duration
121
- th Start Time
122
- th Processing Start
123
- th Processing End
124
- tr
125
- td #{browsertime.timings.firstInput.name}
126
- td #{h.time.ms(browsertime.timings.firstInput.delay)}
127
- td #{h.time.ms(browsertime.timings.firstInput.duration)}
128
- td #{h.time.ms(browsertime.timings.firstInput.startTime)}
129
- td #{h.time.ms(browsertime.timings.firstInput.processingStart)}
130
- td #{h.time.ms(browsertime.timings.firstInput.processingEnd)}
131
-
132
- if browsertime && browsertime.cpu && browsertime.cpu.categories
133
- a#cpu-time-spent
134
- h3 CPU time spent
135
- p Calculated using Tracium.
60
+ th Type
61
+ th Quantity
62
+ th Total duration (ms)
63
+ tr
64
+ td Total Blocking Time
65
+ td
66
+ td #{cpu.longTasks.totalBlockingTime}
67
+ tr
68
+ td Max Potential First Input Delay
69
+ td
70
+ td #{cpu.longTasks.maxPotentialFid}
136
71
 
137
- .row
138
- .one-half.column
139
- if browsertime && browsertime.cpu && browsertime.cpu.categories
140
- table
141
72
  tr
142
- th(colspan='2') Categories (ms)
143
- each value, name in browsertime.cpu.categories
144
- tr
145
- td #{name}
146
- td #{value.toFixed(0)}
147
- .one-half.column
148
- if browsertime && browsertime.cpu && browsertime.cpu.events
73
+ td Long Tasks before First Paint
74
+ td #{cpu.longTasks.beforeFirstPaint.tasks}
75
+ td #{cpu.longTasks.beforeFirstPaint.totalDuration.toFixed(0)}
76
+ tr
77
+ td Long Tasks before First Contentful Paint
78
+ td #{cpu.longTasks.beforeFirstContentfulPaint.tasks}
79
+ td #{cpu.longTasks.beforeFirstContentfulPaint.totalDuration.toFixed(0)}
80
+ tr
81
+ td Long Tasks before Largest Contentful Paint
82
+ td #{cpu.longTasks.beforeLargestContentfulPaint.tasks}
83
+ td #{cpu.longTasks.beforeLargestContentfulPaint.totalDuration.toFixed(0)}
84
+ tr
85
+ td Long Tasks after Load Event End
86
+ td #{cpu.longTasks.afterLoadEventEnd.tasks}
87
+ td #{cpu.longTasks.afterLoadEventEnd.totalDuration.toFixed(0)}
88
+ tr
89
+ td Total Long Tasks
90
+ td #{cpu.longTasks.tasks}
91
+ td #{cpu.longTasks.totalDuration.toFixed(0)}
92
+ p CPU last long task happened at #{h.time.ms(cpu.longTasks.lastLongTask)}
93
+ h4 Individual Long Tasks
149
94
  table
150
95
  tr
151
- th(colspan='2') Events (ms)
152
- - const cpuEvents = []
153
- - for (let key of Object.keys(browsertime.cpu.events)) {cpuEvents.push({name: key, value: browsertime.cpu.events[key] })}
154
- - cpuEvents.sort((a,b)=>{return b.value - a.value})
155
- each event in cpuEvents
96
+ th name
97
+ th startTime
98
+ th duration
99
+ th containerId
100
+ th containerName
101
+ th containerSrc
102
+ th containerType
103
+
104
+ each task in browsertime.pageinfo.longTask
156
105
  tr
157
- td #{event.name}
158
- td #{event.value.toFixed(0)}
106
+ td #{task.name}
107
+ td #{task.startTime.toFixed(0)}
108
+ td #{task.duration.toFixed(0)}
109
+ td #{task.attribution[0].containerId}
110
+ td #{task.attribution[0].containerName}
111
+ td.url.assetsurl #{task.attribution[0].containerSrc}
112
+ td #{task.attribution[0].containerType}
113
+ else
114
+ p No long tasks on the page!
159
115
 
160
- if browsertime && browsertime.cpu && browsertime.cpu.urls && browsertime.cpu.urls.length > 0
161
- a#cpu-time-spent-per-request
162
- h3 Time spent per request
116
+ if browsertime && browsertime.timings && browsertime.timings.firstInput !== undefined
117
+ a#first-input-delay
118
+ h3 First Input Delay
163
119
  table
164
120
  tr
165
- th URL
166
- th CPU time (ms)
167
- each data in browsertime.cpu.urls
168
- tr
169
- td.url.assetsurl
170
- a(href=data.url)= data.url
171
- td #{data.value.toFixed(0)}
121
+ th Name
122
+ th Delay
123
+ th Duration
124
+ th Start Time
125
+ th Processing Start
126
+ th Processing End
127
+ tr
128
+ td #{browsertime.timings.firstInput.name}
129
+ td #{h.time.ms(browsertime.timings.firstInput.delay)}
130
+ td #{h.time.ms(browsertime.timings.firstInput.duration)}
131
+ td #{h.time.ms(browsertime.timings.firstInput.startTime)}
132
+ td #{h.time.ms(browsertime.timings.firstInput.processingStart)}
133
+ td #{h.time.ms(browsertime.timings.firstInput.processingEnd)}
134
+
135
+ if cpu.categories
136
+ a#cpu-time-spent
137
+ h3 CPU time spent
138
+ p Calculated using Tracium.
172
139
 
173
- if pageInfo.data.thirdparty
174
- - const thirdparty = medianRun ? pageInfo.data.thirdparty.pageSummary.runs[medianRun.runIndex - 1] : pageInfo.data.thirdparty.run
140
+ .row
141
+ .one-half.column
142
+ if cpu.categories
143
+ table
144
+ tr
145
+ th(colspan='2') Categories (ms)
146
+ each value, name in cpu.categories
147
+ tr
148
+ td #{name}
149
+ td #{value.toFixed(0)}
150
+ .one-half.column
151
+ if cpu.events
152
+ table
153
+ tr
154
+ th(colspan='2') Events (ms)
155
+ - const cpuEvents = []
156
+ - for (let key of Object.keys(cpu.events)) {cpuEvents.push({name: key, value: cpu.events[key] })}
157
+ - cpuEvents.sort((a,b)=>{return b.value - a.value})
158
+ each event in cpuEvents
159
+ tr
160
+ td #{event.name}
161
+ td #{event.value.toFixed(0)}
175
162
 
176
- if thirdparty && thirdparty.cpuPerTool && Object.keys(thirdparty.cpuPerTool).length > 0
177
- a#cpu-time-per-tool
178
- h3 CPU time spent
163
+ if cpu.urls && cpu.urls.length > 0
164
+ a#cpu-time-spent-per-request
165
+ h3 Time spent per request
179
166
  table
180
167
  tr
181
- th Tool/domain
182
- th Time (ms)
183
- each tool in Object.keys(thirdparty.cpuPerTool)
184
- tr
185
- td #{tool}
186
- td.number #{thirdparty.cpuPerTool[tool].toFixed(1)}
168
+ th URL
169
+ th CPU time (ms)
170
+ each data in cpu.urls
171
+ tr
172
+ td.url.assetsurl
173
+ a(href=data.url)= data.url
174
+ td #{data.value.toFixed(0)}
175
+
176
+ if pageInfo.data.thirdparty
177
+ - const thirdparty = medianRun ? pageInfo.data.thirdparty.pageSummary.runs[medianRun.runIndex - 1] : pageInfo.data.thirdparty.run
178
+
179
+ if thirdparty && thirdparty.cpuPerTool && Object.keys(thirdparty.cpuPerTool).length > 0
180
+ a#cpu-time-per-tool
181
+ h3 CPU time spent
182
+ table
183
+ tr
184
+ th Tool/domain
185
+ th Time (ms)
186
+ each tool in Object.keys(thirdparty.cpuPerTool)
187
+ tr
188
+ td #{tool}
189
+ td.number #{thirdparty.cpuPerTool[tool].toFixed(1)}
@@ -1,8 +1,15 @@
1
1
  - const browsertime = medianRun ? pageInfo.data.browsertime.pageSummary.browserScripts[medianRun.runIndex - 1] : pageInfo.data.browsertime.run
2
2
 
3
3
  if browsertime
4
- - const timings = browsertime.timings;
5
- - const visualMetrics = browsertime.visualMetrics;
4
+ - const timings = medianRun ? pageInfo.data.browsertime.pageSummary.browserScripts[medianRun.runIndex - 1].timings : pageInfo.data.browsertime.run.timings
5
+ - const visualMetrics = medianRun ? pageInfo.data.browsertime.pageSummary.visualMetrics[medianRun.runIndex - 1] : pageInfo.data.browsertime.run.visualMetrics
6
+ - const googleWebVitals = medianRun ? pageInfo.data.browsertime.pageSummary.googleWebVitals[medianRun.runIndex - 1] : pageInfo.data.browsertime.run.googleWebVitals
7
+ - const cpu = medianRun ? pageInfo.data.browsertime.pageSummary.cpu[medianRun.runIndex - 1] : pageInfo.data.browsertime.run.cpu
8
+ - const fullyLoaded = medianRun ? pageInfo.data.browsertime.pageSummary.fullyLoaded[medianRun.runIndex - 1] : pageInfo.data.browsertime.run.fullyLoaded
9
+ - const extras = medianRun ? pageInfo.data.browsertime.pageSummary.extras[medianRun.runIndex - 1] : pageInfo.data.browsertime.run.extras
10
+ - const custom = medianRun ? pageInfo.data.browsertime.pageSummary.browserScripts[medianRun.runIndex - 1].custom : pageInfo.data.browsertime.run.custom
11
+ - const cdp = medianRun ? pageInfo.data.browsertime.pageSummary.cdp[medianRun.runIndex - 1] : pageInfo.data.browsertime.run.cdp
12
+
6
13
  small
7
14
  | |
8
15
  a(href='#browsermetrics') Browser metrics
@@ -19,22 +26,22 @@ if browsertime
19
26
  if timings.interactionToNextPaint
20
27
  a(href='#interactionToNextPaint') Interaction To Next Paint
21
28
  |  | 
22
- if browsertime.timings.elementTimings && Object.keys(browsertime.timings.elementTimings).length > 0
29
+ if timings.elementTimings && Object.keys(timings.elementTimings).length > 0
23
30
  a(href='#elementTimings') Element Timings
24
31
  |  | 
25
- if browsertime.custom
32
+ if custom
26
33
  a(href='#custom-scripts') Custom scripts
27
34
  |  | 
28
- if browsertime.extras && Object.keys(browsertime.extras).length > 0
35
+ if extras && Object.keys(extras).length > 0
29
36
  a(href='#extra-metrics') Extra metrics
30
37
  |  | 
31
38
  if options.browsertime.visualElements
32
39
  a(href='#visual-elements') Visual Elements
33
40
  |  | 
34
- if browsertime.timings.firstInput !== undefined
41
+ if timings.firstInput !== undefined
35
42
  a(href='#firstInput') First Input Delay
36
43
  |  | 
37
- if browsertime.cdp && browsertime.cdp.performance
44
+ if cdp
38
45
  a(href='#cdp-performance') Metrics from CDP
39
46
  |  | 
40
47
  if timings.serverTimings && timings.serverTimings.length > 0
@@ -136,7 +143,7 @@ if browsertime
136
143
  a(href=url) #{name}
137
144
  td.number #{h.time.ms(value)}
138
145
  .one-half.column
139
- if (browsertime.googleWebVitals)
146
+ if (googleWebVitals)
140
147
  table
141
148
  tr
142
149
  th(colspan='2') Google Web Vitals
@@ -165,16 +172,16 @@ if browsertime
165
172
  td
166
173
  a(href='#interactionToNextPaint') Interaction to next paint (INP)
167
174
  td.number #{h.time.ms(timings.interactionToNextPaint)}
168
- if browsertime.timings.firstInput !== undefined
175
+ if timings.firstInput !== undefined
169
176
  tr
170
177
  td
171
178
  a(href=baseHelpURL + 'firstInputDelay') First Input Delay (FID)
172
- td.number #{h.time.ms(browsertime.timings.firstInput.delay)}
179
+ td.number #{h.time.ms(timings.firstInput.delay)}
173
180
  else
174
181
  tr
175
182
  td
176
183
  a(href=baseHelpURL + 'totalBlockingTime') Total Blocking Time (TBT)
177
- td.number #{h.time.ms(browsertime.cpu.longTasks.totalBlockingTime)}
184
+ td.number #{h.time.ms(cpu.longTasks.totalBlockingTime)}
178
185
  table
179
186
  tr
180
187
  th(colspan='2') Extra timings
@@ -185,7 +192,7 @@ if browsertime
185
192
  if (timings.paintTiming && Object.keys(timings.paintTiming).length > 0)
186
193
  - const paintTimingHelper = { "first-contentful-paint": {"name": 'First Contentful Paint (FCP)', "friendly": "first-contentful-paint"}, "first-paint": {"name": 'First Paint', "friendly": "firstPaint" }};
187
194
  each value, name in timings.paintTiming
188
- if name === 'first-contentful-paint' && browsertime.googleWebVitals
195
+ if name === 'first-contentful-paint' && googleWebVitals
189
196
  // do nada
190
197
  else
191
198
  tr
@@ -212,7 +219,7 @@ if browsertime
212
219
  td
213
220
  a(href=baseHelpURL + 'timeToFirstInteractive') Time To First Interactive
214
221
  td.number #{h.time.ms(timings.timeToFirstInteractive.toFixed(0))}
215
- if (!browsertime.googleWebVitals && timings.largestContentfulPaint)
222
+ if (!googleWebVitals && timings.largestContentfulPaint)
216
223
  tr
217
224
  td
218
225
  a(href=baseHelpURL + 'largestContentfulPaint') Largest Contentful Paint (LCP)
@@ -221,16 +228,11 @@ if browsertime
221
228
  td
222
229
  a(href=baseHelpURL + 'loadEventEnd') Load Event End
223
230
  td.number #{h.time.ms(timings.loadEventEnd.toFixed(0))}
224
- if (timings.fullyLoaded)
225
- tr
226
- td
227
- a(href=baseHelpURL + 'fullyLoaded') Fully loaded
228
- td.number #{h.time.ms(timings.fullyLoaded.toFixed(0))}
229
- else if (browsertime.fullyLoaded)
231
+ if (fullyLoaded)
230
232
  tr
231
233
  td
232
234
  a(href=baseHelpURL + 'fullyLoaded') Fully loaded
233
- td.number #{h.time.ms(browsertime.fullyLoaded.toFixed(0))}
235
+ td.number #{h.time.ms(fullyLoaded.toFixed(0))}
234
236
  if (Object.keys(timings.userTimings.marks).length > 0)
235
237
  table
236
238
  tr
@@ -262,12 +264,12 @@ if browsertime
262
264
 
263
265
  a#custom-scripts
264
266
  h3 Custom metrics collected through JavaScript
265
- if browsertime.custom
267
+ if custom
266
268
  table
267
269
  tr
268
270
  th name
269
271
  th value
270
- each value, name in browsertime.custom
272
+ each value, name in custom
271
273
  tr
272
274
  td #{name}
273
275
  td #{value}
@@ -276,26 +278,26 @@ if browsertime
276
278
 
277
279
  a#extra-metrics
278
280
  h3 Extra metrics collected using scripting
279
- if browsertime.extras && Object.keys(browsertime.extras).length > 0
281
+ if extras && Object.keys(extras).length > 0
280
282
  table
281
283
  tr
282
284
  th name
283
285
  th value
284
- each value, name in browsertime.extras
286
+ each value, name in extras
285
287
  tr
286
288
  td #{name}
287
289
  td #{value}
288
290
  else
289
291
  p There are no custom extra metrics from scripting.
290
292
 
291
- if browsertime.cdp && browsertime.cdp.performance
293
+ if cdp && cdp.performance
292
294
  a#cdp-performance
293
295
  h3 CDP Performance
294
296
  table
295
297
  tr
296
298
  th name
297
299
  th value
298
- each value, name in browsertime.cdp.performance
300
+ each value, name in cdp.performance
299
301
  tr
300
302
  td #{name}
301
303
  td #{value.toFixed(0)}
@@ -1,7 +1,7 @@
1
1
  - const seriesVisualProgress = [];
2
2
  - let oldPercent = -1;
3
3
  - let oldValue = -1;
4
- each eachRow in browsertime.visualMetrics.VisualProgress
4
+ each eachRow in visualMetrics.VisualProgress
5
5
  - const newValue = eachRow.timestamp
6
6
  - const percent = eachRow.percent
7
7
  //- Sometimes VisualMetrics report the same percentage multiple times after each other
@@ -292,7 +292,7 @@ block content
292
292
  section#pagexray-panel
293
293
  include ../pagexray/index.pug
294
294
 
295
- if options.cpu || options.browsertime && options.browsertime.chrome && options.browsertime.chrome.collectLongTasks || (options.browsertime && options.browsertime.firefox && options.browsertime.firefox.geckoProfiler || options.browsertime &&options.browsertime.enableProfileRun)
295
+ if options.cpu || options.browsertime && options.browsertime.chrome && options.browsertime.chrome.collectLongTasks || (options.browsertime && options.browsertime.firefox && options.browsertime.firefox.geckoProfiler || options.browsertime && options.browsertime.enableProfileRun)
296
296
  section#cpu-panel
297
297
  include ../cpu/index.pug
298
298
 
@@ -66,15 +66,16 @@ if btStatistics
66
66
  +getRow(name, pageInfo, 'data.browsertime.pageSummary.statistics.visualMetrics.' + name, pageInfo.data.browsertime.pageSummary.visualMetrics, name, h.time.ms)
67
67
  if btStatistics.timings && btStatistics.timings.pageTimings
68
68
  tr
69
- td.extraheader(colspan='5') RUM Metrics
70
- +getRow('TTFB', pageInfo, 'data.browsertime.pageSummary.statistics.timings.pageTimings.backEndTime' , pageInfo.data.browsertime.pageSummary.browserScripts, 'timings.pageTimings.backEndTime', h.time.ms)
71
- +getRow('LCP', pageInfo, 'data.browsertime.pageSummary.statistics.timings.largestContentfulPaint.renderTime' , pageInfo.data.browsertime.pageSummary.browserScripts, 'timings.largestContentfulPaint.renderTime', h.time.ms)
72
- +getRow('FCP', pageInfo, 'data.browsertime.pageSummary.statistics.timings.paintTiming["first-contentful-paint"]', pageInfo.data.browsertime.pageSummary.browserScripts, 'timings.paintTiming["first-contentful-paint"]', h.time.ms)
69
+ td.extraheader(colspan='5') Google Web Vitals
70
+ +getRow('Time To First Byte (TTFB)', pageInfo, 'data.browsertime.pageSummary.statistics.timings.pageTimings.backEndTime' , pageInfo.data.browsertime.pageSummary.browserScripts, 'timings.pageTimings.backEndTime', h.time.ms)
71
+ +getRow('Largest Contentful Paint (LCP)', pageInfo, 'data.browsertime.pageSummary.statistics.timings.largestContentfulPaint.renderTime' , pageInfo.data.browsertime.pageSummary.browserScripts, 'timings.largestContentfulPaint.renderTime', h.time.ms)
72
+ +getRow('First Contentful Paint (FCP)', pageInfo, 'data.browsertime.pageSummary.statistics.timings.paintTiming["first-contentful-paint"]', pageInfo.data.browsertime.pageSummary.browserScripts, 'timings.paintTiming["first-contentful-paint"]', h.time.ms)
73
+ +getRow('Cumulative Layout Shift (CLS)', pageInfo, 'data.browsertime.pageSummary.statistics.pageinfo.cumulativeLayoutShift' , pageInfo.data.browsertime.pageSummary.browserScripts, 'pageinfo.cumulativeLayoutShift', h.noop)
74
+ tr
75
+ td.extraheader(colspan='5') More metrics
73
76
  each timing in timingMetrics
74
77
  +getRow(timing, pageInfo, 'data.browsertime.pageSummary.statistics.timings.' + timing , pageInfo.data.browsertime.pageSummary.browserScripts, 'timings.' + timing, h.time.ms)
75
78
 
76
- +getRow('CLS', pageInfo, 'data.browsertime.pageSummary.statistics.pageinfo.cumulativeLayoutShift' , pageInfo.data.browsertime.pageSummary.browserScripts, 'pageinfo.cumulativeLayoutShift', h.noop)
77
-
78
79
  if btStatistics.timings && btStatistics.timings.userTimings && btStatistics.timings.userTimings.marks
79
80
  tr
80
81
  td.extraheader(colspan='5') User Timing
@@ -88,8 +89,8 @@ if btStatistics
88
89
  if btStatistics.cpu && btStatistics.cpu.longTasks
89
90
  tr
90
91
  td.extraheader(colspan='5') CPU
91
- +getRow('Total Blocking Time', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.totalBlockingTime' , pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.totalBlockingTime', h.time.ms)
92
- +getRow('Max Potential FID', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.maxPotentialFid', pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.maxPotentialFid', h.time.ms)
93
- +getRow('CPU long tasks ', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.tasks' , pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.tasks', h.noop)
94
- +getRow('CPU longest task duration ', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.durations.max' , pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.durations.max', h.time.ms)
95
- +getRow('CPU last long task happens at', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.lastLongTask' , pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.lastLongTask', h.time.ms)
92
+ +getRow('Total Blocking Time', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.totalBlockingTime' , pageInfo.data.browsertime.pageSummary.cpu, 'longTasks.totalBlockingTime', h.time.ms)
93
+ +getRow('Max Potential FID', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.maxPotentialFid', pageInfo.data.browsertime.pageSummary.cpu, 'longTasks.maxPotentialFid', h.time.ms)
94
+ +getRow('CPU long tasks ', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.tasks' , pageInfo.data.browsertime.pageSummary.cpu, 'longTasks.tasks', h.noop)
95
+ +getRow('CPU longest task duration ', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.durations.max' , pageInfo.data.browsertime.pageSummary.cpu, 'longTasks.durations.max', h.time.ms)
96
+ +getRow('CPU last long task happens at', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.lastLongTask' , pageInfo.data.browsertime.pageSummary.cpu, 'longTasks.lastLongTask', h.time.ms)
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "sitespeed.io",
3
- "version": "28.0.0-beta.1",
3
+ "version": "28.0.0-beta.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "sitespeed.io",
9
- "version": "28.0.0-beta.1",
9
+ "version": "28.0.0-beta.2",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@google-cloud/storage": "6.9.5",
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "sitespeed.io": "./bin/sitespeed.js",
6
6
  "sitespeed.io-wpr": "./bin/browsertimeWebPageReplay.js"
7
7
  },
8
- "version": "28.0.0-beta.1",
8
+ "version": "28.0.0-beta.2",
9
9
  "description": "Analyze the web performance of your site",
10
10
  "keywords": [
11
11
  "performance",