From 8af21108588c78fcd367cffb8e592784f6476286 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Fri, 31 Jan 2025 17:23:37 +0100 Subject: [PATCH 01/18] Make sure we try/catch everything and log the root cause (#4424) --- lib/sitespeed.js | 166 ++++++++++++++++++++++++----------------------- 1 file changed, 86 insertions(+), 80 deletions(-) diff --git a/lib/sitespeed.js b/lib/sitespeed.js index ac629bee0b..79229827e3 100644 --- a/lib/sitespeed.js +++ b/lib/sitespeed.js @@ -51,92 +51,98 @@ function runOptionalFunction(objects, fN) { } export async function run(options) { - const url = options.urls[0]; - const timestamp = options.utc ? dayjs.utc() : dayjs(); - const { storageManager, resultUrls } = resultsStorage( - url, - timestamp, - options - ); - - if ( - options.browsertime && - options.browsertime.tcpdump && - !env.SSLKEYLOGFILE - ) { - env.SSLKEYLOGFILE = path.join( - storageManager.getBaseDir(), - 'SSLKEYLOGFILE.txt' + try { + const url = options.urls[0]; + const timestamp = options.utc ? dayjs.utc() : dayjs(); + const { storageManager, resultUrls } = resultsStorage( + url, + timestamp, + options ); - } - configure(options); - - // Tell the world what we are using - log.info( - 'Versions OS: %s nodejs: %s sitespeed.io: %s browsertime: %s coach: %s', - platform() + ' ' + release(), - version, - packageJson.version, - packageJson.dependencies.browsertime, - packageJson.dependencies['coach-core'] - ); - - log.debug('Running with options: %:2j', options); - let pluginNames = await parsePluginNames(options); - - const plugins = options.plugins; - - // Deprecated setup - if (plugins) { - if (plugins.disable) { - log.warn('--plugins.disable is deprecated, use plugins.remove instead.'); - plugins.remove = plugins.disable; - } - if (plugins.load) { - log.warn('--plugins.load is deprecated, use plugins.add instead.'); - plugins.add = plugins.load; + if ( + options.browsertime && + options.browsertime.tcpdump && + !env.SSLKEYLOGFILE + ) { + env.SSLKEYLOGFILE = path.join( + storageManager.getBaseDir(), + 'SSLKEYLOGFILE.txt' + ); } + configure(options); + + // Tell the world what we are using + log.info( + 'Versions OS: %s nodejs: %s sitespeed.io: %s browsertime: %s coach: %s', + platform() + ' ' + release(), + version, + packageJson.version, + packageJson.dependencies.browsertime, + packageJson.dependencies['coach-core'] + ); - // Finalize the plugins that we wanna run - // First we add the new ones and then remove, that means remove - // always wins - pluginNames = [...new Set([...pluginNames, ...toArray(plugins.add)])]; + log.debug('Running with options: %:2j', options); + + let pluginNames = await parsePluginNames(options); + + const plugins = options.plugins; + + // Deprecated setup + if (plugins) { + if (plugins.disable) { + log.warn( + '--plugins.disable is deprecated, use plugins.remove instead.' + ); + plugins.remove = plugins.disable; + } + if (plugins.load) { + log.warn('--plugins.load is deprecated, use plugins.add instead.'); + plugins.add = plugins.load; + } + + // Finalize the plugins that we wanna run + // First we add the new ones and then remove, that means remove + // always wins + pluginNames = [...new Set([...pluginNames, ...toArray(plugins.add)])]; + + const removeSet = new Set(toArray(plugins.remove)); + pluginNames = pluginNames.filter(name => !removeSet.has(name)); + + if (plugins.list) { + log.info( + 'The following plugins are enabled: %s', + pluginNames.join(', ') + ); + } + } - const removeSet = new Set(toArray(plugins.remove)); - pluginNames = pluginNames.filter(name => !removeSet.has(name)); + // This is the contect where we wanna run our tests + const context = { + storageManager, + resultUrls, + timestamp, + budget: budgetResult, + name: url, + log, + getLogger, + messageMaker, + statsHelpers, + filterRegistry + }; + const queueHandler = new QueueHandler(options); + const runningPlugins = await loadPlugins( + pluginNames, + options, + context, + queueHandler + ); + const urlSources = [options.multi ? scriptSource : urlSource]; + const allPlugins = [...runningPlugins]; + queueHandler.setup(runningPlugins); - if (plugins.list) { - log.info('The following plugins are enabled: %s', pluginNames.join(', ')); - } - } + // Open/start each and every plugin - // This is the contect where we wanna run our tests - const context = { - storageManager, - resultUrls, - timestamp, - budget: budgetResult, - name: url, - log, - getLogger, - messageMaker, - statsHelpers, - filterRegistry - }; - const queueHandler = new QueueHandler(options); - const runningPlugins = await loadPlugins( - pluginNames, - options, - context, - queueHandler - ); - const urlSources = [options.multi ? scriptSource : urlSource]; - const allPlugins = [...runningPlugins]; - queueHandler.setup(runningPlugins); - - // Open/start each and every plugin - try { await Promise.all( runOptionalFunction(allPlugins, 'open', context, options) ); @@ -180,7 +186,7 @@ export async function run(options) { timestamp: timestamp.format() }; } catch (error) { - log.error(error); + log.error(error.stack); throw error; } } From e0d004beec39eb4cb7deccdb02d12bf6ac4b9f9d Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 09:55:49 +0100 Subject: [PATCH 02/18] Fix the "new" breaking of loading of plugins on Windows GitHub actions. (#4426) --- lib/core/pluginLoader.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/core/pluginLoader.js b/lib/core/pluginLoader.js index 1a5911131e..f6a9a30d17 100644 --- a/lib/core/pluginLoader.js +++ b/lib/core/pluginLoader.js @@ -1,10 +1,12 @@ import path from 'node:path'; import { readdir as _readdir } from 'node:fs'; import { promisify } from 'node:util'; +import { fileURLToPath, pathToFileURL } from 'node:url'; import { importGlobalSilent } from 'import-global'; const readdir = promisify(_readdir); -const __dirname = path.dirname(import.meta.url); +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); const defaultPlugins = new Set([ 'browsertime', @@ -49,7 +51,7 @@ export async function parsePluginNames(options) { return pluginNames; }; - const files = await readdir(new URL(pluginsDir)); + const files = await readdir(pluginsDir); const builtins = files.map(name => path.basename(name, '.js')); // eslint-disable-next-line unicorn/no-array-callback-reference @@ -60,9 +62,9 @@ export async function loadPlugins(pluginNames, options, context, queue) { const plugins = []; for (let name of pluginNames) { try { - let { default: plugin } = await import( - path.join(pluginsDir, name, 'index.js') - ); + const pluginPath = path.join(pluginsDir, name, 'index.js'); + const pluginUrl = pathToFileURL(pluginPath).href; + let { default: plugin } = await import(pluginUrl); let p = new plugin(options, context, queue); plugins.push(p); } catch (error_) { From f19fb295de8e8a2d33755615c2bf4d794265db80 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 09:59:11 +0100 Subject: [PATCH 03/18] changelog: windows fix --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 192b0d24f8..5f7d406627 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org)) +## 36.2.4 - UNRELEASED +### Fixed +* The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that worked, failed with the same code on our side. It's fixed by [#4426](https://github.com/sitespeedio/sitespeed.io/pull/4426). + ## 36.2.3 - 2025-01-30 ### Fixed * Even better handling of missing runtime settings [#4420](https://github.com/sitespeedio/sitespeed.io/pull/4420). From be83456da413affd9f3579dde6a41ac30c4d5c01 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 14:04:16 +0100 Subject: [PATCH 04/18] Fix broken --android parsing. (#4422) * Fix broken --android parsing. After this --android will work but will not be showed as an alias. The problem was that we had issues with the android configuration object becoming an array instead of an object. --- lib/cli/cli.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/cli/cli.js b/lib/cli/cli.js index e6a3c5fb2e..08d5859903 100644 --- a/lib/cli/cli.js +++ b/lib/cli/cli.js @@ -25,6 +25,10 @@ const version = require('../../package.json').version; const configFiles = ['.sitespeed.io.json']; +function fixAndroidArgs(args) { + return args.map(arg => (arg === '--android' ? '--android.enabled' : arg)); +} + if (process.argv.includes('--config')) { const index = process.argv.indexOf('--config'); configFiles.unshift(process.argv[index + 1]); @@ -214,11 +218,8 @@ function validateInput(argv) { } export async function parseCommandLine() { - let argvFix = process.argv.map(arg => - arg === '--android' ? '--android.enabled' : arg - ); - - let yargsInstance = yargs(hideBin(argvFix)); + const fixedArgs = fixAndroidArgs(hideBin(process.argv)); + const yargsInstance = yargs(fixedArgs); let parsed = yargsInstance .parserConfiguration({ 'camel-case-expansion': false, @@ -860,8 +861,8 @@ export async function parseCommandLine() { 'Process name of the Activity hosting the WebView. If not given, the process name is assumed to be the same as chrome.android.package.', group: 'Chrome' }) - .option('browsertime.android', { - alias: 'android', + .option('browsertime.android.enabled', { + alias: ['android.enabled'], type: 'boolean', default: false, describe: @@ -2194,7 +2195,7 @@ export async function parseCommandLine() { if (argv.ios) { set(argv, 'safari.ios', true); - } else if (argv.android && argv.browser === 'chrome') { + } else if (argv.android.enabled === true && argv.browser === 'chrome') { // Default to Chrome Android. set( argv, From 4e6cf720104415b3d7a5f5150648aa886403987e Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 14:07:05 +0100 Subject: [PATCH 05/18] changelog: android fix --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f7d406627..1b3c8013d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixed * The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that worked, failed with the same code on our side. It's fixed by [#4426](https://github.com/sitespeedio/sitespeed.io/pull/4426). +* We have had issues with parsing Android configuration because of the `--android`flag to enable Android tests. The problem was that in some cases the configuration object become an Array (instead of an object) and that made some objects do not work. The PR [#4422](https://github.com/sitespeedio/sitespeed.io/pull/4422) removes --android from the cli help, but it will still work. + ## 36.2.3 - 2025-01-30 ### Fixed * Even better handling of missing runtime settings [#4420](https://github.com/sitespeedio/sitespeed.io/pull/4420). From f48e9723a7798e91c9d603a168c19895eea67037 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 14:24:31 +0100 Subject: [PATCH 06/18] Fix: the API used android or android.enabled for Android configuration (#4427) --- bin/sitespeed.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bin/sitespeed.js b/bin/sitespeed.js index 4cf223b272..e508c2dabe 100755 --- a/bin/sitespeed.js +++ b/bin/sitespeed.js @@ -46,7 +46,10 @@ async function api(options) { if (apiOptions.mobile) { apiOptions.api.testType = 'emulatedMobile'; - } else if (apiOptions.android) { + } else if ( + apiOptions.android === true || + apiOptions.android.enabled === true + ) { apiOptions.api.testType = 'android'; } else if (apiOptions.safari && apiOptions.safari.ios) { apiOptions.api.testType = 'ios'; From 4c28da928809de64f0e6d92983d72ca5a1801c83 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 14:28:46 +0100 Subject: [PATCH 07/18] changelog: api fix --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b3c8013d5..3cf9365032 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ * We have had issues with parsing Android configuration because of the `--android`flag to enable Android tests. The problem was that in some cases the configuration object become an Array (instead of an object) and that made some objects do not work. The PR [#4422](https://github.com/sitespeedio/sitespeed.io/pull/4422) removes --android from the cli help, but it will still work. +* Fix so API calls also looks for `--android.enabled` to know if you want to test on Android [#4427](https://github.com/sitespeedio/sitespeed.io/pull/4427). + ## 36.2.3 - 2025-01-30 ### Fixed * Even better handling of missing runtime settings [#4420](https://github.com/sitespeedio/sitespeed.io/pull/4420). From 8bb5faa79b9fbc9b36ce4f3621c79c7854f3eb70 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 18:37:22 +0100 Subject: [PATCH 08/18] changelog: better language --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cf9365032..cc48b9367f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,9 @@ ## 36.2.4 - UNRELEASED ### Fixed -* The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that worked, failed with the same code on our side. It's fixed by [#4426](https://github.com/sitespeedio/sitespeed.io/pull/4426). +* The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by [#4426](https://github.com/sitespeedio/sitespeed.io/pull/4426). -* We have had issues with parsing Android configuration because of the `--android`flag to enable Android tests. The problem was that in some cases the configuration object become an Array (instead of an object) and that made some objects do not work. The PR [#4422](https://github.com/sitespeedio/sitespeed.io/pull/4422) removes --android from the cli help, but it will still work. +* We have had issues with parsing Android configuration because of the `--android` flag to enable Android tests. The problem was that in some cases the internal configuration object become an Array (instead of an object) and that made some objects to do not work. The PR [#4422](https://github.com/sitespeedio/sitespeed.io/pull/4422) removes `--android` from the cli help, however it will still work as before. * Fix so API calls also looks for `--android.enabled` to know if you want to test on Android [#4427](https://github.com/sitespeedio/sitespeed.io/pull/4427). From db55bbb44ce28f40006f403610d73c4a781cc7c3 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 18:39:06 +0100 Subject: [PATCH 09/18] changelog: new release --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc48b9367f..148c165254 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org)) -## 36.2.4 - UNRELEASED +## 36.2.4 - 2025-02-02 ### Fixed * The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by [#4426](https://github.com/sitespeedio/sitespeed.io/pull/4426). From 28e2b4792fefb34a505aa14b94b6b4433f83acb9 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 18:39:49 +0100 Subject: [PATCH 10/18] 36.2.4 --- npm-shrinkwrap.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 25f971fc5e..6f97c8759e 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,12 +1,12 @@ { "name": "sitespeed.io", - "version": "36.2.3", + "version": "36.2.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sitespeed.io", - "version": "36.2.3", + "version": "36.2.4", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 2b046ab8e5..74ad1b0a68 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "sitespeed.io": "./bin/sitespeed.js", "sitespeed.io-wpr": "./bin/browsertimeWebPageReplay.js" }, - "version": "36.2.3", + "version": "36.2.4", "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.", "keywords": [ "performance", From 180b893e06e77e0ac8e2ccc620bcb391371ec7ab Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Sun, 2 Feb 2025 18:41:03 +0100 Subject: [PATCH 11/18] new version --- docs/_includes/version/sitespeed.io.txt | 2 +- .../sitespeed.io/configuration/config.md | 2 +- docs/feed/browsertime.atom | 2 +- docs/feed/browsertime.rss | 2 +- docs/feed/server.atom | 32 ++++++------ docs/feed/server.rss | 24 ++++----- docs/feed/sitespeed.io.atom | 50 ++++++++----------- docs/feed/sitespeed.io.rss | 44 +++++++--------- docs/feed/testrunner.atom | 2 +- docs/feed/testrunner.rss | 2 +- 10 files changed, 75 insertions(+), 87 deletions(-) diff --git a/docs/_includes/version/sitespeed.io.txt b/docs/_includes/version/sitespeed.io.txt index b386c3b89e..ed41edc3ba 100644 --- a/docs/_includes/version/sitespeed.io.txt +++ b/docs/_includes/version/sitespeed.io.txt @@ -1 +1 @@ -36.2.3 \ No newline at end of file +36.2.4 \ No newline at end of file diff --git a/docs/documentation/sitespeed.io/configuration/config.md b/docs/documentation/sitespeed.io/configuration/config.md index 0c41a332e0..a4811bc443 100644 --- a/docs/documentation/sitespeed.io/configuration/config.md +++ b/docs/documentation/sitespeed.io/configuration/config.md @@ -326,7 +326,7 @@ Options: --browsertime.enableVideoRun, --enableVideoRun Make one extra run that collects video and visual metrics. This means you can do your runs with --visualMetrics true --video false --enableVideoRun true to collect visual metrics from all runs and save a video from the profile/video run. If you run it together with --enableProfileRun it will also collect profiling race. [boolean] --browsertime.cjs, --cjs Load scripting files that ends with .js as common js. Default (false) loads files as esmodules. [boolean] [default: false] --browsertime.tcpdump, --tcpdump Collect a tcpdump for each tested URL. The user that runs sitespeed.io should have sudo rights for tcpdump to work. [boolean] [default: false] - --browsertime.android, --android Short key to use Android. Will automatically use com.android.chrome for Chrome and stable Firefox. If you want to use another Chrome version, use --chrome.android.package [boolean] [default: false] + --browsertime.android.enabled, --android.enabled Short key to use Android. Will automatically use com.android.chrome for Chrome and stable Firefox. If you want to use another Chrome version, use --chrome.android.package [boolean] [default: false] --browsertime.iqr Use IQR, or Inter Quartile Range filtering filters data based on the spread of the data. See https://en.wikipedia.org/wiki/Interquartile_range. In some cases, IQR filtering may not filter out anything. This can happen if the acceptable range is wider than the bounds of your dataset. [boolean] [default: false] --browsertime.preWarmServer, --preWarmServer Do pre test requests to the URL(s) that you want to test that is not measured. Do that to make sure your web server is ready to serve. The pre test requests is done with another browser instance that is closed after pre testing is done. [boolean] [default: false] --browsertime.preWarmServerWaitTime The wait time before you start the real testing after your pre-cache request. [number] [default: 5000] diff --git a/docs/feed/browsertime.atom b/docs/feed/browsertime.atom index f239b5540e..7e773c4155 100644 --- a/docs/feed/browsertime.atom +++ b/docs/feed/browsertime.atom @@ -2,7 +2,7 @@ browsertime-release-feed browsertime release feed - 2025-01-29T06:22:13.732Z + 2025-01-29T07:51:38.590Z https://github.com/jpmonette/feed Peter Hedenskog diff --git a/docs/feed/browsertime.rss b/docs/feed/browsertime.rss index f0a2d6ccef..20db48b032 100644 --- a/docs/feed/browsertime.rss +++ b/docs/feed/browsertime.rss @@ -4,7 +4,7 @@ browsertime release feed https://www.sitespeed.io New releases and changelog feed of browsertime - Wed, 29 Jan 2025 06:22:13 GMT + Wed, 29 Jan 2025 07:51:38 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed en diff --git a/docs/feed/server.atom b/docs/feed/server.atom index 46c333cb85..3dd4387bfb 100644 --- a/docs/feed/server.atom +++ b/docs/feed/server.atom @@ -2,7 +2,7 @@ server-release-feed server release feed - 2025-01-30T13:38:22.186Z + 2025-01-30T15:28:50.545Z https://github.com/jpmonette/feed Peter Hedenskog @@ -15,6 +15,21 @@ http://www.sitespeed.io/favicon.ico All rights reserved 2022, Peter Hedenskog and team + + <![CDATA[server 1.3.0]]> + https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.3.0 + + 2025-01-30T00:00:00.000Z + Added +
    +
  • Add link to active test in search #129.
  • +
+]]>
+ + Sitespeed.io + https://www.sitespeed.io + +
<![CDATA[server 1.2.0]]> https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.2.0 @@ -176,21 +191,6 @@
  • The internal configuration was broken in the way that removing/adding testrunners failed removing correct configurations #84. This fix also needs #83 in the testrunners.
