sitespeed.io 21.2.2 → 21.6.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.
- package/CHANGELOG.md +31 -1
- package/Dockerfile +1 -1
- package/lib/cli/cli.js +33 -2
- package/lib/plugins/browsertime/analyzer.js +3 -2
- package/lib/plugins/crux/cli.js +6 -0
- package/lib/plugins/crux/index.js +148 -130
- package/lib/plugins/crux/pug/index.pug +57 -25
- package/lib/plugins/html/assets/css/index.min.css +1 -1
- package/lib/plugins/html/assets/js/chartist-plugin-legend.min.js +1 -0
- package/lib/plugins/html/renderer.js +1 -1
- package/lib/plugins/html/src/sass/components/chartistExtras.scss +70 -3
- package/lib/plugins/html/templates/layout.pug +1 -0
- package/lib/plugins/html/templates/url/iteration/index.pug +29 -16
- package/lib/plugins/html/templates/url/summary/index.pug +47 -12
- package/npm-shrinkwrap.json +31 -31
- package/package.json +2 -2
- package/release/feed.js +2 -1
|
@@ -77,6 +77,8 @@ block content
|
|
|
77
77
|
th Metric
|
|
78
78
|
th Value
|
|
79
79
|
- performanceScore = get(d, 'coach.pageSummary.advice.performance.score')
|
|
80
|
+
tr
|
|
81
|
+
th(colspan='2') Page metrics
|
|
80
82
|
if performanceScore
|
|
81
83
|
tr
|
|
82
84
|
td Performance Score
|
|
@@ -96,32 +98,32 @@ block content
|
|
|
96
98
|
tr
|
|
97
99
|
td Requests
|
|
98
100
|
td #{requests}
|
|
99
|
-
- ttfb = get(d, 'browsertime.pageSummary.statistics.timings.pageTimings.backEndTime.median')
|
|
101
|
+
- ttfb = get(d, 'browsertime.pageSummary.statistics.timings.pageTimings.backEndTime.median')
|
|
102
|
+
tr
|
|
103
|
+
th(colspan='2') Timing metrics
|
|
100
104
|
if ttfb
|
|
101
105
|
tr
|
|
102
106
|
td TTFB [median]
|
|
103
107
|
td #{h.time.ms(ttfb)}
|
|
108
|
+
- firstPaint = get(d, 'browsertime.pageSummary.statistics.timings.firstPaint.median')
|
|
109
|
+
if firstPaint
|
|
110
|
+
tr
|
|
111
|
+
td First Paint [median]
|
|
112
|
+
td #{h.time.ms(firstPaint)}
|
|
104
113
|
- fullyLoaded = get(d, 'browsertime.pageSummary.statistics.timings.fullyLoaded.median')
|
|
105
114
|
if fullyLoaded
|
|
106
115
|
tr
|
|
107
116
|
td Fully Loaded [median]
|
|
108
117
|
td #{h.time.ms(fullyLoaded)}
|
|
109
|
-
- firstVisualChange = get(d, 'browsertime.pageSummary.statistics.visualMetrics.FirstVisualChange.median')
|
|
110
|
-
- firstPaint = get(d, 'browsertime.pageSummary.statistics.timings.firstPaint.median')
|
|
111
|
-
if firstVisualChange
|
|
112
|
-
tr
|
|
113
|
-
td First Visual Change [median]
|
|
114
|
-
td #{h.time.ms(firstVisualChange)}
|
|
115
|
-
else if firstPaint
|
|
116
|
-
tr
|
|
117
|
-
td First Paint [median]
|
|
118
|
-
td #{h.time.ms(firstPaint)}
|
|
119
118
|
- fcp = get(d, 'browsertime.pageSummary.statistics.timings.paintTiming["first-contentful-paint"].median')
|
|
119
|
+
- lcp = get(d, 'browsertime.pageSummary.statistics.timings.largestContentfulPaint.renderTime.median')
|
|
120
|
+
if lcp
|
|
121
|
+
tr
|
|
122
|
+
th(colspan='2') Google Web Vitals
|
|
120
123
|
if fcp
|
|
121
124
|
tr
|
|
122
125
|
td First Contentful Paint (FCP) [median]
|
|
123
126
|
td #{h.time.ms(fcp)}
|
|
124
|
-
- lcp = get(d, 'browsertime.pageSummary.statistics.timings.largestContentfulPaint.renderTime.median')
|
|
125
127
|
if lcp
|
|
126
128
|
tr
|
|
127
129
|
td Largest Contentful Paint (LCP) [median]
|
|
@@ -143,6 +145,8 @@ block content
|
|
|
143
145
|
td #{h.time.ms(mpFID)}
|
|
144
146
|
- longTasks = get(d, 'browsertime.pageSummary.statistics.cpu.longTasks.tasks.median')
|
|
145
147
|
if longTasks
|
|
148
|
+
tr
|
|
149
|
+
th(colspan='2') CPU metrics
|
|
146
150
|
tr
|
|
147
151
|
td CPU long tasks [median]
|
|
148
152
|
td #{longTasks}
|
|
@@ -151,6 +155,13 @@ block content
|
|
|
151
155
|
tr
|
|
152
156
|
td CPU longest task duration
|
|
153
157
|
td #{h.time.ms(maxLongTask)}
|
|
158
|
+
- firstVisualChange = get(d, 'browsertime.pageSummary.statistics.visualMetrics.FirstVisualChange.median')
|
|
159
|
+
if firstVisualChange
|
|
160
|
+
tr
|
|
161
|
+
th(colspan='2') Visual Metrics
|
|
162
|
+
tr
|
|
163
|
+
td First Visual Change [median]
|
|
164
|
+
td #{h.time.ms(firstVisualChange)}
|
|
154
165
|
- speedIndex = get(d, 'browsertime.pageSummary.statistics.visualMetrics.SpeedIndex.median')
|
|
155
166
|
if speedIndex
|
|
156
167
|
tr
|
|
@@ -171,7 +182,31 @@ block content
|
|
|
171
182
|
tr
|
|
172
183
|
td Last Visual Change [median]
|
|
173
184
|
td #{h.time.ms(lastVisualChange)}
|
|
185
|
+
- cruxFCP = get(d, 'crux.pageSummary.loadingExperience.ALL.data.record.metrics.first_contentful_paint.percentiles.p75');
|
|
186
|
+
if cruxFCP
|
|
187
|
+
tr
|
|
188
|
+
th(colspan='2') Chrome User Experience Report (CRUX)
|
|
189
|
+
tr
|
|
190
|
+
td First Contentful Paint [p75]
|
|
191
|
+
td #{h.time.ms(cruxFCP)}
|
|
192
|
+
- cruxLCP = get(d, 'crux.pageSummary.loadingExperience.ALL.data.record.metrics.largest_contentful_paint.percentiles.p75');
|
|
193
|
+
if cruxLCP
|
|
194
|
+
tr
|
|
195
|
+
td Largest Contentful Paint (LCP) [p75]
|
|
196
|
+
td #{h.time.ms(cruxLCP)}
|
|
197
|
+
- cruxFID = get(d, 'crux.pageSummary.loadingExperience.ALL.data.record.metrics.first_input_delay.percentiles.p75');
|
|
198
|
+
if cruxFID
|
|
199
|
+
tr
|
|
200
|
+
td First Input Delay (FID) [p75]
|
|
201
|
+
td #{h.time.ms(cruxFID)}
|
|
202
|
+
- cruxCLS = get(d, 'crux.pageSummary.loadingExperience.ALL.data.record.metrics.cumulative_layout_shift.percentiles.p75');
|
|
203
|
+
if cruxCLS || cruxCLS === 0
|
|
204
|
+
tr
|
|
205
|
+
td Cumulative Layout Shift (CLS) [p75]
|
|
206
|
+
td #{Number(cruxCLS).toFixed(2)}
|
|
174
207
|
if !d.browsertime && d.webpagetest
|
|
208
|
+
tr
|
|
209
|
+
th(colspan='2') WebPageTest
|
|
175
210
|
tr
|
|
176
211
|
td Render (first view)
|
|
177
212
|
td #{d.webpagetest.pageSummary.data.median.firstView.render}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sitespeed.io",
|
|
3
|
-
"version": "21.
|
|
3
|
+
"version": "21.6.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "sitespeed.io",
|
|
9
|
-
"version": "21.
|
|
9
|
+
"version": "21.6.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@google-cloud/storage": "5.8.3",
|
|
13
13
|
"@tgwf/co2": "0.8.0",
|
|
14
14
|
"aws-sdk": "2.882.0",
|
|
15
15
|
"axe-core": "4.3.5",
|
|
16
|
-
"browsertime": "14.
|
|
16
|
+
"browsertime": "14.18.0",
|
|
17
17
|
"cli-color": "2.0.0",
|
|
18
18
|
"coach-core": "7.0.0",
|
|
19
19
|
"concurrent-queue": "7.0.2",
|
|
@@ -910,9 +910,9 @@
|
|
|
910
910
|
"optional": true
|
|
911
911
|
},
|
|
912
912
|
"node_modules/@sitespeed.io/chromedriver": {
|
|
913
|
-
"version": "
|
|
914
|
-
"resolved": "https://registry.npmjs.org/@sitespeed.io/chromedriver/-/chromedriver-
|
|
915
|
-
"integrity": "sha512-
|
|
913
|
+
"version": "97.0.4692-7b",
|
|
914
|
+
"resolved": "https://registry.npmjs.org/@sitespeed.io/chromedriver/-/chromedriver-97.0.4692-7b.tgz",
|
|
915
|
+
"integrity": "sha512-h2P8Ln/qOu90LA8E89NRmrxWgbIYbm/ri4aRu0m/ItGVWVSwsFlxSRLe+6spBfmxBRtmxgAz2ws6wS6C/Jugkg==",
|
|
916
916
|
"hasInstallScript": true,
|
|
917
917
|
"dependencies": {
|
|
918
918
|
"node-downloader-helper": "1.0.19",
|
|
@@ -938,9 +938,9 @@
|
|
|
938
938
|
}
|
|
939
939
|
},
|
|
940
940
|
"node_modules/@sitespeed.io/geckodriver": {
|
|
941
|
-
"version": "0.29.1-
|
|
942
|
-
"resolved": "https://registry.npmjs.org/@sitespeed.io/geckodriver/-/geckodriver-0.29.1-
|
|
943
|
-
"integrity": "sha512-
|
|
941
|
+
"version": "0.29.1-3",
|
|
942
|
+
"resolved": "https://registry.npmjs.org/@sitespeed.io/geckodriver/-/geckodriver-0.29.1-3.tgz",
|
|
943
|
+
"integrity": "sha512-qHYtvH/81lPcgzFQB2qObp9M8bMIrc7O8TWm05SVfiGUKKy4Kku0huoa/IB9e0ksrrRFYtm9GQT6JF+bANZPKA==",
|
|
944
944
|
"hasInstallScript": true,
|
|
945
945
|
"dependencies": {
|
|
946
946
|
"node-downloader-helper": "1.0.18",
|
|
@@ -1465,15 +1465,15 @@
|
|
|
1465
1465
|
}
|
|
1466
1466
|
},
|
|
1467
1467
|
"node_modules/browsertime": {
|
|
1468
|
-
"version": "14.
|
|
1469
|
-
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-14.
|
|
1470
|
-
"integrity": "sha512-
|
|
1468
|
+
"version": "14.18.0",
|
|
1469
|
+
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-14.18.0.tgz",
|
|
1470
|
+
"integrity": "sha512-qsM5ymoSxwlTFOoQ/3naMvX1UZrzvy2jz02HCKsjRFBPGLyKy68KPK2bUMHCB+X7AKsFuIKxftoGpThGGx3iUQ==",
|
|
1471
1471
|
"dependencies": {
|
|
1472
1472
|
"@cypress/xvfb": "1.2.4",
|
|
1473
1473
|
"@devicefarmer/adbkit": "2.11.3",
|
|
1474
|
-
"@sitespeed.io/chromedriver": "
|
|
1474
|
+
"@sitespeed.io/chromedriver": "97.0.4692-7b",
|
|
1475
1475
|
"@sitespeed.io/edgedriver": "95.0.1020-30",
|
|
1476
|
-
"@sitespeed.io/geckodriver": "0.29.1-
|
|
1476
|
+
"@sitespeed.io/geckodriver": "0.29.1-3",
|
|
1477
1477
|
"@sitespeed.io/throttle": "3.0.0",
|
|
1478
1478
|
"@sitespeed.io/tracium": "0.3.3",
|
|
1479
1479
|
"btoa": "1.2.1",
|
|
@@ -4856,9 +4856,9 @@
|
|
|
4856
4856
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
|
4857
4857
|
},
|
|
4858
4858
|
"node_modules/minipass": {
|
|
4859
|
-
"version": "3.1.
|
|
4860
|
-
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.
|
|
4861
|
-
"integrity": "sha512
|
|
4859
|
+
"version": "3.1.6",
|
|
4860
|
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
|
|
4861
|
+
"integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
|
|
4862
4862
|
"dependencies": {
|
|
4863
4863
|
"yallist": "^4.0.0"
|
|
4864
4864
|
},
|
|
@@ -8180,9 +8180,9 @@
|
|
|
8180
8180
|
}
|
|
8181
8181
|
},
|
|
8182
8182
|
"@sitespeed.io/chromedriver": {
|
|
8183
|
-
"version": "
|
|
8184
|
-
"resolved": "https://registry.npmjs.org/@sitespeed.io/chromedriver/-/chromedriver-
|
|
8185
|
-
"integrity": "sha512-
|
|
8183
|
+
"version": "97.0.4692-7b",
|
|
8184
|
+
"resolved": "https://registry.npmjs.org/@sitespeed.io/chromedriver/-/chromedriver-97.0.4692-7b.tgz",
|
|
8185
|
+
"integrity": "sha512-h2P8Ln/qOu90LA8E89NRmrxWgbIYbm/ri4aRu0m/ItGVWVSwsFlxSRLe+6spBfmxBRtmxgAz2ws6wS6C/Jugkg==",
|
|
8186
8186
|
"requires": {
|
|
8187
8187
|
"node-downloader-helper": "1.0.19",
|
|
8188
8188
|
"node-stream-zip": "1.15.0"
|
|
@@ -8205,9 +8205,9 @@
|
|
|
8205
8205
|
}
|
|
8206
8206
|
},
|
|
8207
8207
|
"@sitespeed.io/geckodriver": {
|
|
8208
|
-
"version": "0.29.1-
|
|
8209
|
-
"resolved": "https://registry.npmjs.org/@sitespeed.io/geckodriver/-/geckodriver-0.29.1-
|
|
8210
|
-
"integrity": "sha512-
|
|
8208
|
+
"version": "0.29.1-3",
|
|
8209
|
+
"resolved": "https://registry.npmjs.org/@sitespeed.io/geckodriver/-/geckodriver-0.29.1-3.tgz",
|
|
8210
|
+
"integrity": "sha512-qHYtvH/81lPcgzFQB2qObp9M8bMIrc7O8TWm05SVfiGUKKy4Kku0huoa/IB9e0ksrrRFYtm9GQT6JF+bANZPKA==",
|
|
8211
8211
|
"requires": {
|
|
8212
8212
|
"node-downloader-helper": "1.0.18",
|
|
8213
8213
|
"node-stream-zip": "1.14.0",
|
|
@@ -8631,15 +8631,15 @@
|
|
|
8631
8631
|
}
|
|
8632
8632
|
},
|
|
8633
8633
|
"browsertime": {
|
|
8634
|
-
"version": "14.
|
|
8635
|
-
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-14.
|
|
8636
|
-
"integrity": "sha512-
|
|
8634
|
+
"version": "14.18.0",
|
|
8635
|
+
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-14.18.0.tgz",
|
|
8636
|
+
"integrity": "sha512-qsM5ymoSxwlTFOoQ/3naMvX1UZrzvy2jz02HCKsjRFBPGLyKy68KPK2bUMHCB+X7AKsFuIKxftoGpThGGx3iUQ==",
|
|
8637
8637
|
"requires": {
|
|
8638
8638
|
"@cypress/xvfb": "1.2.4",
|
|
8639
8639
|
"@devicefarmer/adbkit": "2.11.3",
|
|
8640
|
-
"@sitespeed.io/chromedriver": "
|
|
8640
|
+
"@sitespeed.io/chromedriver": "97.0.4692-7b",
|
|
8641
8641
|
"@sitespeed.io/edgedriver": "95.0.1020-30",
|
|
8642
|
-
"@sitespeed.io/geckodriver": "0.29.1-
|
|
8642
|
+
"@sitespeed.io/geckodriver": "0.29.1-3",
|
|
8643
8643
|
"@sitespeed.io/throttle": "3.0.0",
|
|
8644
8644
|
"@sitespeed.io/tracium": "0.3.3",
|
|
8645
8645
|
"btoa": "1.2.1",
|
|
@@ -11366,9 +11366,9 @@
|
|
|
11366
11366
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
|
11367
11367
|
},
|
|
11368
11368
|
"minipass": {
|
|
11369
|
-
"version": "3.1.
|
|
11370
|
-
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.
|
|
11371
|
-
"integrity": "sha512
|
|
11369
|
+
"version": "3.1.6",
|
|
11370
|
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
|
|
11371
|
+
"integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
|
|
11372
11372
|
"requires": {
|
|
11373
11373
|
"yallist": "^4.0.0"
|
|
11374
11374
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sitespeed.io": "./bin/sitespeed.js",
|
|
5
5
|
"sitespeed.io-wpr": "./bin/browsertimeWebPageReplay.js"
|
|
6
6
|
},
|
|
7
|
-
"version": "21.
|
|
7
|
+
"version": "21.6.0",
|
|
8
8
|
"description": "Analyze the web performance of your site",
|
|
9
9
|
"keywords": [
|
|
10
10
|
"performance",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"@tgwf/co2": "0.8.0",
|
|
75
75
|
"aws-sdk": "2.882.0",
|
|
76
76
|
"axe-core": "4.3.5",
|
|
77
|
-
"browsertime": "14.
|
|
77
|
+
"browsertime": "14.18.0",
|
|
78
78
|
"coach-core": "7.0.0",
|
|
79
79
|
"cli-color": "2.0.0",
|
|
80
80
|
"concurrent-queue": "7.0.2",
|
package/release/feed.js
CHANGED
|
@@ -100,7 +100,8 @@ async function generateFeed() {
|
|
|
100
100
|
coach: 'https://www.sitespeed.io/img/logos/coach.png',
|
|
101
101
|
'chrome-har': '',
|
|
102
102
|
'chrome-trace': '',
|
|
103
|
-
compare: 'https://www.sitespeed.io/img/logos/compare.png'
|
|
103
|
+
compare: 'https://www.sitespeed.io/img/logos/compare.png',
|
|
104
|
+
humble: ''
|
|
104
105
|
};
|
|
105
106
|
|
|
106
107
|
sortedVersionFiles.forEach(file => {
|