Use Browsertime 16.7.0 and show the new metrics (#3656)

* Use Browsertime 16.7.0 and show the new metrics
This commit is contained in:
Peter Hedenskog 2022-05-20 11:03:33 +02:00 committed by GitHub
parent 4f36c2c88c
commit 5cc0b04be8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 96 additions and 11 deletions

View File

@ -1 +1 @@
16.6.0
16.7.0

View File

@ -52,6 +52,15 @@ module.exports = {
);
}
if (browsertimeRunData.timings.interactionToNextPaint) {
statsHelpers.pushGroupStats(
this.statsPerType,
this.groups[group],
['timings', 'interactionToNextPaint'],
browsertimeRunData.timings.interactionToNextPaint
);
}
if (browsertimeRunData.pageinfo.cumulativeLayoutShift) {
statsHelpers.pushGroupStats(
this.statsPerType,

View File

@ -93,6 +93,11 @@ block content
if lcp
tr
th(colspan='2') Google Web Vitals
- ttfb = get(d, 'browsertime.run.timings.pageTimings.backEndTime')
if ttfb
tr
td TTFB
td #{h.time.ms(ttfb)}
if fcp
tr
td First Contentful Paint (FCP)
@ -106,6 +111,10 @@ block content
tr
td Cumulative Layout Shift (CLS)
td #{cls.toFixed(2)}
- inp = get(d, 'browsertime.run.timings.interactionToNextPaint')
if inp
tr
td #{h.time.ms(inp)}
- tbt = get(d, 'browsertime.run.cpu.longTasks.totalBlockingTime')
if tbt
tr
@ -128,6 +137,12 @@ block content
tr
td CPU longest task duration
td #{h.time.ms(maxLongTask)}
- lastLongTask= get(d, 'browsertime.run.cpu.longTasks.lastLongTask')
if lastLongTask
tr
td CPU last long task happens at
td #{h.time.ms(lastLongTask)}
- firstVisualChange = get(d, 'browsertime.run.visualMetrics.FirstVisualChange')
if firstVisualChange
tr

View File

@ -16,6 +16,9 @@ if browsertime
if browsertime.pageinfo && browsertime.pageinfo.cumulativeLayoutShift !== undefined
a(href='#cumulativeLayoutShift') Cumulative Layout Shift
|  | 
if timings.interactionToNextPaint
a(href='#interactionToNextPaint') Interaction To Next Paint
|  | 
if browsertime.timings.elementTimings && Object.keys(browsertime.timings.elementTimings).length > 0
a(href='#elementTimings') Element Timings
|  | 
@ -90,6 +93,11 @@ if browsertime
td
a(href=baseHelpURL + 'LastMeaningfulPaint') Last Meaningful Paint
td.number #{h.time.ms(visualMetrics.LastMeaningfulPaint.toFixed(0))}
if visualMetrics.LargestContentfulPaint
tr
td
a(href=baseHelpURL + 'LargestContentfulPaint') Largest Contentful Paint
td.number #{h.time.ms(visualMetrics.LargestContentfulPaint.toFixed(0))}
tr
td
a(href=baseHelpURL + 'VisualComplete85') Visual Complete 85%
@ -132,6 +140,11 @@ if browsertime
table
tr
th(colspan='2') Google Web Vitals
if (timings.ttfb)
tr
td
a(href=baseHelpURL + 'ttfb') Time to first byte (TTFB)
td.number #{h.time.ms(timings.ttfb.toFixed(0))}
if (timings.paintTiming && timings.paintTiming['first-contentful-paint'])
tr
td
@ -147,6 +160,11 @@ if browsertime
td
a(href='#cumulativeLayoutShift') Cumulative Layout Shift (CLS)
td.number #{browsertime.pageinfo.cumulativeLayoutShift.toFixed(2)}
if (timings.interactionToNextPaint)
tr
td
a(href='#interactionToNextPaint') Interaction to next paint (INP)
td.number #{h.time.ms(timings.interactionToNextPaint)}
if browsertime.timings.firstInput !== undefined
tr
td
@ -238,6 +256,7 @@ if browsertime
include ./lcp.pug
include ./firstInput.pug
include ./layoutShift.pug
include ./inp.pug
include ./elementTimings.pug
include ./serverTimings.pug

View File

@ -0,0 +1,11 @@
if browsertime.pageinfo && browsertime.pageinfo.interactionToNextPaintInfo!== undefined
a#interactionToNextPaint
h3 Interaction to Next Paint
p Interaction to Next Paint (INP) is an experimental metric that try to measure responsiveness. It's useful if you are testing user journeys. The metric is really new and we try to measure it as good as possible. Read more about
a(href='https://web.dev/inp/') Interaction to Next Paint
| .
.row
p The measured latency was #{h.time.ms(browsertime.pageinfo.interactionToNextPaintInfo.latency)}. And the events that contributed to the latency was:
ul
each entry in browsertime.pageinfo.interactionToNextPaintInfo.entries
li #{entry.name} - #{h.time.ms(entry.duration)}

View File

@ -117,9 +117,15 @@ block content
td #{h.time.ms(fullyLoaded)}
- fcp = get(d, 'browsertime.pageSummary.statistics.timings.paintTiming["first-contentful-paint"].median')
- lcp = get(d, 'browsertime.pageSummary.statistics.timings.largestContentfulPaint.renderTime.median')
- ttfb = get(d, 'browsertime.pageSummary.statistics.timings.pageTimings.backEndTime.median')
- inp = get(d, 'browsertime.pageSummary.statistics.timings.interactionToNextPaint.median')
if lcp
tr
th(colspan='2') Google Web Vitals
th(colspan='2') Google Web Vitals
if ttfb
tr
td TTFB [median]
td #{h.time.ms(ttfb)}
if fcp
tr
td First Contentful Paint (FCP) [median]
@ -134,6 +140,11 @@ block content
td Cumulative Layout Shift (CLS) [median]
td #{cls.toFixed(2)}
- tbt = get(d, 'browsertime.pageSummary.statistics.cpu.longTasks.totalBlockingTime.median')
if inp
tr
td Interaction To Next Paint (INP) [median]
td #{h.time.ms(inp)}
- tbt = get(d, 'browsertime.pageSummary.statistics.cpu.longTasks.totalBlockingTime.median')
if tbt
tr
td Total Blocking Time [median]
@ -155,6 +166,11 @@ block content
tr
td CPU longest task duration
td #{h.time.ms(maxLongTask)}
- lastLongTask = get(d, 'browsertime.pageSummary.statistics.cpu.longTasks.lastLongTask.median')
if lastLongTask
tr
td CPU last long task happens at
td #{h.time.ms(lastLongTask)}
- firstVisualChange = get(d, 'browsertime.pageSummary.statistics.visualMetrics.FirstVisualChange.median')
if firstVisualChange
tr

View File

@ -91,4 +91,5 @@ if btStatistics
+getRow('Total Blocking Time', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.totalBlockingTime' , pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.totalBlockingTime', h.time.ms)
+getRow('Max Potential FID', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.maxPotentialFid', pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.maxPotentialFid', h.time.ms)
+getRow('CPU long tasks ', pageInfo, 'data.browsertime.pageSummary.statistics.cpu.longTasks.tasks' , pageInfo.data.browsertime.pageSummary.browserScripts, 'cpu.longTasks.tasks', h.noop)
+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)
+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)
+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)