-]]> - - Sitespeed.io - https://www.sitespeed.io - -
- - <![CDATA[server 0.4.1]]> - https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.1 - - 2024-08-23T00:00:00.000Z - Fixed -
    -
  • Fix bug so you can choose emulated mobile in GUI #76.
  • -
]]>
Sitespeed.io diff --git a/docs/feed/server.rss b/docs/feed/server.rss index d5e7336ae5..0e7bfe32b2 100644 --- a/docs/feed/server.rss +++ b/docs/feed/server.rss @@ -4,13 +4,24 @@ server release feed https://www.sitespeed.io New releases and changelog feed of server - Thu, 30 Jan 2025 13:38:22 GMT + Thu, 30 Jan 2025 15:28:50 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed en All rights reserved 2022, Peter Hedenskog and team Web Performance + + <![CDATA[server 1.3.0]]> + https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.3.0 + https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.3.0 + Thu, 30 Jan 2025 00:00:00 GMT + Added +
    +
  • Add link to active test in search #129.
  • +
+]]>
+
<![CDATA[server 1.2.0]]> https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.2.0 @@ -140,17 +151,6 @@
  • The internal configuration was broken in the way that removing/adding testrunners failed removing correct configurations #84. This fix also needs #83 in the testrunners.
-]]> -
- - <![CDATA[server 0.4.1]]> - https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.1 - https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.1 - Fri, 23 Aug 2024 00:00:00 GMT - Fixed -
    -
  • Fix bug so you can choose emulated mobile in GUI #76.
  • -
]]>
diff --git a/docs/feed/sitespeed.io.atom b/docs/feed/sitespeed.io.atom index e3c470ebfc..b1fb757872 100644 --- a/docs/feed/sitespeed.io.atom +++ b/docs/feed/sitespeed.io.atom @@ -2,7 +2,7 @@ sitespeed.io-release-feed sitespeed.io release feed - 2025-01-30T13:40:48.761Z + 2025-02-02T17:40:23.999Z https://github.com/jpmonette/feed Peter Hedenskog @@ -16,6 +16,27 @@ http://www.sitespeed.io/favicon.ico All rights reserved 2022, Peter Hedenskog and team + + <![CDATA[sitespeed.io 36.2.4]]> + https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.4 + + 2025-02-02T00:00:00.000Z + Fixed +
    +
  • The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by #4426.
  • +
