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.
@@ -12,7 +12,7 @@ jobs:
12
12
  if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
13
13
  strategy:
14
14
  matrix:
15
- node-version: [18.x, 20.x, 22.x]
15
+ node-version: [18.x, 20.x]
16
16
  steps:
17
17
  - uses: actions/checkout@v4
18
18
  - name: Use Node.js ${{ matrix.node-version }}
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 Firefox.',
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
- a(href='#long-tasks') CPU Long Tasks
10
- |  | 
8
+ a(href='#long-tasks') CPU Long Tasks
9
+ |  | 
11
10
  if browsertime && browsertime.timings && browsertime.timings.firstInput !== undefined
12
- a(href='#first-input-delay') First Input Delay
13
- |  | 
11
+ a(href='#first-input-delay') First Input Delay
12
+ |  | 
14
13
  if cpu.categories
15
- a(href='#cpu-time-spent') CPU Time Spent
16
- |  | 
14
+ a(href='#cpu-time-spent') CPU Time Spent
15
+ |  | 
17
16
  if cpu.urls && cpu.urls.length > 0
18
- a(href='#cpu-time-spent-per-request') CPU Time Spent Per Request
19
- |  | 
17
+ a(href='#cpu-time-spent-per-request') CPU Time Spent Per Request
18
+ |  | 
20
19
  if pageInfo.data.thirdparty
21
- a(href='#cpu-time-per-tool') CPU Time Per Tool/Domain
22
- |  | 
20
+ a(href='#cpu-time-per-tool') CPU Time Per Tool/Domain
21
+ |  | 
23
22
 
24
- a#cpu
25
- h2 CPU
23
+ a#cpu
24
+ h2 CPU
26
25
 
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
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
- if options.browsertime && options.browsertime.firefox && options.browsertime.firefox.geckoProfiler && options.browser === 'firefox' && !options.browsertime.enableProfileRun
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-' + (runNumber? runNumber : 1) + '.json.gz'
39
- a.button.button-download(href=tracePath, download=downloadName + '-geckoProfile.json.gz') Download trace
40
-
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
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
- if cpu.longTasks
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
- if browsertime && browsertime.timings && browsertime.timings.firstInput !== undefined
117
- a#first-input-delay
118
- h3 First Input Delay
119
- table
120
- tr
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)}
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
- if cpu.categories
136
- a#cpu-time-spent
137
- h3 CPU time spent
138
- p Calculated using Tracium.
132
+ if cpu && cpu.categories
133
+ a#cpu-time-spent
134
+ h3 CPU time spent
135
+ p Calculated using Tracium.
139
136
 
140
- .row
141
- .one-half.column
142
- if cpu.categories
143
- table
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
- 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
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
- 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)}
157
+ td #{event.name}
158
+ td #{event.value.toFixed(0)}
162
159
 
163
- if cpu.urls && cpu.urls.length > 0
164
- a#cpu-time-spent-per-request
165
- h3 Time spent per request
166
- table
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
- 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)}
169
+ td.url.assetsurl
170
+ a(href=data.url)= data.url
171
+ td #{data.value.toFixed(0)}
175
172
 
176
- if pageInfo.data.thirdparty
177
- - const thirdparty = medianRun ? pageInfo.data.thirdparty.pageSummary.runs[medianRun.runIndex - 1] : pageInfo.data.thirdparty.run
173
+ if pageInfo.data.thirdparty
174
+ - const thirdparty = medianRun ? pageInfo.data.thirdparty.pageSummary.runs[medianRun.runIndex - 1] : pageInfo.data.thirdparty.run
178
175
 
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)}
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)}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "sitespeed.io",
3
- "version": "34.6.0",
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.6.0",
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.5.5",
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.5.5",
3629
- "resolved": "https://registry.npmjs.org/browsertime/-/browsertime-22.5.5.tgz",
3630
- "integrity": "sha512-9+D4J6gz66gGmruksQU6+HAYFKY8h7RK7K9O9gnvvBr/Vt+EsaJ4sjP33KqcJjPGBiklXXrTdhr6b9xPE4eftg==",
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.3",
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.3",
3879
- "resolved": "https://registry.npmjs.org/chrome-har/-/chrome-har-0.13.3.tgz",
3880
- "integrity": "sha512-qqi1c6tTrPhH9x8nInMGETbdyv23mFk1tpL+09hGdNTunKQtGVqItyXNYi94VjVREejZKsKcFyeOQxMPfPAwmQ==",
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.6.0",
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.5.5",
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",