View File

@ -4,6 +4,13 @@ const { noop, size, time, co2, httpErrors, decimals } = require('./helpers');
module.exports = {
browsertime: {
googleWebVitals: {
timeToFirstByte: {
path: 'statistics.timings.pageTimings.backEndTime.median',
summaryPath: 'pageTimings.backEndTime',
runPath: 'timings.pageTimings.backEndTime',
name: 'Time to First Byte',
format: time.ms
},
firstContentfulPaint: {
path: "statistics.timings.paintTiming['first-contentful-paint'].median",
summaryPath: "timings.paintTiming['first-contentful-paint']",
@ -18,6 +25,13 @@ module.exports = {
name: 'Largest Contentful Paint',
format: time.ms
},
interactionToNextPaint: {
path: 'statistics.timings.interactionToNextPaint.median',
summaryPath: 'timings.interactionToNextPaint',
runPath: 'timings.interactionToNextPaint',
name: 'Interaction to Next Paint',
format: time.ms
},
totalBlockingTime: {
path: 'statistics.cpu.longTasks.totalBlockingTime.median',
summaryPath: 'cpu.longTasks.totalBlockingTime',

14
npm-shrinkwrap.json generated
View File

@ -13,7 +13,7 @@
"@tgwf/co2": "0.8.0",
"aws-sdk": "2.1121.0",
"axe-core": "4.4.1",
"browsertime": "16.5.0",
"browsertime": "16.7.0",
"cli-color": "2.0.2",
"coach-core": "7.1.2",
"concurrent-queue": "7.0.2",
@ -1681,9 +1681,9 @@
}
},
"node_modules/browsertime": {
"version": "16.5.0",
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-16.5.0.tgz",
"integrity": "sha512-4RacX8OOb7MsnMSsNMGDGyiFj8EyFIBiiXS92M4nRmKaBawiKFWtgXJxyDdynRb3TT9VsSSXFBOqqGC4/Lp5+Q==",
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-16.7.0.tgz",
"integrity": "sha512-AenR2/6ZQOR7tE18e/03wmxHznAsLbg4vcyqAflJKVGSKbH9G6LbsYADpW2Ynf+NORpHrJ0LXqAbrpOFhIWKhQ==",
"dependencies": {
"@cypress/xvfb": "1.2.4",
"@devicefarmer/adbkit": "2.11.3",
@ -9761,9 +9761,9 @@
}
},
"browsertime": {
"version": "16.5.0",
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-16.5.0.tgz",
"integrity": "sha512-4RacX8OOb7MsnMSsNMGDGyiFj8EyFIBiiXS92M4nRmKaBawiKFWtgXJxyDdynRb3TT9VsSSXFBOqqGC4/Lp5+Q==",
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-16.7.0.tgz",
"integrity": "sha512-AenR2/6ZQOR7tE18e/03wmxHznAsLbg4vcyqAflJKVGSKbH9G6LbsYADpW2Ynf+NORpHrJ0LXqAbrpOFhIWKhQ==",
"requires": {
"@cypress/xvfb": "1.2.4",
"@devicefarmer/adbkit": "2.11.3",

View File

@ -80,7 +80,7 @@
"@tgwf/co2": "0.8.0",
"aws-sdk": "2.1121.0",
"axe-core": "4.4.1",
"browsertime": "16.5.0",
"browsertime": "16.7.0",
"coach-core": "7.1.2",
"cli-color": "2.0.2",
"concurrent-queue": "7.0.2",