+
    +
  • We have had issues with parsing Android configuration because of the --android flag to enable Android tests. The problem was that in some cases the internal configuration object become an Array (instead of an object) and that made some objects to do not work. The PR #4422 removes --android from the cli help, however it will still work as before.
  • +
+
    +
  • Fix so API calls also looks for --android.enabled to know if you want to test on Android #4427.
  • +
+]]>
+ + Sitespeed.io + https://www.sitespeed.io + +
<![CDATA[sitespeed.io 36.2.3]]> https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.3 @@ -198,33 +219,6 @@
  • Fix Wilcoxon NaN values when running the compare plugin #4402.
-]]> - - Sitespeed.io - https://www.sitespeed.io - -
- - <![CDATA[sitespeed.io 35.7.5]]> - https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.7.5 - - 2024-12-23T00:00:00.000Z - Fixed -
    -
  • Update to faststat 0.0.7 #4347.
  • -
-
    -
  • Update dev dependencies #4345.
  • -
-
    -
  • Let analysisstorer know about webpagereplay so that correct information is displayed #4349.
  • -
-
    -
  • Pass on webpagereplay flag to browsertime #4350.
  • -
-
    -
  • Update to Browsertime 23.5.0 #4351
  • -
]]>
Sitespeed.io diff --git a/docs/feed/sitespeed.io.rss b/docs/feed/sitespeed.io.rss index 41260733d4..ef457ec301 100644 --- a/docs/feed/sitespeed.io.rss +++ b/docs/feed/sitespeed.io.rss @@ -4,7 +4,7 @@ sitespeed.io release feed https://www.sitespeed.io New releases and changelog feed of sitespeed.io - Thu, 30 Jan 2025 13:40:48 GMT + Sun, 02 Feb 2025 17:40:23 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed en @@ -16,6 +16,24 @@ All rights reserved 2022, Peter Hedenskog and team Web Performance + + <![CDATA[sitespeed.io 36.2.4]]> + https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.4 + https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.4 + Sun, 02 Feb 2025 00:00:00 GMT + Fixed +
    +
  • The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by #4426.
  • +
