sitespeed.io 34.6.0 → 34.7.1
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/.github/workflows/unittests.yml +1 -1
- package/CHANGELOG.md +10 -0
- package/lib/cli/cli.js +1 -1
- package/lib/plugins/crux/index.js +6 -2
- package/lib/plugins/html/templates/url/cpu/index.pug +101 -104
- package/npm-shrinkwrap.json +10 -10
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
# CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org))
|
|
2
|
+
|
|
3
|
+
## 34.7.1 - 2024-07-20
|
|
4
|
+
### Fixed
|
|
5
|
+
* Fix so the link to the geckoprofiler data works/shows again [#4234](https://github.com/sitespeedio/sitespeed.io/pull/4234).
|
|
6
|
+
|
|
7
|
+
## 34.7.0 - 2024-07-15
|
|
8
|
+
### Added
|
|
9
|
+
* Update to Browsertime [22.6.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2260---2024-07-15) [#4226](https://github.com/sitespeedio/sitespeed.io/pull/4226).
|
|
10
|
+
* Crux: Push navigation types and form factor data by default to TSDB [#4227](https://github.com/sitespeedio/sitespeed.io/pull/4227).
|
|
11
|
+
|
|
2
12
|
## 34.6.0 - 2024-07-12
|
|
3
13
|
### Added
|
|
4
14
|
* Crux: Include RTT p75 [#4225](https://github.com/sitespeedio/sitespeed.io/pull/4225).
|
package/lib/cli/cli.js
CHANGED
|
@@ -1050,7 +1050,7 @@ export async function parseCommandLine() {
|
|
|
1050
1050
|
.option('browsertime.requestheader', {
|
|
1051
1051
|
alias: ['r', 'requestheader'],
|
|
1052
1052
|
describe:
|
|
1053
|
-
'Request header that will be added to the request. Add multiple instances to add multiple request headers. Use the following format key:value. Only works in Chrome and
|
|
1053
|
+
'Request header that will be added to the request. Add multiple instances to add multiple request headers. Use the following format key:value. Only works in Chrome, Firefox and Edge.',
|
|
1054
1054
|
group: 'Browser'
|
|
1055
1055
|
})
|
|
1056
1056
|
.option('browsertime.cookie', {
|
|
@@ -22,7 +22,9 @@ const DEFAULT_METRICS_PAGESUMMARY = [
|
|
|
22
22
|
'loadingExperience.*.CUMULATIVE_LAYOUT_SHIFT_SCORE.*',
|
|
23
23
|
'loadingExperience.*.TIME_TO_FIRST_BYTE_MS.*',
|
|
24
24
|
'loadingExperience.*.INTERACTION_TO_NEXT_PAINT_MS.*',
|
|
25
|
-
'loadingExperience.*.ROUND_TRIP_TIME_MS.*'
|
|
25
|
+
'loadingExperience.*.ROUND_TRIP_TIME_MS.*',
|
|
26
|
+
'loadingExperience.*.NAVIGATION_TYPES_FRACTIONS.*',
|
|
27
|
+
'loadingExperience.*.FORM_FACTORS_FRACTIONS.*'
|
|
26
28
|
];
|
|
27
29
|
const DEFAULT_METRICS_SUMMARY = [
|
|
28
30
|
'originLoadingExperience.*.FIRST_CONTENTFUL_PAINT_MS.*',
|
|
@@ -31,7 +33,9 @@ const DEFAULT_METRICS_SUMMARY = [
|
|
|
31
33
|
'originLoadingExperience.*.CUMULATIVE_LAYOUT_SHIFT_SCORE.*',
|
|
32
34
|
'originLoadingExperience.*.TIME_TO_FIRST_BYTE_MS.*',
|
|
33
35
|
'originLoadingExperience.*.INTERACTION_TO_NEXT_PAINT_MS.*',
|
|
34
|
-
'originLoadingExperience.*.ROUND_TRIP_TIME_MS.*'
|
|
36
|
+
'originLoadingExperience.*.ROUND_TRIP_TIME_MS.*',
|
|
37
|
+
'originLoadingExperience.*.NAVIGATION_TYPES_FRACTIONS.*',
|
|
38
|
+
'originLoadingExperience.*.FORM_FACTORS_FRACTIONS.*'
|
|
35
39
|
];
|
|
36
40
|
|
|
37
41
|
function wait(ms) {
|
|
@@ -4,53 +4,52 @@
|
|
|
4
4
|
|
|
5
5
|
if cpu
|
|
6
6
|
small
|
|
7
|
-
||
|
|
8
7
|
if cpu.longTasks
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
a(href='#long-tasks') CPU Long Tasks
|
|
9
|
+
| |
|
|
11
10
|
if browsertime && browsertime.timings && browsertime.timings.firstInput !== undefined
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
a(href='#first-input-delay') First Input Delay
|
|
12
|
+
| |
|
|
14
13
|
if cpu.categories
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
a(href='#cpu-time-spent') CPU Time Spent
|
|
15
|
+
| |
|
|
17
16
|
if cpu.urls && cpu.urls.length > 0
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
a(href='#cpu-time-spent-per-request') CPU Time Spent Per Request
|
|
18
|
+
| |
|
|
20
19
|
if pageInfo.data.thirdparty
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
a(href='#cpu-time-per-tool') CPU Time Per Tool/Domain
|
|
21
|
+
| |
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
a#cpu
|
|
24
|
+
h2 CPU
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
if cpu && cpu.events && !options.browsertime.enableProfileRun
|
|
27
|
+
p Download the Chrome trace log and drag and drop it into Developer Tools / Performance in Chrome.
|
|
28
|
+
.downloads
|
|
29
|
+
if options.browsertime.chrome && options.browsertime.chrome.timeline
|
|
30
|
+
- const tracePath = 'data/trace-' + (runNumber? runNumber : 1) + '.json.gz'
|
|
31
|
+
a.button.button-download(href=tracePath, download=downloadName + '-timeline.json.gz') Download trace log
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
if options.browsertime && options.browsertime.firefox && options.browsertime.firefox.geckoProfiler && options.browser === 'firefox' && !options.browsertime.enableProfileRun
|
|
34
|
+
p Download the Firefox Geckoprofiler trace and drag and drop it into
|
|
35
|
+
a(href='https://profiler.firefox.com') https://profiler.firefox.com
|
|
36
|
+
.downloads
|
|
37
|
+
- const tracePath = 'data/geckoProfile-' + (runNumber? runNumber : 1) + '.json.gz'
|
|
38
|
+
a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download trace
|
|
39
|
+
|
|
40
|
+
if options.browsertime && options.browsertime.enableProfileRun
|
|
41
|
+
if options.browser === 'firefox'
|
|
35
42
|
p Download the Firefox Geckoprofiler trace and drag and drop it into
|
|
36
43
|
a(href='https://profiler.firefox.com') https://profiler.firefox.com
|
|
37
44
|
.downloads
|
|
38
|
-
- const tracePath = 'data/geckoProfile-
|
|
39
|
-
a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download trace
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
45
|
+
- const tracePath = 'data/geckoProfile-1-extra.json.gz'
|
|
46
|
+
a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download extra run trace log
|
|
47
|
+
else if options.browser === 'chrome'
|
|
48
|
+
p Download the Chrome trace log and drag and drop it into Developer Tools / Performance in Chrome.
|
|
49
|
+
- const tracePath = 'data/trace-1-extra-run.json.gz'
|
|
50
|
+
a.button.button-download(href=tracePath, download=downloadName + '-timeline.json.gz') Download extra run trace log
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
if cpu && cpu.longTasks
|
|
54
53
|
a#long-tasks
|
|
55
54
|
h3 Long Tasks
|
|
56
55
|
p Collected using the Long Task API. A long task is a task that take 50 milliseconds or more.
|
|
@@ -109,81 +108,79 @@ if cpu
|
|
|
109
108
|
td #{task.attribution[0].containerId}
|
|
110
109
|
td #{task.attribution[0].containerName}
|
|
111
110
|
td.url.assetsurl #{task.attribution[0].containerSrc}
|
|
112
|
-
td #{task.attribution[0].containerType}
|
|
113
|
-
else
|
|
114
|
-
p No long tasks on the page!
|
|
111
|
+
td #{task.attribution[0].containerType}
|
|
115
112
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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)}
|
|
134
131
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
132
|
+
if cpu && cpu.categories
|
|
133
|
+
a#cpu-time-spent
|
|
134
|
+
h3 CPU time spent
|
|
135
|
+
p Calculated using Tracium.
|
|
139
136
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
.row
|
|
138
|
+
.one-half.column
|
|
139
|
+
if cpu.categories
|
|
140
|
+
table
|
|
141
|
+
tr
|
|
142
|
+
th(colspan='2') Categories (ms)
|
|
143
|
+
each value, name in cpu.categories
|
|
144
144
|
tr
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
145
|
+
td #{name}
|
|
146
|
+
td #{value.toFixed(0)}
|
|
147
|
+
.one-half.column
|
|
148
|
+
if cpu.events
|
|
149
|
+
table
|
|
150
|
+
tr
|
|
151
|
+
th(colspan='2') Events (ms)
|
|
152
|
+
- const cpuEvents = []
|
|
153
|
+
- for (let key of Object.keys(cpu.events)) {cpuEvents.push({name: key, value: cpu.events[key] })}
|
|
154
|
+
- cpuEvents.sort((a,b)=>{return b.value - a.value})
|
|
155
|
+
each event in cpuEvents
|
|
153
156
|
tr
|
|
154
|
-
|
|
155
|
-
|
|
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)}
|
|
157
|
+
td #{event.name}
|
|
158
|
+
td #{event.value.toFixed(0)}
|
|
162
159
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
160
|
+
if cpu.urls && cpu.urls.length > 0
|
|
161
|
+
a#cpu-time-spent-per-request
|
|
162
|
+
h3 Time spent per request
|
|
163
|
+
table
|
|
164
|
+
tr
|
|
165
|
+
th URL
|
|
166
|
+
th CPU time (ms)
|
|
167
|
+
each data in cpu.urls
|
|
167
168
|
tr
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
tr
|
|
172
|
-
td.url.assetsurl
|
|
173
|
-
a(href=data.url)= data.url
|
|
174
|
-
td #{data.value.toFixed(0)}
|
|
169
|
+
td.url.assetsurl
|
|
170
|
+
a(href=data.url)= data.url
|
|
171
|
+
td #{data.value.toFixed(0)}
|
|
175
172
|
|
|
176
|
-
|
|
177
|
-
|
|
173
|
+
if pageInfo.data.thirdparty
|
|
174
|
+
- const thirdparty = medianRun ? pageInfo.data.thirdparty.pageSummary.runs[medianRun.runIndex - 1] : pageInfo.data.thirdparty.run
|
|
178
175
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
176
|
+
if thirdparty && thirdparty.cpuPerTool && Object.keys(thirdparty.cpuPerTool).length > 0
|
|
177
|
+
a#cpu-time-per-tool
|
|
178
|
+
h3 CPU time spent
|
|
179
|
+
table
|
|
180
|
+
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)}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sitespeed.io",
|
|
3
|
-
"version": "34.
|
|
3
|
+
"version": "34.7.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "sitespeed.io",
|
|
9
|
-
"version": "34.
|
|
9
|
+
"version": "34.7.1",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-s3": "3.609.0",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"@sitespeed.io/plugin": "0.0.6",
|
|
16
16
|
"@tgwf/co2": "0.16.0",
|
|
17
17
|
"axe-core": "4.9.1",
|
|
18
|
-
"browsertime": "22.
|
|
18
|
+
"browsertime": "22.6.0",
|
|
19
19
|
"cli-color": "2.0.4",
|
|
20
20
|
"coach-core": "8.0.2",
|
|
21
21
|
"concurrent-queue": "7.0.2",
|
|
@@ -3625,9 +3625,9 @@
|
|
|
3625
3625
|
}
|
|
3626
3626
|
},
|
|
3627
3627
|
"node_modules/browsertime": {
|
|
3628
|
-
"version": "22.
|
|
3629
|
-
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-22.
|
|
3630
|
-
"integrity": "sha512-
|
|
3628
|
+
"version": "22.6.0",
|
|
3629
|
+
"resolved": "https://registry.npmjs.org/browsertime/-/browsertime-22.6.0.tgz",
|
|
3630
|
+
"integrity": "sha512-4hmFO+yMxWbxlQ0aN3Zx4g0oYCCZjGOaQUFNCyEY8SREF3cWDGx4q0F6gRvkk18Sno6Y25gKveDaZj/LaKaMJw==",
|
|
3631
3631
|
"dependencies": {
|
|
3632
3632
|
"@cypress/xvfb": "1.2.4",
|
|
3633
3633
|
"@devicefarmer/adbkit": "3.2.6",
|
|
@@ -3637,7 +3637,7 @@
|
|
|
3637
3637
|
"@sitespeed.io/throttle": "5.0.0",
|
|
3638
3638
|
"@sitespeed.io/tracium": "0.3.3",
|
|
3639
3639
|
"btoa": "1.2.1",
|
|
3640
|
-
"chrome-har": "0.13.
|
|
3640
|
+
"chrome-har": "0.13.5",
|
|
3641
3641
|
"chrome-remote-interface": "0.33.2",
|
|
3642
3642
|
"dayjs": "1.11.11",
|
|
3643
3643
|
"execa": "9.3.0",
|
|
@@ -3875,9 +3875,9 @@
|
|
|
3875
3875
|
}
|
|
3876
3876
|
},
|
|
3877
3877
|
"node_modules/chrome-har": {
|
|
3878
|
-
"version": "0.13.
|
|
3879
|
-
"resolved": "https://registry.npmjs.org/chrome-har/-/chrome-har-0.13.
|
|
3880
|
-
"integrity": "sha512-
|
|
3878
|
+
"version": "0.13.5",
|
|
3879
|
+
"resolved": "https://registry.npmjs.org/chrome-har/-/chrome-har-0.13.5.tgz",
|
|
3880
|
+
"integrity": "sha512-e5RVL19aa0AvlR9//hOu/t96us/iTynAJZFtryExNO+1xta1qb6b/3kZFLFPQ3UrXFG70OqhxxSCbAHKgY8JWw==",
|
|
3881
3881
|
"dependencies": {
|
|
3882
3882
|
"dayjs": "1.11.7",
|
|
3883
3883
|
"debug": "4.3.4",
|
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": "34.
|
|
8
|
+
"version": "34.7.1",
|
|
9
9
|
"description": "sitespeed.io is an open-source tool for comprehensive web performance analysis, enabling you to test, monitor, and optimize your website’s speed using real browsers in various environments.",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"performance",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"@tgwf/co2": "0.16.0",
|
|
86
86
|
"@aws-sdk/client-s3": "3.609.0",
|
|
87
87
|
"axe-core": "4.9.1",
|
|
88
|
-
"browsertime": "22.
|
|
88
|
+
"browsertime": "22.6.0",
|
|
89
89
|
"coach-core": "8.0.2",
|
|
90
90
|
"cli-color": "2.0.4",
|
|
91
91
|
"concurrent-queue": "7.0.2",
|