+
    +
  • We have had issues with parsing Android configuration because of the --android flag to enable Android tests. The problem was that in some cases the internal configuration object become an Array (instead of an object) and that made some objects to do not work. The PR #4422 removes --android from the cli help, however it will still work as before.
  • +
+
    +
  • Fix so API calls also looks for --android.enabled to know if you want to test on Android #4427.
  • +
+]]>
+ +
<![CDATA[sitespeed.io 36.2.3]]> https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.3 @@ -174,30 +192,6 @@
  • Fix Wilcoxon NaN values when running the compare plugin #4402.
-]]> - -
- - <![CDATA[sitespeed.io 35.7.5]]> - https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.7.5 - https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.7.5 - Mon, 23 Dec 2024 00:00:00 GMT - Fixed -
    -
  • Update to faststat 0.0.7 #4347.
  • -
-
    -
  • Update dev dependencies #4345.
  • -
-
    -
  • Let analysisstorer know about webpagereplay so that correct information is displayed #4349.
  • -
-
    -
  • Pass on webpagereplay flag to browsertime #4350.
  • -
-
    -
  • Update to Browsertime 23.5.0 #4351
  • -
]]>
diff --git a/docs/feed/testrunner.atom b/docs/feed/testrunner.atom index 2e20a5ab4c..6f44ff92ba 100644 --- a/docs/feed/testrunner.atom +++ b/docs/feed/testrunner.atom @@ -2,7 +2,7 @@ testrunner-release-feed testrunner release feed - 2025-01-30T13:38:22.187Z + 2025-01-30T15:28:50.545Z https://github.com/jpmonette/feed Peter Hedenskog diff --git a/docs/feed/testrunner.rss b/docs/feed/testrunner.rss index e1860a23a6..51c43f5d37 100644 --- a/docs/feed/testrunner.rss +++ b/docs/feed/testrunner.rss @@ -4,7 +4,7 @@ testrunner release feed https://www.sitespeed.io New releases and changelog feed of testrunner - Thu, 30 Jan 2025 13:38:22 GMT + Thu, 30 Jan 2025 15:28:50 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed en From 43a318885f070ae31ba203ac11752d03150bb7cf Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Mon, 3 Feb 2025 09:07:52 +0100 Subject: [PATCH 12/18] Fix Android API check (#4428) --- bin/sitespeed.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/sitespeed.js b/bin/sitespeed.js index e508c2dabe..e46c04d6a2 100755 --- a/bin/sitespeed.js +++ b/bin/sitespeed.js @@ -48,7 +48,7 @@ async function api(options) { apiOptions.api.testType = 'emulatedMobile'; } else if ( apiOptions.android === true || - apiOptions.android.enabled === true + (apiOptions.android && apiOptions.android.enabled === true) ) { apiOptions.api.testType = 'android'; } else if (apiOptions.safari && apiOptions.safari.ios) { From f71c799fd338bc72c15803e3c819740888a98900 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Mon, 3 Feb 2025 09:19:17 +0100 Subject: [PATCH 13/18] changelog: new release --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 148c165254..ef21b99464 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,12 @@ # CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org)) +## 36.2.5 - 2025-02-03 +### Fixed +* The check for sending Android test through APIs was broken in 36.2.4, fixed in [#4428](https://github.com/sitespeedio/sitespeed.io/pull/4428). + ## 36.2.4 - 2025-02-02 ### Fixed -* The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by [#4426](https://github.com/sitespeedio/sitespeed.io/pull/4426). +* The GitHub actions tests on Windows was broken. I think GitHub changed tere heir setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by [#4426](https://github.com/sitespeedio/sitespeed.io/pull/4426). * We have had issues with parsing Android configuration because of the `--android` flag to enable Android tests. The problem was that in some cases the internal configuration object become an Array (instead of an object) and that made some objects to do not work. The PR [#4422](https://github.com/sitespeedio/sitespeed.io/pull/4422) removes `--android` from the cli help, however it will still work as before. From 984d30b5a6dbc5e6c65dd3d411ca791aefbcbcff Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Mon, 3 Feb 2025 09:19:37 +0100 Subject: [PATCH 14/18] 36.2.5 --- npm-shrinkwrap.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 6f97c8759e..ef7274719b 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,12 +1,12 @@ { "name": "sitespeed.io", - "version": "36.2.4", + "version": "36.2.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sitespeed.io", - "version": "36.2.4", + "version": "36.2.5", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 74ad1b0a68..2386be42ca 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "sitespeed.io": "./bin/sitespeed.js", "sitespeed.io-wpr": "./bin/browsertimeWebPageReplay.js" }, - "version": "36.2.4", + "version": "36.2.5", "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.", "keywords": [ "performance", From 2edc0758aaa5de4c1955fe316942d2bbad811a64 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Mon, 3 Feb 2025 09:20:22 +0100 Subject: [PATCH 15/18] bump --- docs/_includes/version/sitespeed.io.txt | 2 +- docs/feed/sitespeed.io.atom | 74 ++++++------------------- docs/feed/sitespeed.io.rss | 68 +++++------------------ 3 files changed, 32 insertions(+), 112 deletions(-) diff --git a/docs/_includes/version/sitespeed.io.txt b/docs/_includes/version/sitespeed.io.txt index ed41edc3ba..78cbbe4287 100644 --- a/docs/_includes/version/sitespeed.io.txt +++ b/docs/_includes/version/sitespeed.io.txt @@ -1 +1 @@ -36.2.4 \ No newline at end of file +36.2.5 \ No newline at end of file diff --git a/docs/feed/sitespeed.io.atom b/docs/feed/sitespeed.io.atom index b1fb757872..a85f13358a 100644 --- a/docs/feed/sitespeed.io.atom +++ b/docs/feed/sitespeed.io.atom @@ -2,7 +2,7 @@ sitespeed.io-release-feed sitespeed.io release feed - 2025-02-02T17:40:23.999Z + 2025-02-03T08:20:01.115Z https://github.com/jpmonette/feed Peter Hedenskog @@ -16,6 +16,21 @@ http://www.sitespeed.io/favicon.ico All rights reserved 2022, Peter Hedenskog and team + + <![CDATA[sitespeed.io 36.2.5]]> + https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.5 + + 2025-02-03T00:00:00.000Z + Fixed +
    +
  • The check for sending Android test through APIs was broken in 36.2.4, fixed in #4428.
  • +
+]]>
+ + Sitespeed.io + https://www.sitespeed.io + +
<![CDATA[sitespeed.io 36.2.4]]> https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.4 @@ -23,7 +38,7 @@ 2025-02-02T00:00:00.000Z Fixed
    -
  • The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by #4426.
  • +
  • The GitHub actions tests on Windows was broken. I think GitHub changed tere heir setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by #4426.
  • We have had issues with parsing Android configuration because of the --android flag to enable Android tests. The problem was that in some cases the internal configuration object become an Array (instead of an object) and that made some objects to do not work. The PR #4422 removes --android from the cli help, however it will still work as before.
  • @@ -164,61 +179,6 @@
    • Disable the CPU/enableProfileRun check introduced in 36.0.0, that affected too many users #4408.
    -]]>
- - Sitespeed.io - https://www.sitespeed.io - -
- - <![CDATA[sitespeed.io 36.0.0]]> - https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.0.0 - - 2025-01-21T00:00:00.000Z - Added -
    -
  • Update to Coach-core 8.1.1 #4363
  • -
-
    -
  • Use the offical Slack plugin instead of node-slack #4360.
  • -
-
    -
  • Firefox 134, Chrome 132 and NodeJS 22 in the Docker container #4395, #4396 and #4405
  • -
-
    -
  • Let the Docker container output the CPU architecture for easier error reporting #4404.
  • -
-

Fixed

-
    -
  • Replace dependencies with local code:
  • -
-
    -
  • Fix cli command: Use --summaryDetail (not summary-detail) #4376.
  • -
-
    -
  • Remove connectivity output from text since it was broken #4375.
  • -
-
    -
  • Upgrade to co2.js 0.16.4 #4353.
  • -
-
    -
  • Make sure co2 data is only read once at startup #4352.
  • -
-
    -
  • Making the slim container a little smaller #4355.
  • -
-
    -
  • Ugrade to google-cloud/storage-7.14.0 #4361.
  • -
-
    -
  • Upgrade to AWS client 3.717.0 #4368
  • -
-
    -
  • Removed the webdriver manager in the Docker container 4390. We don't use it but on MacOS Selenium still uses it to find the driver for Safari so we can only remove it in Docker.
  • -
-
    -
  • Fix Wilcoxon NaN values when running the compare plugin #4402.
  • -
]]>
Sitespeed.io diff --git a/docs/feed/sitespeed.io.rss b/docs/feed/sitespeed.io.rss index ef457ec301..810011218b 100644 --- a/docs/feed/sitespeed.io.rss +++ b/docs/feed/sitespeed.io.rss @@ -4,7 +4,7 @@ sitespeed.io release feed https://www.sitespeed.io New releases and changelog feed of sitespeed.io - Sun, 02 Feb 2025 17:40:23 GMT + Mon, 03 Feb 2025 08:20:01 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed en @@ -16,6 +16,18 @@ All rights reserved 2022, Peter Hedenskog and team Web Performance + + <![CDATA[sitespeed.io 36.2.5]]> + https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.5 + https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.5 + Mon, 03 Feb 2025 00:00:00 GMT + Fixed +
    +
  • The check for sending Android test through APIs was broken in 36.2.4, fixed in #4428.
  • +
+]]>
+ +
<![CDATA[sitespeed.io 36.2.4]]> https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.2.4 @@ -23,7 +35,7 @@ Sun, 02 Feb 2025 00:00:00 GMT Fixed
    -
  • The GitHub actions tests on Windows was broken. I think GitHub changed their setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by #4426.
  • +
  • The GitHub actions tests on Windows was broken. I think GitHub changed tere heir setup: Suddenly the path to plugins was broken. Rerunning old test that used to work, failed with the same code on our side. It's fixed by #4426.
  • We have had issues with parsing Android configuration because of the --android flag to enable Android tests. The problem was that in some cases the internal configuration object become an Array (instead of an object) and that made some objects to do not work. The PR #4422 removes --android from the cli help, however it will still work as before.
  • @@ -140,58 +152,6 @@
    • Disable the CPU/enableProfileRun check introduced in 36.0.0, that affected too many users #4408.
    -]]> - - - - <![CDATA[sitespeed.io 36.0.0]]> - https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.0.0 - https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#36.0.0 - Tue, 21 Jan 2025 00:00:00 GMT - Added -
      -
    • Update to Coach-core 8.1.1 #4363
    • -
    -
      -
    • Use the offical Slack plugin instead of node-slack #4360.
    • -
    -
      -
    • Firefox 134, Chrome 132 and NodeJS 22 in the Docker container #4395, #4396 and #4405
    • -
    -
      -
    • Let the Docker container output the CPU architecture for easier error reporting #4404.
    • -
    -

    Fixed

    -
      -
    • Replace dependencies with local code:
    • -
    -
      -
    • Fix cli command: Use --summaryDetail (not summary-detail) #4376.
    • -
    -
      -
    • Remove connectivity output from text since it was broken #4375.
    • -
    -
      -
    • Upgrade to co2.js 0.16.4 #4353.
    • -
    -
      -
    • Make sure co2 data is only read once at startup #4352.
    • -
    -
      -
    • Making the slim container a little smaller #4355.
    • -
    -
      -
    • Ugrade to google-cloud/storage-7.14.0 #4361.
    • -
    -
      -
    • Upgrade to AWS client 3.717.0 #4368
    • -
    -
      -
    • Removed the webdriver manager in the Docker container 4390. We don't use it but on MacOS Selenium still uses it to find the driver for Safari so we can only remove it in Docker.
    • -
    -
      -
    • Fix Wilcoxon NaN values when running the compare plugin #4402.
    • -
    ]]>
    From 5abff0c5aedbf7cf4d40048de5010e0d6dee7345 Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Wed, 5 Feb 2025 10:04:25 +0100 Subject: [PATCH 16/18] Chrome 133 and Firefox 135 (#4431) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 72cabd0327..1b70590ccf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM sitespeedio/webbrowsers:chrome-132.0-firefox-134.0-edge-132.0 +FROM sitespeedio/webbrowsers:chrome-133.0-firefox-135.0-edge-132.0 ARG TARGETPLATFORM=linux/amd64 From 65e3751a9f89caae1ddf2e8f7dcbbe17f526f5bc Mon Sep 17 00:00:00 2001 From: Peter Hedenskog Date: Wed, 5 Feb 2025 10:04:54 +0100 Subject: [PATCH 17/18] Guard against no pages in the HAR (#4430) --- lib/plugins/domains/aggregator.js | 59 +++++++++++++++++-------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/lib/plugins/domains/aggregator.js b/lib/plugins/domains/aggregator.js index 2cdccb5e2c..8875fd54e2 100644 --- a/lib/plugins/domains/aggregator.js +++ b/lib/plugins/domains/aggregator.js @@ -80,40 +80,45 @@ export class DomainsAggregator { if (this.groups[mainDomain] === undefined) { this.groups[mainDomain] = {}; } - const firstPageId = har.log.pages[0].id; - for (const entry of har.log.entries) { - if (entry.pageref !== firstPageId) { - // Only pick the first request out of multiple runs. - continue; - } - - const domainName = parseDomainName(entry.request.url), - domain = this.domains[domainName] || getDomain(domainName), - groupDomain = - this.groups[mainDomain][domainName] || getDomain(domainName), - totalTime = entry.time; + if (har.log.pages.length > 0) { + const firstPageId = har.log.pages[0].id; - domain.requestCount++; - groupDomain.requestCount++; + for (const entry of har.log.entries) { + if (entry.pageref !== firstPageId) { + // Only pick the first request out of multiple runs. + continue; + } - if (isValidTiming(totalTime)) { - domain.totalTime.push(totalTime); - groupDomain.totalTime.push(totalTime); - } else { - log.debug('Missing time from har entry for url: ' + entry.request.url); - } + const domainName = parseDomainName(entry.request.url), + domain = this.domains[domainName] || getDomain(domainName), + groupDomain = + this.groups[mainDomain][domainName] || getDomain(domainName), + totalTime = entry.time; + + domain.requestCount++; + groupDomain.requestCount++; + + if (isValidTiming(totalTime)) { + domain.totalTime.push(totalTime); + groupDomain.totalTime.push(totalTime); + } else { + log.debug( + 'Missing time from har entry for url: ' + entry.request.url + ); + } - for (const name of timingNames) { - const timing = entry.timings[name]; + for (const name of timingNames) { + const timing = entry.timings[name]; - if (isValidTiming(timing)) { - domain[name].push(timing); - groupDomain[name].push(timing); + if (isValidTiming(timing)) { + domain[name].push(timing); + groupDomain[name].push(timing); + } } + this.domains[domainName] = domain; + this.groups[mainDomain][domainName] = groupDomain; } - this.domains[domainName] = domain; - this.groups[mainDomain][domainName] = groupDomain; } } summarize() { From 90984b1712650ab110470e1ddd84ca38da87da9e Mon Sep 17 00:00:00 2001 From: soulgalore Date: Wed, 5 Feb 2025 15:18:29 +0100 Subject: [PATCH 18/18] bump --- docs/_includes/version/browsertime.txt | 2 +- docs/_includes/version/server.txt | 2 +- docs/_includes/version/testrunner.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_includes/version/browsertime.txt b/docs/_includes/version/browsertime.txt index 15e45a76ee..6c0e11a3de 100644 --- a/docs/_includes/version/browsertime.txt +++ b/docs/_includes/version/browsertime.txt @@ -1 +1 @@ -24.1.1 \ No newline at end of file +24.2.0 \ No newline at end of file diff --git a/docs/_includes/version/server.txt b/docs/_includes/version/server.txt index 589268e6fe..e21e727f96 100644 --- a/docs/_includes/version/server.txt +++ b/docs/_includes/version/server.txt @@ -1 +1 @@ -1.3.0 \ No newline at end of file +1.4.0 \ No newline at end of file diff --git a/docs/_includes/version/testrunner.txt b/docs/_includes/version/testrunner.txt index 1464c521f9..f9cbc01ade 100644 --- a/docs/_includes/version/testrunner.txt +++ b/docs/_includes/version/testrunner.txt @@ -1 +1 @@ -1.0.5 \ No newline at end of file +1.0.7 \ No newline at end of file