Compare commits

..

488 Commits

Author SHA1 Message Date
Peter Hedenskog b2954898e8 new version 2026-01-11 15:29:51 +01:00
Peter Hedenskog 68bd39718a 39.3.1 2026-01-11 15:29:11 +01:00
Peter Hedenskog 105d62951f prepping new release 2026-01-11 15:28:29 +01:00
Peter Hedenskog d37d33789e
Browsertime 26.3.1 (#4579) 2026-01-11 15:28:04 +01:00
Peter Hedenskog 594ef2ec9b new bt 2026-01-11 15:15:20 +01:00
soulgalore 1a20ab56d3 version bump 2026-01-10 22:41:25 +01:00
soulgalore 8d29bf377b 39.3.0 2026-01-10 22:40:24 +01:00
soulgalore d07b588313 preparing new release 2026-01-10 22:39:15 +01:00
soulgalore 64cb98eb40 You can collect response bodies for Firefox again 2026-01-10 22:35:06 +01:00
Peter Hedenskog 2a2a33468a
Browsertime 26.3.0 (#4578) 2026-01-09 22:47:20 +01:00
soulgalore 5044ddf5a6 new bt 2026-01-09 22:35:09 +01:00
Michael Walter a2924a7819
Fixed typo in iteration detail page for the cpuConsumption metric (#4577)
Fixes #4435
2026-01-06 09:16:14 +01:00
Peter Hedenskog 2faf5df166 More Netlify fixes 2026-01-02 09:00:04 +01:00
Peter Hedenskog 56ce0e5e28 Back to the old version for netlify 2026-01-02 08:54:25 +01:00
Peter Hedenskog f8324c4322 Remove lockfile 2026-01-02 08:43:52 +01:00
Peter Hedenskog dba98cc0cd New version 2026-01-02 08:31:54 +01:00
Peter Hedenskog e73612e9f3 Update versions 2026-01-01 10:28:10 +01:00
Peter Hedenskog 2d06c39ceb New year 2026-01-01 10:25:11 +01:00
soulgalore 4bf4b5ed4d bump versions 2025-12-18 10:22:36 +01:00
soulgalore 90a5d33907 39.2.0 2025-12-18 10:21:40 +01:00
soulgalore 731f80c021 new release 2025-12-18 10:21:04 +01:00
Peter Hedenskog 6622a84f06
browsertime 26.2 (#4575) 2025-12-18 10:18:43 +01:00
soulgalore 10baacba6b new version 2025-12-18 09:59:41 +01:00
Peter Hedenskog dfe3cc020e bump 2025-12-17 15:59:45 +01:00
Peter Hedenskog d9dd50b57a 39.1.2 2025-12-17 15:58:57 +01:00
Peter Hedenskog f6c555e2e3 new release 2025-12-17 15:57:56 +01:00
Peter Hedenskog da483ff821
Add missing alias (#4574) 2025-12-17 15:56:28 +01:00
soulgalore 3711c21b76 bump 2025-12-15 15:26:30 +01:00
soulgalore 15aba2d47d 39.1.1 2025-12-15 15:25:47 +01:00
soulgalore 334b6c1cd2 new release 2025-12-15 15:25:26 +01:00
soulgalore cbe2665c1d bump 2025-12-15 15:23:26 +01:00
Peter Hedenskog 584648356d
Safer handling of broken URLs (#4573) 2025-12-15 15:06:07 +01:00
soulgalore 9d8b03de0c 39.1.0 2025-12-15 06:30:06 +01:00
Peter Hedenskog fbcda1903c new release 2025-12-15 06:28:29 +01:00
Peter Hedenskog 118946bdb0
Chrome 143, Edge 143 and Firefox 146 (#4572) 2025-12-15 06:27:09 +01:00
Peter Hedenskog 9398bec7af bump 2025-12-15 05:37:19 +01:00
Peter Hedenskog e04f0af4aa 39.0.0 2025-12-15 05:35:42 +01:00
Peter Hedenskog 83e6d22a6d New release 2025-12-15 05:34:42 +01:00
Peter Hedenskog 610b5bc06e Remove screenshotParams.png.compressionLevel 2025-12-11 19:20:42 +01:00
Peter Hedenskog 9344168746 bump 2025-12-11 19:07:47 +01:00
Peter Hedenskog 61768444cb
Use NodeJS 24 and Ubuntu 24.04 in the Docker container + related fixes (#4570) 2025-12-11 12:32:17 +01:00
Peter Hedenskog 2a3efa65f7 new version 2025-12-10 18:55:43 +01:00
soulgalore f5f455d0a0 new versions 2025-11-02 15:38:07 +01:00
soulgalore da65dbe47b 38.6.0 2025-11-02 15:37:10 +01:00
soulgalore ed1dd231a1 new release 2025-11-02 15:36:39 +01:00
Peter Hedenskog 29769959af
Browsertime 25.4.0 (#4566) 2025-11-02 15:34:12 +01:00
soulgalore fcf35fbfa0 new bt 2025-11-02 15:18:57 +01:00
Peter Hedenskog 4894c06607
Chrome 142 (#4565) 2025-10-30 07:21:40 +01:00
Guillermo González Lara 6c798c00e0
fix: corrects a typo in the README.md (#4564) 2025-10-28 07:36:52 +01:00
soulgalore 34d7f79a45 bump 2025-10-24 16:30:53 +02:00
soulgalore 50047fa132 38.5.2 2025-10-24 16:30:00 +02:00
soulgalore d3baa3d484 new release 2025-10-24 16:29:27 +02:00
Peter Hedenskog 2d15bdaf32
Browsertime 25.3.1 (#4562) 2025-10-24 16:14:18 +02:00
soulgalore 4ede64554d new bt 2025-10-24 15:54:43 +02:00
soulgalore 3350bb255e bump 2025-10-24 15:52:10 +02:00
soulgalore 8a87f6bea2 bump 2025-10-22 23:29:06 +02:00
soulgalore de17d25d1c bump 2025-10-21 20:53:21 +02:00
soulgalore 4d4f79040f 38.5.1 2025-10-21 20:51:43 +02:00
soulgalore 0093cb1e71 new release 2025-10-21 20:51:12 +02:00
soulgalore 12ff9830e0 new release 2025-10-18 13:07:06 +02:00
soulgalore 3c6b240e69 38.5.0 2025-10-18 13:06:14 +02:00
soulgalore 2794d84d5a new release 2025-10-18 13:05:49 +02:00
Peter Hedenskog 1eeb2804ad
Browsertime 25.3 (#4559) 2025-10-17 23:38:30 +02:00
soulgalore a10ae003c5 new bt 2025-10-17 23:23:26 +02:00
Peter Hedenskog b69b002596
Log 1.0.0 (#4558) 2025-10-16 21:34:32 +02:00
Peter Hedenskog 7377779d22 Bump version 2025-10-16 17:10:44 +02:00
Peter Hedenskog 434bc0b72f
ora 9.0 (#4557) 2025-10-16 05:21:39 +02:00
Peter Hedenskog 40e7b7e3c5
Update dependencies. (#4556) 2025-10-16 01:29:38 +02:00
Peter Hedenskog 0ad91e1911
Axe core 4.11.0 (#4555) 2025-10-15 21:48:26 +02:00
Peter Hedenskog 27d2f7e7b8
Firefox 144 (#4554) 2025-10-15 11:52:19 +02:00
soulgalore b5a82b43f7 bump 2025-10-14 08:39:43 +02:00
soulgalore 0d26511eb0 38.4.1 2025-10-14 08:38:54 +02:00
soulgalore e75f1f96bf new release 2025-10-14 08:38:34 +02:00
Peter Hedenskog dbcdc72bed Fix maxwidth size for Grafana annotations 2025-10-13 09:30:26 +02:00
Peter Hedenskog b1566ba3ce
Set max-width for images in desktop for Grafana (#4553) 2025-10-13 07:41:31 +02:00
soulgalore eb39540c6d Update to latest Grafana 12.2.0 2025-10-12 22:02:13 +02:00
soulgalore d0c775d047 new version 2025-10-12 17:07:50 +02:00
soulgalore 571a3773a8 38.4.0 2025-10-12 16:45:34 +02:00
soulgalore 3cd60c8946 new release 2025-10-12 16:45:08 +02:00
soulgalore f438c04aa6 new release 2025-10-12 16:44:46 +02:00
Peter Hedenskog d7ce5881a7
Browsertime 25.2.0 (#4552) 2025-10-12 16:20:01 +02:00
soulgalore 76b08df977 new bt 2025-10-12 16:01:01 +02:00
Peter Hedenskog b75ca9bc92 changelog: new chrome 2025-10-11 00:50:10 +02:00
Peter Hedenskog 6d0eff8991
Chrome/Edge 141 (#4551) 2025-10-10 11:53:22 +02:00
Peter Hedenskog 979cd0ce94 Update with relevant example 2025-09-22 14:25:30 +02:00
Peter Hedenskog f2a1b5b64f
FF 143, Edge 140 (#4550) 2025-09-17 23:07:57 +02:00
soulgalore 235aa54e90 new release 2025-09-07 08:33:32 +02:00
soulgalore 34b34bad42 38.3.0 2025-09-07 08:32:25 +02:00
soulgalore 479871bb69 new release 2025-09-07 08:31:53 +02:00
Peter Hedenskog 34251fec8e
Chrome 140 (#4549) 2025-09-07 08:29:18 +02:00
Peter Hedenskog 61997a1a0b Update contributing guide for AI 2025-09-05 16:37:57 +02:00
Peter Hedenskog 925c69c05c
Browsertime 25.1 (#4548) 2025-09-05 09:20:48 +02:00
Peter Hedenskog 6d1520444a new bt 2025-09-05 08:58:27 +02:00
soulgalore 63e75f63ae new version 2025-08-31 16:36:33 +02:00
soulgalore f2f9ffcb18 38.2.0 2025-08-31 16:34:55 +02:00
soulgalore dab09903d0 new release 2025-08-31 16:34:31 +02:00
Timo Tijhof b40196cf89
blog: Improve RSS feed (#4544)
* blog: Point rss discovery to canonical URL

Update discovery link to the current canonical URL
for where the blog RSS feed lives. The redirect
is kept for compatibility.

* blog: Fix broken self URL and improve title

* Fix 404 from https://www.sitespeed.io/feed/blog.xml to `https://www.sitespeed.io/feed.xml` which can confuse feed readers by updating their link but then losing the subscription to an error.
* Shorten title and start with "Sitespeed.io" so that it sorts well alongside many other blogs in a feed reader under the default suggested name.

---------

Co-authored-by: Peter Hedenskog <peter@soulgalore.com>
2025-08-21 07:52:15 +02:00
Peter Hedenskog b52f83e99b
Firefox 142 (#4545) 2025-08-20 10:31:00 +02:00
Peter Hedenskog 0de5401744
Chrome and Edge 139 (#4542) 2025-08-11 10:45:02 +02:00
Peter Hedenskog eb450201f2 38.1.2 2025-08-04 21:57:14 +02:00
Peter Hedenskog 627f393e55 new release 2025-08-04 21:56:48 +02:00
Peter Hedenskog 0a5e861ba2
Update to coach core 8.1.3 (#4541) 2025-08-04 21:48:04 +02:00
Peter Hedenskog f509f84c85 new release 2025-08-04 21:36:46 +02:00
soulgalore edd0d9ac3c new version 2025-08-01 07:32:04 +02:00
soulgalore 90507301b7 38.1.1 2025-08-01 07:31:14 +02:00
soulgalore 39c2b79dbd new release 2025-08-01 07:30:44 +02:00
Peter Hedenskog 1fd7f8b131
Coach core 8.1.2 (#4540) 2025-08-01 07:21:28 +02:00
soulgalore 039bba1a71 bump 2025-08-01 07:05:13 +02:00
soulgalore 014c437f7b bump versions 2025-07-28 20:21:17 +02:00
soulgalore 6ca37a64c3 38.1.0 2025-07-28 20:20:00 +02:00
soulgalore d6aa4f78fc new release 2025-07-28 20:19:31 +02:00
Peter Hedenskog fbbfe8528a
Firefox 141 (#4538) 2025-07-28 09:36:17 +02:00
Peter Hedenskog 50091f6da8
Fix form-data dependency (#4539) 2025-07-27 18:51:42 +02:00
soulgalore bad7a1a9eb Bump version 2025-07-16 15:58:48 +02:00
soulgalore 0789ecf45a 38.0.0 2025-07-16 15:58:05 +02:00
Peter Hedenskog c09992d760 prepare a new release 2025-07-16 15:43:10 +02:00
Peter Hedenskog d92804a648 remove portable settings 2025-07-16 15:22:38 +02:00
Peter Hedenskog 112aa324ec changelog: prepping the release 2025-07-16 15:11:20 +02:00
Peter Hedenskog 87c2d02b57
Browsertime 25 (#4536) 2025-07-16 15:09:00 +02:00
soulgalore 0b55010e8b new bt 2025-07-16 14:54:54 +02:00
Peter Hedenskog 1e195c05f6
Update dev dependencies (#4534) 2025-07-10 08:00:36 +02:00
Peter Hedenskog f270ec42a5
Update S3 client (#4533) 2025-07-09 07:15:06 +02:00
Peter Hedenskog 81e5ab8dff
Yargs 18 (#4531) 2025-07-09 06:54:19 +02:00
Peter Hedenskog a95160ec1a
Bump to NodeJS 20 (#4532) 2025-07-08 08:21:20 +02:00
soulgalore 8dcdb8a140 version bump 2025-06-30 11:33:39 +02:00
soulgalore 042ee0d53e 37.9.0 2025-06-30 11:32:32 +02:00
Peter Hedenskog ff8e182b97 new release 2025-06-30 11:31:32 +02:00
Peter Hedenskog 16cc376d1b
Bt 24.9.0 and Edge 138 (#4530) 2025-06-30 11:16:43 +02:00
Peter Hedenskog b7027a5de7 new bt 2025-06-30 10:51:56 +02:00
Peter Hedenskog bcd4bcfc22
Upgrade to Chrome 138 and Firefox 140 (#4528) 2025-06-25 05:43:28 +02:00
soulgalore bafe60ba7b bt 2025-06-22 15:26:55 +02:00
Peter Hedenskog 4959a247dc bump 2025-06-01 06:55:18 +02:00
Peter Hedenskog 659fab2ef6 37.8.0 2025-06-01 06:54:25 +02:00
Peter Hedenskog 98f500abd7
Browsertime 24.8.1 (#4525) 2025-06-01 06:54:00 +02:00
Peter Hedenskog bf57ce9db2 new release 2025-06-01 06:46:33 +02:00
Peter Hedenskog f41ee9bcd1 bump 2025-06-01 06:39:43 +02:00
Peter Hedenskog 07634de5a0
Browsertime 24.8 (#4524) 2025-05-30 17:34:30 +02:00
Peter Hedenskog 8901c0c1d8
Updated dependencies (#4523) 2025-05-30 17:23:39 +02:00
Peter Hedenskog 719e5f67ec bump 2025-05-30 17:17:28 +02:00
Emmanuel Ferdman 9e74015246
fix contributors reference (#4521)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-05-30 10:59:55 +02:00
Peter Hedenskog 6e02c16cdb
Edge 137 (#4522) 2025-05-30 09:24:36 +02:00
soulgalore 54b50b9e40 bump 2025-05-28 07:33:39 +02:00
soulgalore 44b44107e0 37.7.0 2025-05-28 07:32:30 +02:00
soulgalore 9d3c4bee85 changelog: new release 2025-05-28 07:31:39 +02:00
Peter Hedenskog 36a0e60eae
Chrome 137 and Firefox 139 (#4520) 2025-05-28 07:22:36 +02:00
Peter Hedenskog 5c8483a803
Skip 18, use 24 (#4519) 2025-05-26 07:08:49 +02:00
Peter Hedenskog 28706230a4
Swallow the sandbox error from Firefox (#4518) 2025-05-23 09:15:46 +02:00
soulgalore d09bdee115 bump 2025-05-13 19:09:34 +02:00
soulgalore ba2a8a6a42 37.6.0 2025-05-13 19:07:52 +02:00
soulgalore dbc4bace8b new release 2025-05-13 19:07:19 +02:00
Peter Hedenskog 200aa23a0f
Upgrade to latest Mac OS and Windows for tests (#4496) 2025-05-13 09:25:42 +02:00
Peter Hedenskog 00d8ac046c
Browsertime 24.7 and Edge 136 (#4514)
* browsertime 24.7 and Edge 136

* hepp
2025-05-13 08:34:01 +02:00
soulgalore dd80c197c0 new bt 2025-05-13 07:22:22 +02:00
soulgalore f47fdd3670 bump 2025-05-05 15:12:01 +02:00
soulgalore 92f6352c9b 37.5.1 2025-05-05 15:10:20 +02:00
soulgalore 9bdaff55b8 new release 2025-05-05 15:09:51 +02:00
Peter Hedenskog 90e53e8212
Browsertime 24.6.0 (#4511) 2025-05-05 08:52:28 +02:00
soulgalore 7c934de739 bt 2025-05-05 07:05:35 +02:00
Peter Hedenskog 79eda958bb
Chromium 136 (#4510) 2025-05-05 07:03:10 +02:00
soulgalore bbb8ee07ad bump 2025-04-30 07:03:09 +02:00
soulgalore eee9b31196 37.5.0 2025-04-30 07:02:18 +02:00
soulgalore 604acdbd32 new release 2025-04-30 07:01:50 +02:00
Peter Hedenskog d7ea54fca0
Firefox 138 and Chrome 136 (#4507) 2025-04-30 06:33:51 +02:00
Peter Hedenskog 57da37f561
New browsertime (#4506) 2025-04-30 06:17:03 +02:00
soulgalore e9af830bb8 new bt 2025-04-30 06:06:25 +02:00
soulgalore 5780d549eb new release 2025-04-19 13:20:55 +02:00
soulgalore 2f3a07a13d 37.4.2 2025-04-19 13:18:53 +02:00
soulgalore f7e8840aff changelog: new release 2025-04-19 13:17:45 +02:00
Peter Hedenskog cc146385d8
s3: make sure Expires always is a Date. (#4503)
https://github.com/sitespeedio/sitespeed.io/issues/4501
2025-04-18 21:45:24 +02:00
Peter Hedenskog bff97dcff8
Run test on latest (#4502) 2025-04-18 21:34:00 +02:00
Peter Hedenskog 24066f6152
Exclude closing script tags in HAR files (#4500) 2025-04-17 13:02:20 +02:00
Peter Hedenskog 78bfa20635 docs: link to GPSI key 2025-04-14 16:29:18 +02:00
soulgalore 2940fd461d bump 2025-04-10 19:04:13 +02:00
soulgalore 43384b89e1 37.4.1 2025-04-10 19:03:04 +02:00
soulgalore 4752828762 fix release 2025-04-10 19:02:22 +02:00
Peter Hedenskog 60f3646aef
Catch if one page is broken https://github.com/sitespeedio/sitespeed.io/issues/4124 (#4495) 2025-04-10 15:29:38 +02:00
soulgalore 2a9927b482 new release 2025-04-09 07:53:43 +02:00
soulgalore 6e9ca32873 37.4.0 2025-04-09 07:52:40 +02:00
soulgalore 2598654012 new release 2025-04-09 07:51:46 +02:00
Peter Hedenskog ee36f837f1
Edge 135 (#4494) 2025-04-07 15:05:18 +02:00
Peter Hedenskog eae71c82fa
Update Chrome and Firefox (#4493) 2025-04-02 09:56:13 +02:00
soulgalore 831c2fe48a bump versions 2025-03-21 12:53:58 +01:00
soulgalore c6f5509521 37.3.2 2025-03-21 12:53:07 +01:00
soulgalore dd03855b72 new release 2025-03-21 12:52:39 +01:00
Peter Hedenskog 79145d418c
Browsertime 24.5.2 (#4490) 2025-03-21 07:48:49 +01:00
Peter Hedenskog c806d3374b bt 2025-03-20 23:14:08 +01:00
Peter Hedenskog 30c76c572a
Use NodeJS 22 (#4489) 2025-03-20 14:25:27 +01:00
soulgalore 86c2e0cb2b bump 2025-03-20 07:49:11 +01:00
soulgalore d46b241cd7 37.3.1 2025-03-20 07:47:18 +01:00
Peter Hedenskog 626bdefddc changelog: new release 2025-03-20 07:40:40 +01:00
Peter Hedenskog b1a9d98095
Be safe when checking for InfluxDB (#4487) 2025-03-20 06:25:03 +01:00
Peter Hedenskog 759e65646a
new bt (#4484) 2025-03-18 21:07:05 +01:00
soulgalore dfd0db12dd new bt 2025-03-18 20:00:59 +01:00
Peter Hedenskog 4f0705250f
Updated CRUX dashboard with the new data (#4482) 2025-03-16 08:54:13 +01:00
soulgalore 19413f6f6d bump 2025-03-13 16:33:43 +01:00
soulgalore 7e4ddb5d8b 37.3.0 2025-03-13 16:32:51 +01:00
soulgalore 13afa9267b new release 2025-03-13 16:32:28 +01:00
Peter Hedenskog 4e5af5aff8
Browsertime 24.5.0 (#4480) 2025-03-13 16:26:56 +01:00
soulgalore 8e48f7104e new bt 2025-03-13 16:13:22 +01:00
soulgalore 23a9ea5f76 bump 2025-03-12 21:13:12 +01:00
soulgalore aebac68dfb 37.2.0 2025-03-12 21:12:07 +01:00
soulgalore 96b4f88756 New release 2025-03-12 21:11:36 +01:00
Peter Hedenskog 657e7eb434
Browsertime 24.4.0 (#4478) 2025-03-11 20:52:49 +01:00
soulgalore b45f19b498 new bt 2025-03-11 19:34:09 +01:00
soulgalore 93a25eab26 bump version 2025-03-11 13:55:37 +01:00
soulgalore f830eecfcc 37.1.2 2025-03-11 13:54:54 +01:00
soulgalore 1f7249dc54 new release 2025-03-11 13:54:28 +01:00
Peter Hedenskog dec8a89c82
Set the filename as HTML name instead of full path for scripting (#4477) 2025-03-11 09:06:32 +01:00
soulgalore dcc380ef9f bump 2025-03-10 11:46:22 +01:00
soulgalore 373d349c8f 37.1.1 2025-03-10 11:45:33 +01:00
soulgalore 1d89636ffa new release 2025-03-10 11:45:06 +01:00
soulgalore 5f83d4d647 bump 2025-03-10 11:43:13 +01:00
Peter Hedenskog b4fb56269d
Catch failure that happens if no URL works (#4474) 2025-03-10 11:16:26 +01:00
Peter Hedenskog 833e880214
Send browsertime errors as early as possible (and fix some missing data) (#4475) 2025-03-10 10:47:22 +01:00
soulgalore 85bddc9835 37.1.0 2025-03-08 16:37:21 +01:00
soulgalore 74248d91c2 new release 2025-03-08 16:36:38 +01:00
Peter Hedenskog e644fac99b
Simplify logic https://github.com/sitespeedio/sitespeed.io/issues/4471 (#4472)
* Simplify logic https://github.com/sitespeedio/sitespeed.io/issues/4471

* Swallow and log errors
2025-03-08 15:17:40 +01:00
Peter Hedenskog 1c6a02f67b Edge 134 2025-03-07 11:27:46 +01:00
Peter Hedenskog 51b7a158d9
Revert "Revert "Chrome 134, Firefox 136, Edge 133 (#4467)" (#4468)" (#4470)
This reverts commit 9766200b1b.
2025-03-07 09:10:34 +01:00
Peter Hedenskog 66d8fdef87 bump 2025-03-07 09:09:49 +01:00
Peter Hedenskog 97c34e370a 37.0.4 2025-03-07 09:09:01 +01:00
Peter Hedenskog 1416245a04 new release 2025-03-07 09:08:34 +01:00
Peter Hedenskog 2f9c23dfe1
Fix annotations message for InfluxDB (#4469) 2025-03-07 09:06:28 +01:00
Peter Hedenskog 9766200b1b
Revert "Chrome 134, Firefox 136, Edge 133 (#4467)" (#4468)
This reverts commit f9d489a738.
2025-03-07 08:53:53 +01:00
Peter Hedenskog f9d489a738
Chrome 134, Firefox 136, Edge 133 (#4467) 2025-03-06 06:31:10 +01:00
soulgalore 0f8f970bb4 bump 2025-03-06 05:56:00 +01:00
soulgalore d6fbe6e844 37.0.3 2025-03-06 05:55:22 +01:00
soulgalore 68e1c83fc4 new release 2025-03-06 05:54:58 +01:00
Peter Hedenskog dd87bdbf60
Another plugin help fix (#4466) 2025-03-06 05:52:57 +01:00
soulgalore 59cc0de083 bump 2025-03-05 21:09:22 +01:00
soulgalore 726deb63c6 37.0.2 2025-03-05 21:08:40 +01:00
soulgalore f1501abb9c new release 2025-03-05 21:08:05 +01:00
Peter Hedenskog e33e635f89
Smarter fix to get the help from the plugin (#4465) 2025-03-05 21:01:41 +01:00
soulgalore 0ce768d2a4 bump 2025-03-05 17:58:43 +01:00
soulgalore 203d4a3372 37.0.1 2025-03-05 17:57:57 +01:00
soulgalore f052a12449 new release 2025-03-05 17:57:34 +01:00
Peter Hedenskog 201fb8b62b
Fix loading plugin help (#4463) 2025-03-05 17:55:58 +01:00
soulgalore 9b8b40c570 bump 2025-03-05 16:37:36 +01:00
soulgalore 7a6ad58fe7 37.0.0 2025-03-05 16:36:27 +01:00
soulgalore d43e2f5f3e new release 2025-03-05 16:36:02 +01:00
Peter Hedenskog dbf9d2fdfd changelog: more info 2025-03-04 18:52:29 +01:00
Peter Hedenskog 70f87a7fa7
Include InfluxDB in the +1 container (#4460) 2025-03-04 07:36:16 +01:00
Peter Hedenskog 39ff8259dc Recommend using a configuration JSON file.
https://github.com/sitespeedio/sitespeed.io/issues/4458
2025-03-04 07:09:58 +01:00
Peter Hedenskog 28093a4268
Add support for --logLevel (#4459) 2025-03-03 20:28:34 +01:00
soulgalore 4e376b9798 bump 2025-03-03 19:02:19 +01:00
Peter Hedenskog d3058dfd64
Make sure sitespeed.io do not fail if a test fails. (#4457)
https://github.com/sitespeedio/sitespeed.io/issues/4453
https://github.com/sitespeedio/sitespeed.io/pull/4454
2025-03-03 18:00:28 +01:00
Peter Hedenskog c1920e615d Prepare for new release 2025-03-03 07:24:16 +01:00
Peter Hedenskog 617d7d2f1d
Also try to load cli options locally (#4455) 2025-03-02 18:47:07 +01:00
Peter Hedenskog 2cd75d772c
Add support for --help from globally installed plugins (as long as you include the plugin in add). (#4450)
* Add support for --help from globally installed plugins.

* Disable version and help from first parsing
2025-03-01 22:03:30 +01:00
Peter Hedenskog e78200da3e
Move InfluxDB to it own standalone plugin (#4451) 2025-02-28 15:22:28 +01:00
Peter Hedenskog b0a98cc973
Catch if plugins aren't found globally (#4452) 2025-02-28 04:24:17 +01:00
Peter Hedenskog 06fb437625
Replace the junit-report-builder package (#4448) 2025-02-26 15:05:44 +01:00
Peter Hedenskog 2cc6fdf820
Remove Tape dependencies. (#4447)
This remove the Tape dependency and change how we write Tap:
* Always write both success and failures.
* Skip the error trace since it do not add any extra information.
2025-02-26 14:49:31 +01:00
Peter Hedenskog c592349bc3 docs: remove webpagetest budget example 2025-02-24 14:30:23 +01:00
Peter Hedenskog c3d53d6482 Try to fix build on Docker.
https://github.com/actions/runner-images/issues/11471#issuecomment-2663514074
2025-02-18 07:29:53 +01:00
Peter Hedenskog 6403cefb82 docs: update 2025-02-18 05:42:31 +01:00
soulgalore 671305f470 Use 22.04 2025-02-17 22:42:16 +01:00
soulgalore f824c1fb2e bump 2025-02-17 22:41:27 +01:00
soulgalore b4fbaa83e4 36.4.1 2025-02-17 22:36:16 +01:00
soulgalore 3d99280237 new release 2025-02-17 22:35:35 +01:00
Peter Hedenskog 37a30ec0e0
Ubuntu latest (24.04) has problems building ARM Docker (#4439) 2025-02-17 22:04:34 +01:00
soulgalore eaac8d2d32 docs: update bt 2025-02-14 07:34:20 +01:00
soulgalore c32b32a419 bump 2025-02-14 07:19:05 +01:00
soulgalore 75be28bacd 36.4.0 2025-02-14 07:18:10 +01:00
soulgalore d8b9f0cd94 changelog: new release 2025-02-14 07:17:47 +01:00
Peter Hedenskog bd73ce386e
Include LCP resource type fraction in TSDB data (#4438) 2025-02-14 06:25:16 +01:00
Peter Hedenskog 8a9af743f1
Extra CRUX LCP information (#4437) 2025-02-14 05:55:06 +01:00
Peter Hedenskog 6056a1d3b4
crux: include crux histograms (#4436) 2025-02-13 22:24:35 +01:00
soulgalore 770b181e18 versions 2025-02-13 19:27:12 +01:00
soulgalore 6bb6a3d5d7 bump 2025-02-08 16:38:52 +01:00
soulgalore f00b4458bb 36.3.0 2025-02-08 16:37:52 +01:00
soulgalore 5942906bd2 new release 2025-02-08 16:37:23 +01:00
soulgalore c6723b259a bump 2025-02-08 16:33:09 +01:00
Peter Hedenskog c49e50a110
Log missing green domains as info (#4433) 2025-02-07 07:17:23 +01:00
Peter Hedenskog d57a491344
browsertime 24.2.0 (#4432) 2025-02-06 13:28:38 +01:00
soulgalore 90984b1712 bump 2025-02-05 15:18:33 +01:00
Peter Hedenskog 65e3751a9f
Guard against no pages in the HAR (#4430) 2025-02-05 10:04:54 +01:00
Peter Hedenskog 5abff0c5ae
Chrome 133 and Firefox 135 (#4431) 2025-02-05 10:04:25 +01:00
Peter Hedenskog 2edc0758aa bump 2025-02-03 09:20:22 +01:00
Peter Hedenskog 984d30b5a6 36.2.5 2025-02-03 09:19:37 +01:00
Peter Hedenskog f71c799fd3 changelog: new release 2025-02-03 09:19:17 +01:00
Peter Hedenskog 43a318885f
Fix Android API check (#4428) 2025-02-03 09:07:52 +01:00
Peter Hedenskog 180b893e06 new version 2025-02-02 18:41:03 +01:00
Peter Hedenskog 28e2b4792f 36.2.4 2025-02-02 18:39:49 +01:00
Peter Hedenskog db55bbb44c changelog: new release 2025-02-02 18:39:06 +01:00
Peter Hedenskog 8bb5faa79b changelog: better language 2025-02-02 18:37:22 +01:00
Peter Hedenskog 4c28da9288 changelog: api fix 2025-02-02 14:28:46 +01:00
Peter Hedenskog f48e9723a7
Fix: the API used android or android.enabled for Android configuration (#4427) 2025-02-02 14:24:31 +01:00
Peter Hedenskog 4e6cf72010 changelog: android fix 2025-02-02 14:07:05 +01:00
Peter Hedenskog be83456da4
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.
2025-02-02 14:04:16 +01:00
Peter Hedenskog f19fb295de changelog: windows fix 2025-02-02 09:59:11 +01:00
Peter Hedenskog e0d004beec
Fix the "new" breaking of loading of plugins on Windows GitHub actions. (#4426) 2025-02-02 09:55:49 +01:00
Peter Hedenskog 8af2110858
Make sure we try/catch everything and log the root cause (#4424) 2025-01-31 17:23:37 +01:00
soulgalore 3f15b9b942 bump 2025-01-30 14:45:04 +01:00
soulgalore 02c3e77634 bump 2025-01-30 14:41:37 +01:00
soulgalore a3846d2f1e 36.2.3 2025-01-30 14:40:04 +01:00
soulgalore 3dee3821ae new release 2025-01-30 14:39:34 +01:00
soulgalore 35e4975fdc new versions 2025-01-30 14:38:22 +01:00
Peter Hedenskog d9a0fbf4c8
Handle missing settings (#4420) 2025-01-29 18:35:24 +01:00
soulgalore 49ba02930d bump versions 2025-01-29 07:33:29 +01:00
soulgalore 4ae6d442ca 36.2.2 2025-01-29 07:32:29 +01:00
soulgalore e82f964d0c changelog: new release 2025-01-29 07:32:02 +01:00
Peter Hedenskog cc060b7e0c
new bt (#4419) 2025-01-29 07:29:11 +01:00
soulgalore ea2e4aa0e3 new bt 2025-01-29 07:22:37 +01:00
Peter Hedenskog 6ab121e00e
sitespeed.io log 0.2.6 (#4418) 2025-01-28 23:02:36 +01:00
Peter Hedenskog 27d5dcb724
Moar fixes for runtime settings (#4417) 2025-01-28 11:06:18 +01:00
soulgalore 74c2f6f59a bump 2025-01-28 07:56:41 +01:00
soulgalore 684161f25c 36.2.1 2025-01-28 07:55:48 +01:00
soulgalore ad71b5b139 new release 2025-01-28 07:55:26 +01:00
soulgalore c7b830b2f2 new versions 2025-01-28 07:54:13 +01:00
Peter Hedenskog b6e2a3d588
fix: broken settings check and show profile runs (#4416) 2025-01-28 07:53:20 +01:00
soulgalore 2d21d11b7c 36.2.0 2025-01-27 19:00:05 +01:00
soulgalore 4f8349b1bb changelog: new release 2025-01-27 16:30:30 +01:00
soulgalore 5169f16b39 new version 2025-01-27 16:18:03 +01:00
Peter Hedenskog fb6164619b
Show rooted and gnirehtet corrected (#4415) 2025-01-27 15:42:00 +01:00
Peter Hedenskog 4ca89b0c21
New bt and display more settings (#4414)
* New bt and display more settings

* fix
2025-01-27 10:23:57 +01:00
soulgalore 0367ab409a bump versions 2025-01-27 07:34:11 +01:00
soulgalore 5c94968e8a versions 2025-01-25 16:10:53 +01:00
soulgalore f3403cddfc 36.1.0 2025-01-25 06:17:16 +01:00
soulgalore 4f8108a96f new release 2025-01-25 06:16:43 +01:00
Peter Hedenskog 5b35a1e4f7
Display more LCP information (#4413) 2025-01-24 08:38:57 +01:00
Peter Hedenskog 5b31dec5a5
tune image size (#4411) 2025-01-24 08:19:50 +01:00
Peter Hedenskog 8f8247a01a
Display if gnirehtet is used (#4412) 2025-01-24 08:19:23 +01:00
soulgalore 9bc75c9f8a bumpe 2025-01-23 08:38:42 +01:00
soulgalore 4c71978a56 36.0.3 2025-01-23 08:38:02 +01:00
soulgalore 1923c81bf7 fix release 2025-01-23 08:37:34 +01:00
Peter Hedenskog 05559a1325
Bugfix: Fix how we handle paths when uploading (#4410)
* Bugfix: Fix how we handle paths when uploading

* lint
2025-01-23 08:27:58 +01:00
soulgalore 62c2613679 bump 2025-01-21 16:14:16 +01:00
soulgalore e0048b1603 36.0.2 2025-01-21 16:13:18 +01:00
soulgalore d4dc0f6702 fix 2025-01-21 16:12:55 +01:00
Peter Hedenskog 2a67d952a8
Browsertime 24.0.1 (#4409) 2025-01-21 15:55:01 +01:00
soulgalore 80b53871f1 new bt 2025-01-21 14:45:36 +01:00
soulgalore 3b1a3a33a3 bump 2025-01-21 08:55:54 +01:00
soulgalore 3592f9d2ae 36.0.1 2025-01-21 08:55:09 +01:00
soulgalore caa09616aa new release 2025-01-21 08:54:45 +01:00
Peter Hedenskog cf66d8c2e5
Disable the cpu/enableProfileRun check (#4408) 2025-01-21 08:53:11 +01:00
soulgalore 006d455c11 Bump sitespeed.io version 2025-01-21 07:30:13 +01:00
soulgalore 5a2297833b 36.0.0 2025-01-21 07:29:05 +01:00
soulgalore acd83bd023 new release 2025-01-21 07:27:53 +01:00
soulgalore 0124b44761 docs: bump bt 2025-01-20 21:28:57 +01:00
soulgalore 676fd69a57 Browsertime 24.0.0 2025-01-20 20:02:21 +01:00
soulgalore d06b5b3dd5 Browsertime 24.0.0 2025-01-20 20:01:39 +01:00
soulgalore 2258f0377d Status badges 2025-01-20 07:05:14 +01:00
Peter Hedenskog b974348b24
Update Browsertime to latest alpha release (#4407) 2025-01-20 06:37:02 +01:00
Peter Hedenskog 231e9c6c62
Edge 132 (#4406) 2025-01-20 06:05:26 +01:00
soulgalore ce525fdfe8 Include latest changes 2025-01-17 08:25:30 +01:00
Peter Hedenskog f8a6408b7c
Update Docker container with new setup and Chrome 132 (#4405) 2025-01-16 14:07:34 +01:00
Peter Hedenskog ac29767ad7
Output architecture when running Docker (#4404) 2025-01-16 09:33:31 +01:00
Peter Hedenskog e20fe9ddc1
Fix Wilcoxon NaN values (#4402) 2025-01-16 09:32:34 +01:00
soulgalore 1bbc82e14d 36.0.0-alpha.2 2025-01-13 17:08:16 +01:00
soulgalore dc45535288 new bt 2025-01-13 17:07:14 +01:00
soulgalore 35dcf393c7 revert to old container 2025-01-13 10:56:33 +01:00
Peter Hedenskog 0dcf276506 Browsertime alpha 4 2025-01-12 14:02:26 +01:00
Peter Hedenskog a6a138fb79 changelog: tell us about 36.0.0 2025-01-11 15:16:23 +01:00
Peter Hedenskog befb09e805 bumpo the log 2025-01-10 16:35:24 +01:00
Peter Hedenskog a4a9fda81e 36.0.0-alpha.1 2025-01-10 15:22:27 +01:00
Peter Hedenskog cd3f2f6dca Omit optional installation 2025-01-10 15:12:54 +01:00
Peter Hedenskog 5ff6dc2a98 Update BT 2025-01-10 15:07:43 +01:00
Peter Hedenskog 1d42b05b3f Update BT and log 2025-01-09 13:24:38 +01:00
Peter Hedenskog 6a0889bd26
Replace lodash.reduce (#4398)
* Replace lodash.reduce
2025-01-09 06:19:37 +01:00
Peter Hedenskog c53ad53c30 changelog: include latest changes 2025-01-08 19:45:01 +01:00
Peter Hedenskog 7c769f9ab4
Docker file cleanup (#4397) 2025-01-08 19:23:14 +01:00
Peter Hedenskog fe73cdd913
Firefox 134 (#4395) 2025-01-08 16:31:25 +01:00
Peter Hedenskog 53959acff3
Use Node 22 in the Dockerfile slim (#4396) 2025-01-08 16:14:24 +01:00
Peter Hedenskog 7e7ed8eafb
Replace p-limit (#4394) 2025-01-08 13:56:27 +01:00
Peter Hedenskog 84010f688a
Replace concurrent-queue (#4393) 2025-01-08 07:16:19 +01:00
Peter Hedenskog a17d5707ab
Remove jstransformer-markdown-it (#4392) 2025-01-08 06:48:06 +01:00
Peter Hedenskog 25c5f38f54
Replace lodash.isEmpty (#4391) 2025-01-07 23:24:38 +01:00
Peter Hedenskog f720e6e916 replace log 2025-01-07 23:05:27 +01:00
Peter Hedenskog 5efceffbda more fixed dependencies 2025-01-07 23:02:43 +01:00
Peter Hedenskog 63ca4178af
Remove webdriver manager from Docker (#4390)
* Remove webdriver manager from Docker files
2025-01-07 22:57:52 +01:00
Peter Hedenskog 2db8158f03
Skip installing green2url by default in the Docker container (#4389) 2025-01-07 20:23:55 +01:00
Peter Hedenskog e3a104e3b7
Replace lodash.clonedeep (#4388)
* Replace lodash.clonedeep

* simplify
2025-01-07 20:23:34 +01:00
Peter Hedenskog 8e0e659c3f
Remove unused lodash.pick (#4387) 2025-01-07 19:23:27 +01:00
Peter Hedenskog 95971402ae
Replace lodash.pullAll and lodash.union (#4386) 2025-01-07 18:54:46 +01:00
Peter Hedenskog 25c4aa2995
Replace find-up (#4385) 2025-01-07 17:19:33 +01:00
Peter Hedenskog eb0ba42207 changelog: update release 2025-01-07 16:50:22 +01:00
Peter Hedenskog e26d86d2e8
Override whatwg-url (#4383) 2025-01-07 15:45:51 +01:00
Peter Hedenskog 6fb27b9136
Replace getos and osname (#4384) 2025-01-07 15:45:18 +01:00
Peter Hedenskog 1d44f05e8f
s3: ignore dirs (#4382) 2025-01-07 09:51:41 +01:00
Peter Hedenskog 3456e15959 fix axe 2025-01-07 09:41:35 +01:00
Peter Hedenskog 0c3a9f4904
Use Browsertime 24.0.0-alpha.1 (#4380) 2025-01-07 08:54:45 +01:00
Peter Hedenskog b9456eef6e
Replace intel with sitespeed.io/log (#4381)
* Replace intel with sitespeed.io/log
2025-01-07 08:53:48 +01:00
soulgalore 6b7aecc401 happy new year 2025-01-01 01:10:50 +01:00
soulgalore fb5a74f133 skip logging files/dir 2024-12-30 06:20:09 +01:00
soulgalore 6674af2c02 changelog: more fixes 2024-12-30 06:06:51 +01:00
soulgalore 7d46f5d9e5 Include latest changes 2024-12-30 06:04:18 +01:00
soulgalore 6ad8dcbac2 docs: start adding changes 2024-12-30 05:49:29 +01:00
soulgalore 553d6b9a35 fix: follow same structure as before 2024-12-30 05:49:29 +01:00
Peter Hedenskog 3662ef14ea
Add safe checks (#4379) 2024-12-30 05:41:28 +01:00
soulgalore d4550ae561 Better logging for scp 2024-12-30 05:39:44 +01:00
soulgalore efbae59763 docs: update changelog 2024-12-30 00:26:52 +01:00
Peter Hedenskog bfc32160a1
Replace lodash.forEach (#4378) 2024-12-29 23:40:49 +01:00
Peter Hedenskog 398f14d921
Replace recursive readdir (#4377)
* Replace recursive readdir

* lint
2024-12-29 22:35:46 +01:00
Peter Hedenskog 09a3835195
Remove connectivity output from text since it was broken (#4375) 2024-12-29 17:08:23 +01:00
Peter Hedenskog 4edbbdc06b
Fix correct summaryDetail (not summary-detail) (#4376) 2024-12-29 16:34:13 +01:00
Peter Hedenskog 19c9760038
Replace cli-color (#4374) 2024-12-29 16:16:09 +01:00
Peter Hedenskog c2f44d23b9
Replace text table (#4373) 2024-12-29 15:50:19 +01:00
Peter Hedenskog ebae0bfa99
Replace lodash.chunk (#4372) 2024-12-29 15:04:51 +01:00
Peter Hedenskog 015e58a001
Replace flatten (#4371) 2024-12-29 13:46:17 +01:00
Peter Hedenskog e027097429
remove the use of fs-extra (#4370) 2024-12-28 22:48:05 +01:00
Peter Hedenskog 9a4ec79b8c
replace uuid with node:crypto (#4369) 2024-12-28 22:13:04 +01:00
Peter Hedenskog af99bda161
Aws client 3.717.0 (#4368) 2024-12-28 20:46:01 +01:00
Peter Hedenskog f766094d2a
Add GitHub Action test for S3 upload (#4367) 2024-12-28 18:24:52 +01:00
Peter Hedenskog 2b3fff4962
Add action to test upload functionality (#4366) 2024-12-28 16:01:00 +01:00
soulgalore fe69cb1f97 action: continue on error 2024-12-28 12:46:24 +01:00
soulgalore 3dea2a1acc docs: bump browsertime version 2024-12-28 12:38:08 +01:00
soulgalore 2775abdb9d docs: all macs m 2024-12-28 11:12:21 +01:00
soulgalore 2f53ee97c6 fix 2024-12-28 11:07:34 +01:00
soulgalore cb62353480 docs: docker versions 2024-12-28 11:03:38 +01:00
soulgalore a7fa1e2f99 moar 2024-12-28 10:58:11 +01:00
soulgalore de400a2566 new try 2024-12-28 10:38:29 +01:00
soulgalore b8b494c388 fetch last 2 2024-12-28 10:20:47 +01:00
Peter Hedenskog dd4cd7ca5b
Try to only trigger build on documentation changes (#4365)
* Try to only trigger build on documentation changes
2024-12-28 10:17:59 +01:00
Peter Hedenskog e006db411f
Coach core 8.1.1 (#4363) 2024-12-28 08:45:00 +01:00
soulgalore 8da0a74edd bump 2024-12-28 08:21:41 +01:00
Peter Hedenskog 30b2695aaa
Add tests for NodeJS 22 (#4364) 2024-12-28 07:49:36 +01:00
soulgalore f0f8f9e32a new coach 2024-12-28 07:33:21 +01:00
Peter Hedenskog adf37d315d
Upgrade to google-cloud/storage-7.14.0 (#4361) 2024-12-27 18:43:36 +01:00
Peter Hedenskog 8c3730f27f
gcs: run github action test against GCS (#4362) 2024-12-27 18:21:11 +01:00
Peter Hedenskog c15ace1be5
Add support for setting gcp endpoint for easier testing (#3785)
* Add support for setting gcp endpoint for easier testing
2024-12-27 09:32:01 +01:00
Peter Hedenskog cd5503d811
Use official Slack plugin (#4360)
* Use official Slack plugin
2024-12-27 08:23:03 +01:00
Peter Hedenskog b85507fa47
Set docker env following the standard (#4359) 2024-12-27 08:09:13 +01:00
Peter Hedenskog a6c74f70a8
Update .npmignore 2024-12-27 07:33:27 +01:00
Peter Hedenskog 1da2af5f19
Make sure you can't run with both --cpu and --collectProfileRun (#4298) 2024-12-27 07:06:44 +01:00
Peter Hedenskog bbcb541ae4
Use correct name in Browsertime: userTimingAllowList instead of whitelist (#4346) 2024-12-27 07:06:23 +01:00
Peter Hedenskog a5129560bd
Install URL2green automatically in the Docker container (#4356) 2024-12-27 07:06:00 +01:00
Peter Hedenskog 3c9ecceb2d
cleanup part 1 (#4355) 2024-12-27 06:53:30 +01:00
Peter Hedenskog d8a04c2e22
Only download url2green when asked for. (#4354)
* Only download url2green when asked for.

The URL2green file is becoming larger and larger. Skip downloading
it if you don't specifically ask for it.
2024-12-27 06:41:57 +01:00
Peter Hedenskog da64199cfd
Upgrade co2 to 0.16.4 (#4353) 2024-12-26 07:49:53 +01:00
Peter Hedenskog 3c0828b73d
Read co2 information once at startup (#4352)
* read at startup

* better logs
2024-12-26 07:27:08 +01:00
soulgalore 1b009d2f69 docs: use stable versions 2024-12-25 16:10:41 +01:00
soulgalore 4abdde0efb bump 2024-12-23 22:32:43 +01:00
soulgalore b0eb956c96 35.7.5 2024-12-23 22:31:38 +01:00
soulgalore 44bc4349ac new release 2024-12-23 22:30:58 +01:00
Peter Hedenskog f28c98576a
Browsertime 23.5.0 (#4351) 2024-12-23 22:30:07 +01:00
soulgalore 87cc06e703 new bt 2024-12-23 22:17:07 +01:00
Peter Hedenskog c9926073ad
Pass on webpagereplay flag to browsertime (#4350) 2024-12-23 08:06:37 +01:00
Peter Hedenskog 2c155898ac
Let analysisstorer know about webpagereplay (#4349) 2024-12-23 08:06:12 +01:00
soulgalore 1710a3c713 docs: screenshots 2024-12-23 06:45:54 +01:00
Peter Hedenskog dba98aaeb2
Update to faststat 0.0.7 (#4347) 2024-12-22 16:42:36 +01:00
Peter Hedenskog 8890a9b256
Update latest eslint and dependencies (#4345) 2024-12-22 15:20:16 +01:00
soulgalore 76dc1aa30a version bump 2024-12-20 13:41:58 +01:00
soulgalore 4a70a1de18 35.7.4 2024-12-20 13:40:53 +01:00
soulgalore 4f689ac201 new release 2024-12-20 13:40:32 +01:00
Peter Hedenskog 4731e2ad32
Browsertime 23.4.5 (#4343) 2024-12-20 09:30:39 +01:00
soulgalore 0619c76f02 bump 2024-12-20 09:09:59 +01:00
soulgalore 34d1351722 bump 2024-12-18 13:48:24 +01:00
soulgalore 44ff00c341 35.7.3 2024-12-18 13:46:43 +01:00
soulgalore 72f8f5bd5c new release 2024-12-18 13:46:12 +01:00
Peter Hedenskog 082c5296df
Browsertime 23.4.4 (#4342) 2024-12-18 13:45:44 +01:00
soulgalore 6638d60fbe new bt 2024-12-18 12:53:05 +01:00
Pavel Bairov 4f88cf9265
[Compare] Add validation for dataset lengths for the Wilcoxon test. (#4341) 2024-12-18 11:31:35 +01:00
soulgalore 21955e9065 New version 2024-12-18 10:32:30 +01:00
soulgalore a96be203d7 new version 2024-12-18 09:15:53 +01:00
Peter Hedenskog 70a0c5c4ff
Make it easier to see which test type that is used (#4339) 2024-12-17 05:55:38 +01:00
soulgalore 48f3381620 new version 2024-12-14 14:55:56 +01:00
soulgalore 5475ca07cd 35.7.2 2024-12-14 14:55:01 +01:00
soulgalore 8ca4913b98 new release 2024-12-14 14:54:23 +01:00
soulgalore 4780bd9ca8 Log input data on error 2024-12-14 14:52:48 +01:00
Peter Hedenskog 74b9fd7de8
compare: verbose log the actual input data (#4337) 2024-12-13 19:33:35 +01:00
Peter Hedenskog 8e1bf382a6 bump 2024-12-11 17:34:36 +01:00
Peter Hedenskog 214fc82310 35.7.1 2024-12-11 17:22:23 +01:00
Peter Hedenskog 3878b5a1d9 new release 2024-12-11 17:20:26 +01:00
Peter Hedenskog 662dfff8ef
Browsertime 23.4.3 (#4336) 2024-12-11 17:16:42 +01:00
Peter Hedenskog 7b475c81aa new version 2024-12-11 17:02:33 +01:00
Peter Hedenskog 5338c8d2c7 docs: update how to start the Docker containers 2024-12-10 19:20:35 +01:00
Peter Hedenskog f74380ce4a
Browsertime 23.4.2 (#4335) 2024-12-10 13:06:25 +01:00
Peter Hedenskog 6bfd446650
Display FF power consumption in mWH https://github.com/sitespeedio/sitespeed.io/issues/4333 (#4334) 2024-12-10 11:28:18 +01:00
Peter Hedenskog e8e1c5b01b new bt 2024-12-10 10:34:35 +01:00
Peter Hedenskog 3e4bca8a95
fixes (#4332) 2024-12-08 15:14:46 +01:00
Peter Hedenskog d779c53227
docs: update online test documentation (#4331)
* more docs

* hepp

* hepp
2024-12-08 09:47:39 +01:00
soulgalore a35b849206 bump 2024-12-08 09:46:36 +01:00
soulgalore 0e27867656 bump version 2024-12-06 15:44:42 +01:00
soulgalore 975c8a1b98 docs: add info how to use unreachable 2024-12-05 22:28:43 +01:00
soulgalore 68adfb8a24 bump version 2024-11-30 06:46:52 +01:00
soulgalore e2c2dae973 35.7.0 2024-11-30 06:45:56 +01:00
soulgalore c370dcb827 new release 2024-11-30 06:44:06 +01:00
Peter Hedenskog fb827c39ce docs: link to Bluesky 2024-11-29 07:18:34 +01:00
Peter Hedenskog 2918a18929
Updated to axe core 4.10.2 (#4328) 2024-11-29 05:37:23 +01:00
Peter Hedenskog 9a9be64964
Fix dependencies dependencies to to pass security audit. (#4305)
* fix

* minimist minimum version
2024-11-27 08:31:42 +01:00
soulgalore 088bef00bd changelog: firefox 133 2024-11-27 07:41:32 +01:00
Peter Hedenskog 16c9c72f66
Firefox 133 (#4327) 2024-11-26 20:41:29 +01:00
soulgalore a96fc613cc new version 2024-11-23 19:55:15 +01:00
soulgalore 764fa171e8 35.6.1 2024-11-23 19:54:19 +01:00
soulgalore 015a86fdb1 new release 2024-11-23 19:53:09 +01:00
Peter Hedenskog 957fe5220b
fix: use compare with --cpu for Firefox failed. (#4324)
This catches if we got no longtask information.
2024-11-23 19:51:26 +01:00
soulgalore d3a27f42e5 new release 2024-11-23 07:31:00 +01:00
186 changed files with 16095 additions and 13790 deletions

View File

@ -4,4 +4,7 @@
!package.json
!LICENSE
!npm-shrinkwrap.json
!docker
!docker/adb
!docker/scripts
!tools/postinstall.js
!docker/webpagereplay/

View File

@ -4,6 +4,34 @@ Sitespeed.io continues to evolve thanks to people who contributes, so please ple
## Making changes
If you want help out, that's great! Before taking the time to code something big, feel free to open an issue first proposing your idea to other contributors, that way you can get feedback on the idea before taking time to write precious code.
### AI-Assisted Contributions
When using AI tools like ChatGPT to assist with development, please a) disclose it in your commits and pull requests.
#### Commits
When writing a commit message for a change that was assisted by an AI, please add the `AI-assisted-by:` trailer to the commit message body.
**Example:**
```
Add Cumulative Layout Shift metric to the summary page
Add the Cumulative Layout Shift (CLS) introduced by Google on
the summary page. Show both median and p75.
AI-assisted-by: ChatGPT
```
#### Pull Requests
When creating a pull request that includes AI-assisted work, please mention it in the pull request description.
**Example:**
> This pull request implements Cumulative Layout Shift with assistance from ChatGPT.
## Add a defect
Please make sure you run the [latest version](https://www.npmjs.com/package/sitespeed.io) of sitespeed.io. Then check the [defect/bug list](https://github.com/sitespeedio/sitespeed.io/issues?labels=bug&page=1&state=open) to make sure that it hasn't been filed yet.

View File

@ -5,7 +5,7 @@ on:
- main
jobs:
docker:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
steps:
-

View File

@ -5,7 +5,7 @@ on:
- 'v*.*.*'
jobs:
docker:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
-
name: Checkout
@ -13,6 +13,8 @@ jobs:
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
image: tonistiigi/binfmt:qemu-v7.0.0-28
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

View File

@ -15,7 +15,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
node-version: '22.x'
- name: Install sitespeed.io
run: npm ci
- name: Run tests with CruX

View File

@ -7,7 +7,7 @@ on:
jobs:
build:
name: Build
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
steps:
- name: Checkout code

View File

@ -15,7 +15,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
node-version: '22.x'
- name: Install sitespeed.io
run: npm ci
- name: Install Chrome
@ -35,7 +35,7 @@ jobs:
#with:
# firefox-version: '94.0'
- name: Setup environment
run: docker compose -f test/docker-compose.yml up -d
run: docker compose -f test/docker/docker-compose.yml up -d
- name: Browser versions
run: |
google-chrome --version
@ -70,10 +70,6 @@ jobs:
run: bin/sitespeed.js http://127.0.0.1:3001/simple/ -n 1 --graphite.host 127.0.0.1 --xvfb
- name: Run test without a CLI
run: xvfb-run node test/runWithoutCli.js
- name: Run test with Influx 1.8
run: bin/sitespeed.js http://127.0.0.1:3001/simple/ -n 1 --influxdb.host 127.0.0.1 --xvfb --logToFile --resultBaseUrl https://result.sitespeed.io --influxdb.annotationScreenshot=true
- name: Run test with Influx 2.6.1
run: bin/sitespeed.js http://127.0.0.1:3001/simple/ -n 1 --influxdb.host 127.0.0.1 --influxdb.port 8087 --influxdb.version 2 --influxdb.organisation sitespeed --influxdb.token sitespeed --xvfb --resultBaseUrl https://result.sitespeed.io --influxdb.annotationScreenshot=true
- name: Run Chrome test with config
run: node bin/sitespeed.js --config test/exampleConfig.json http://127.0.0.1:3001/simple/ --xvfb
- name: Run Chrome test using compare plugin

36
.github/workflows/netlify.yml vendored Normal file
View File

@ -0,0 +1,36 @@
name: Deploy documentation to Netlify
on:
push:
branches:
- main
jobs:
check-docs-changes:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Check if /docs/ has changes
id: check_docs
run: |
changes=$(git diff --name-only HEAD~1 HEAD | grep '^docs/' || true)
if [ -z "$changes" ]; then
echo "No changes in /docs/. Skipping deployment."
echo "deploy=false" >> $GITHUB_OUTPUT
else
echo "Changes detected in /docs/. Proceeding with deployment."
echo "deploy=true" >> $GITHUB_OUTPUT
fi
- name: Deploy to Netlify
if: steps.check_docs.outputs.deploy == 'true'
env:
NETLIFY_BUILD_HOOK_URL: ${{ secrets.NETLIFY_BUILD_HOOK_URL }}
run: |
curl -X POST -d {} -H "Content-Type: application/json" $NETLIFY_BUILD_HOOK_URL
continue-on-error: true

View File

@ -8,14 +8,14 @@ on:
- main
jobs:
build:
runs-on: macos-latest
runs-on: macos-15
if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
node-version: '22.x'
- name: Install dependencies
run: |
sudo safaridriver --enable

View File

@ -12,7 +12,7 @@ jobs:
if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
strategy:
matrix:
node-version: [18.x, 20.x]
node-version: [20.x, 22.x, 24.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}

50
.github/workflows/upload.yml vendored Normal file
View File

@ -0,0 +1,50 @@
name: Test upload functionality
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '22.x'
- name: Install sitespeed.io
run: npm ci
- name: Install Chrome
run: |
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get --only-upgrade install google-chrome-stable
google-chrome --version
- name: Setup SSH/SCP container
run: |
docker build --load -t ssh-server-password --file test/docker/Dockerfile.scp .
docker run -d -p 2222:22 ssh-server-password
- name: Setup GCS container
run: |
docker run -d -p 8081:8081 fsouza/fake-gcs-server:1.50 -scheme http -port 8081 -external-url http://localhost:8081 -backend memory
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "sitespeed"}' \
http://127.0.0.1:8081/storage/v1/b?project=sitespeed
- name: Setup minio/S3 container
run: |
docker compose -f test/docker/docker-compose.minio.yml up -d
- name: Install local HTTP server
run: npm install serve -g
- name: Start local HTTP server
run: (serve test/data/html/ -l 3001&)
- name: Run Chrome test sending data using scp
run: bin/sitespeed.js http://127.0.0.1:3001/simple/ --xvfb -n 1 --scp.host localhost --scp.port 2222 --scp.username scpuser --scp.password password --scp.destinationPath /home/scpuser/
- name: Run Chrome test sending data to GCS
run: STORAGE_EMULATOR_HOST="http://localhost:8081" node bin/sitespeed.js http://127.0.0.1:3001/simple/ --xvfb -n 1 --gcs.bucketname sitespeed --gcs.projectId sitespeed
- name: Run Chrome test sending data to S3
run: node bin/sitespeed.js http://127.0.0.1:3001/simple/ --xvfb -n 1 --s3.endpoint http://127.0.0.1:9000 --s3.bucketname sitespeedio --s3.key user --s3.secret password --s3.region motown

View File

@ -8,7 +8,7 @@ on:
- main
jobs:
build:
runs-on: windows-latest
runs-on: windows-2025
if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
steps:
- uses: actions/checkout@v4

View File

@ -8,13 +8,13 @@ on:
- main
jobs:
build:
runs-on: windows-latest
runs-on: windows-2025
if: ${{ !contains(github.event.head_commit.message, 'docs:') }}
steps:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
node-version: '22.x'
- name: Install sitespeed.io
run: npm install sitespeed.io -g
shell: bash

View File

@ -1,4 +1,12 @@
docker/*
docs/*
test/*
sitespeed-result/*
sitespeed-result/*
release/*
.netlify
.spelling
.github
Gemfile
Gemfile.lock
wpr-record.log
wpr-replay.log

View File

@ -1,5 +1,376 @@
# CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org))
## 39.3.1 - 2026-01-11
### Fixed
* There where something broken in Browsertime 26.3.0 together with the new bidi-har 0.0.20 for Firefox so I reverted to 0.0.18 until its been fixed with Browsertime/bidi-har [#4579](https://github.com/sitespeedio/sitespeed.io/pull/4579).
## 39.3.0 - 2026-01-10
### Added
* Updated to Browsertime 26.3 with and updated version of bidi-har that makes it possible to get response bodies in the HAR file for Firefox [#4578](https://github.com/sitespeedio/sitespeed.io/pull/4578).
### Fixed
* Fixed typo in iteration detail page for the cpuConsumption metric, thank you [Michael Walter](https://github.com/byte55) for PR [#4577](https://github.com/sitespeedio/sitespeed.io/pull/4577).
## 39.2.0 - 2025-12-18
### Added
* Updated to Browsertime 26.2 with latest Chromedriver and Edgedriver and a small XVFB fix [#4575](https://github.com/sitespeedio/sitespeed.io/pull/4575).
## 39.1.2 - 2025-12-17
### Fixed
* Fix a bug introduced in 39.0.0 where alias was missing when creating some file structure [#4574](https://github.com/sitespeedio/sitespeed.io/pull/4574).
## 39.1.1 - 2025-12-16
### Fixed
* Safer handling for broken URLs. This logs the actual root cause [#4573](https://github.com/sitespeedio/sitespeed.io/pull/4573).
## 39.1.0 - 2025-12-15
### Added
* Upgrade the Docker container: Chrome and Edge 143, Firefox 146 [#4572](https://github.com/sitespeedio/sitespeed.io/pull/4572).
## 39.0.0 - 2025-12-15
### Breaking
* We removed support for setting the compression level for png screenshots, see the added section why.
### Added
* Upgrade to support NodeJS 24 without warnings, include NodeJS 24 in the Docker container, and base the Docker container on Ubuntu 24.04. To make this work I needed to upgrade the Jimp library and then we lost the settings for png screenshots `--browsertime.screenshotParams.png.compressionLevel` [#4570](https://github.com/sitespeedio/sitespeed.io/pull/4570).
## 38.6.0 - 2025-11-02
### Added
* Browsertime 25.4.0 [#4566](https://github.com/sitespeedio/sitespeed.io/pull/4566).
* Chrome 142 [#4565](https://github.com/sitespeedio/sitespeed.io/pull/4565).
## 38.5.2 - 2025-10-24
### Fixed
* Upgrade to [Browsetime 25.3.1](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2531---2025-10-24) [#4562](https://github.com/sitespeedio/sitespeed.io/pull/4562).
## 38.5.1 - 2025-10-21
### Fixed
* The +1 container has a updated configuration for the GPSI plugin to remove the PWA category. Thank you [ThimoCode](https://github.com/ThimoCode) for PR [#58](https://github.com/sitespeedio/plugin-gpsi/pull/58).
## 38.5.0 - 2025-10-18
### Added
* Updated the Docker container to use Firefox 144 [#4554](https://github.com/sitespeedio/sitespeed.io/pull/4554).
* Added Browsertime 25.3 [#4559](https://github.com/sitespeedio/sitespeed.io/pull/4559) with support for removing some headers in the HAR file (more info about that soon).
### Fixed
* Updated dev dependencies [#4556](https://github.com/sitespeedio/sitespeed.io/pull/4556).
* Updated to Axe-core 4.11.0 [#4555)](https://github.com/sitespeedio/sitespeed.io/pull/4555).
* Updated Ora dependency [#4557](https://github.com/sitespeedio/sitespeed.io/pull/4557).
* Updated the log dependency [#4558](https://github.com/sitespeedio/sitespeed.io/pull/4558). The new version remove the color for error logs.
## 38.4.1 - 2025-10-14
### Fixed
* Set max width 400 pixel of the screenshot showing in the Grafana annotation (Grafana changed how they render the annotation long time ago) [#4553](https://github.com/sitespeedio/sitespeed.io/pull/4553) and [the fix](https://github.com/sitespeedio/sitespeed.io/commit/dbcdc72bedd0a2be5c9031675783fe3f3b73f288).
## 38.4.0 - 2025-10-12
### Added
* Upgraded to Chrome/Edge 141 [#4551](https://github.com/sitespeedio/sitespeed.io/pull/4551).
* +1 container users will get Lighthouse 13.
* Browsertime 25.2 with latest Chrome/Edgedrivers [#4552](https://github.com/sitespeedio/sitespeed.io/pull/4552).
## 38.3.0 - 2025-09-07
### Added
* Upgraded to Chrome/Chromedriver 140 [#4549](https://github.com/sitespeedio/sitespeed.io/pull/4549) and [#4548](https://github.com/sitespeedio/sitespeed.io/pull/4548).
## 38.2.0 - 2025-08-31
### Added
* Upgraded to Firefox 142 [#4545](https://github.com/sitespeedio/sitespeed.io/pull/4545) and Chrome/Edge 139 in the Docker container [#4552](https://github.com/sitespeedio/sitespeed.io/pull/4542).
## 38.1.2 - 2025-08-04
### Fixed
* Upgraded to coach core 8.1.3 [#4551](https://github.com/sitespeedio/sitespeed.io/pull/4541) (there was a bug introduced in 8.1.2).
## 38.1.1 - 2025-08-01
### Fixed
* Upgraded to coach core 8.1.2 [#4540](https://github.com/sitespeedio/sitespeed.io/pull/4540).
## 38.1.0 - 2025-07-28
### Added
* Firefox 141 in the Docker container [#4538](https://github.com/sitespeedio/sitespeed.io/pull/4538).
### Fixed
* Bumped form-data dependency for security warnings [#4539](https://github.com/sitespeedio/sitespeed.io/pull/4539).
## 38.0.0 - 2025-06-30
### Breaking
* Support only NodeJS 20 or later for sitespeed.io [#4532](https://github.com/sitespeedio/sitespeed.io/pull/4532).
### Added
* Upgrade to Yargs 18 [#4531](https://github.com/sitespeedio/sitespeed.io/pull/4531).
### Fixed
* Update S3 client [#4533](https://github.com/sitespeedio/sitespeed.io/pull/4533).
* Update developer dependencies [#4534](https://github.com/sitespeedio/sitespeed.io/pull/4534).
* Updated to [Browsertime 25](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2500---2025-07-16) [#4536](https://github.com/sitespeedio/sitespeed.io/pull/4536) with NodeJS to 20 and a fix for Edgedriver download.
## 37.9.0 - 2025-06-30
### Added
* Updated Docker containers to include Chrome/Edge 138, Firefox 140. Edgedriver and Chromedriver 138. Browsertime 24.9.0. [#452](https://github.com/sitespeedio/sitespeed.io/pull/4528) and [#4530](https://github.com/sitespeedio/sitespeed.io/pull/4530).
## 37.8.0 - 2025-06-01
### Added
* Updated to Browsertime 24.8.0 and then 24.8.1 with Chromedriver 137, Edgedriver 137 and [a couple of fixes and new commands](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2480---2025-05-30) in [4524](https://github.com/sitespeedio/sitespeed.io/pull/4524) and [#4525](https://github.com/sitespeedio/sitespeed.io/pull/4525).
* Updated to Edge 137 in the Docker container [#4522](https://github.com/sitespeedio/sitespeed.io/pull/4522).
### Fixed
* Updated dependencies: node-scp, ora, dayjs, axe-core, @slack/webhook, @google-cloud/storage, @aws-sdk/client-s3 [#4523](https://github.com/sitespeedio/sitespeed.io/pull/4523).
## 37.7.0 - 2025-05-28
### Added
* Added Chrome 137 and Firefox 139 in the Docker container [#4520](https://github.com/sitespeedio/sitespeed.io/pull/4520).
## 37.6.0 - 2025-05-13
### Added
* Added Edge 136, Edgedriver and Chromedriver 136 by updating to [Browsertime 24.7.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#browsertime-changelog-we-do-semantic-versioning) in [#4514](https://github.com/sitespeedio/sitespeed.io/pull/4514).
## 37.5.1 - 2025-05-05
### Fixed
* Updated to [Browsertime 24.6.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2460---2025-05-05) that fixes a problem using --preURL and --pageCompleteCheckNetworkIdle.
## 37.5.0 - 2025-04-30
### Added
* Upgraded to Firefox 138 and Chrome 136 in the Docker container [#4507](https://github.com/sitespeedio/sitespeed.io/pull/4507).
### Fixed
* Updated to latest Browsertime with a fix for Firefox 138 [#4506](https://github.com/sitespeedio/sitespeed.io/pull/4506).
## 37.4.2 - 2025-04-19
### Fixed
* s3: If you add Expires to your object using the API, it was broken since the upgrade to v3. This fix change so we allways use a Date when setting Expires [#4503](https://github.com/sitespeedio/sitespeed.io/pull/4503).
* Make sure that HAR files included in the HTML excludes closing script tags in the body of an response [#4500](https://github.com/sitespeedio/sitespeed.io/pull/4500).
## 37.4.1 - 2025-04-10
### Fixed
* If testing one page fails, make sure that we still can genereate the HTML [#4495](https://github.com/sitespeedio/sitespeed.io/pull/4495).
## 37.4.0 - 2025-04-09
### Added
* Updated Docker container with Firefox 137, Chrome 135 and Edge 135 [#4494](https://github.com/sitespeedio/sitespeed.io/pull/4494).
## 37.3.2 - 2025-03-21
### Fixed
* Updated to Browsertime 24.5.2 with a fix for getting delta FCP (FCP-TTFB).
## 37.3.1 - 2025-03-20
### Fixed
* Updated to [Browsertime 24.5.1](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2451---2025-03-18) with a fix for using `--browsertime.userTimingBlockList`.
* Safer check for InfluxDB [#4487](https://github.com/sitespeedio/sitespeed.io/pull/4487) that fixes [#4485](https://github.com/sitespeedio/sitespeed.io/issues/4485).
## 37.3.0 - 2025-03-13
### Added
* Updated to [Browsertime 24.5.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2450---2025-03-13) that updates to Geckodriver 0.36.0 (for Firefox) and fixes a bug for running test on Safari on iOS (reported in [#4479](https://github.com/sitespeedio/sitespeed.io/issues/4479)) fixed in [#4480](https://github.com/sitespeedio/sitespeed.io/pull/4480).
## 37.2.0 - 2025-03-12
### Added
* Updated to [Browsertime 24.4.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2440---2025-03-11) [#4478](https://github.com/sitespeedio/sitespeed.io/pull/4478).
## 37.1.2 - 2025-03-11
### Fixed
* Show just the filename instead of the full path to the file in the HTML [#4477](https://github.com/sitespeedio/sitespeed.io/pull/4477).
## 37.1.1 - 2025-03-10
### Fixed
* Multiple fixes to better handle if a user journey scripting fails [#4474](https://github.com/sitespeedio/sitespeed.io/pull/4474) and [#4475](https://github.com/sitespeedio/sitespeed.io/pull/4475).
## 37.1.0 - 2025-03-08
### Fixed
* Simplified logic for uploading files to S3 since we have reports that it do not work 100% [#4472](https://github.com/sitespeedio/sitespeed.io/pull/4472).
### Added
* The Docker container now contains Chrome 134.0, Firefox 136 and Edge 134.0.
## 37.0.4 - 2025-03-07
### Fixed
* Sending annotations to Graphite failed because of InfluxDB check [#4469](https://github.com/sitespeedio/sitespeed.io/pull/4469).
## 37.0.3 - 2025-03-06
### Fixed
* Hopefully the last fix for getting --help to work with global plugins [#4466](https://github.com/sitespeedio/sitespeed.io/pull/4466).
## 37.0.2 - 2025-03-05
### Fixed
* Another fix for using --help and load plugins correctly [#4465](https://github.com/sitespeedio/sitespeed.io/pull/4465).
## 37.0.1 - 2025-03-05
### Fixed
* There was a bug in the InfluxDB plugin and loading the cli parameters failed [#4463](https://github.com/sitespeedio/sitespeed.io/pull/4463).
## 37.0.0 - 2025-03-05
### Breaking change
* If you are a InfluxDB user the InfluxDB functionality been moved to a standalone plugin [plugin-influxdb](https://github.com/sitespeedio/plugin-influxdb). This means if that sitespeed.io using NodeJS and the default Docker container will not include the InfluxDB plugin. The +1 container will still include the plugin but you need to add it with `--plugins.add @sitespeed.io/plugin-influxdb` for it to be able to run.
The InfluxDB plugin has never gotten the love it deserves, moving it out, it means that you easier can do your own modification and get the data the way that you need.
### Added
* Support for getting CLI options from plugins as long as you use `--help --plugins.add`. This is start to separate CLI options from the monsterous CLI file and instead have them in each plugin [#4450](https://github.com/sitespeedio/sitespeed.io/pull/4450), [#4452](https://github.com/sitespeedio/sitespeed.io/pull/4452) [#4455](https://github.com/sitespeedio/sitespeed.io/pull/4455).
* You can now set the exact minimum log level using `--logLevel`[#4459](https://github.com/sitespeedio/sitespeed.io/pull/4459).
### Fixed
* Replace the junit-report-builder package [#4448](https://github.com/sitespeedio/sitespeed.io/pull/4448).
* Remove Tape dependencies [#4447](https://github.com/sitespeedio/sitespeed.io/pull/4447).
* Catch if the browser fails to open a broken page [#4457](https://github.com/sitespeedio/sitespeed.io/pull/4457).
## 36.4.1 - 2025-02-17
### Fixed
* The Docker container for last release was never push. The reason is that our GitHub action that do the release automatically was upgraded to Ubuntu 24 and there its a problem building containers for ARM. With this release we use Ubuntu 22 instead.
## 36.4.0 - 2025-02-14
### Added
* Crux update: Get fractions for RTT [#4436](https://github.com/sitespeedio/sitespeed.io/pull/4436), that extra LCP information [#4437](https://github.com/sitespeedio/sitespeed.io/pull/4437) and make sure LCP resource type fraction is sent to TSDB [#4438](https://github.com/sitespeedio/sitespeed.io/pull/4438).
## 36.3.0 - 2025-02-08
### Added
* Chrome 133 and Firefox 135 in the Docker container [#4431](https://github.com/sitespeedio/sitespeed.io/pull/4431).
* Browsertime 24.2.0 with Chromedriver 133 [#4432](https://github.com/sitespeedio/sitespeed.io/pull/4432).
### Fixed
* Extra guard against missing HARs [#4430](https://github.com/sitespeedio/sitespeed.io/pull/4430).
* Log missing green domain info as info instead of error [#4433](https://github.com/sitespeedio/sitespeed.io/pull/4433).
## 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 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.
* 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).
## 36.2.2 - 2025-01-29
### Fixed
* Updated Browsertime and sitespeedio/log to 0.2.6 that adds the old log.warn [#4419](https://github.com/sitespeedio/sitespeed.io/pull/4419) and [#4418](https://github.com/sitespeedio/sitespeed.io/pull/4418).
* More fixes for the runtime settings [#4417](https://github.com/sitespeedio/sitespeed.io/pull/4417).
## 36.2.1 - 2025-01-28
### Fixed
* Fixed broken checks on runtime settings [#4416](https://github.com/sitespeedio/sitespeed.io/pull/4416).
## 36.2.0 - 2025-01-27
### Added
* New Browsertime that expose configurations for the runtime settings page [#4414](https://github.com/sitespeedio/sitespeed.io/pull/4414).
* Show android rooted and gnirehtet in runtime settings [#4415](https://github.com/sitespeedio/sitespeed.io/pull/4415).
## 36.1.0 - 2025-01-25
### Added
* Display more LCP information: elementRenderDelay, ttfb, resourceLoadDelay, resourceLoadDuration [#4413](https://github.com/sitespeedio/sitespeed.io/pull/4413).
* In runtime settings: Show if gnirehtet is used [#4412](https://github.com/sitespeedio/sitespeed.io/pull/4412).
### Fixed
* Tune image size for result images [#4411](https://github.com/sitespeedio/sitespeed.io/pull/4411).
## 36.0.3 - 2025-01-23
### Fixed
* Fix for uploading files to GCS/S3 that was partly broken in 36.0.0 [#4410](https://github.com/sitespeedio/sitespeed.io/pull/4410).
## 36.0.2 - 2025-01-21
### Fixed
* Updated Browsertime with a fix if the Jimp dependency is missing.
## 36.0.1 - 2025-01-21
### Fixed
* Disable the CPU/enableProfileRun check introduced in 36.0.0, that affected too many users [#4408](https://github.com/sitespeedio/sitespeed.io/pull/4408).
## 36.0.0 - 2025-01-21
The 36.0.0 release remove a lot of dependencies. Since we implemented sitespeed.io the first time, there are many things that are easy to do in modern NodeJS. Those things have now been implemented directly in sitespeed.io.
This release contains a couple of breaking changes. Please read the breaking section before you upgrade!
### Breaking
* **Sustainability plugin**: Before when you installed sitespeed.io we automatically installed the green2URL data (mapping servername to green data). With this change you inly download green2url data when you specifically ask for it [#4354](https://github.com/sitespeedio/sitespeed.io/pull/4354). To install you need to run `DOWNLOAD_URL2GREEN=true npm install sitespeed.io`. The green2url is also updated to use the latest availible data by late 2024. This saves 80 mb in default downloading. You can also get the data directly from the green hosting API using `--sustainable.useGreenWebHostingAPI true`, that's the easiest way to make sure you use the current availble data.
* **Block User Timings**: Use correct name in Browsertime: `userTimingAllowList` instead of whitelist [#4346](https://github.com/sitespeedio/sitespeed.io/pull/4346). There was a missmtach bug on how to disable UserTimings, please make sure you use `userTimingAllowList`.
* **Plugins**: If you created your own plugin for sitespeed.io you need to update the plugin dependency to @sitespeed.io/plugin 1.0.0 or higher.
* **Log to file**: Replace intel (log) with sitespeed.io/log [#4381](https://github.com/sitespeedio/sitespeed.io/pull/4381). This remove the logToFile option in the cli. Instead of use that option, pipe the output to the file you want.
### Added
* Update to Coach-core 8.1.1 [#4363](https://github.com/sitespeedio/sitespeed.io/pull/4363)
* Use the offical Slack plugin instead of node-slack [#4360](https://github.com/sitespeedio/sitespeed.io/pull/4360).
* Firefox 134, Chrome 132 and NodeJS 22 in the Docker container [#4395](https://github.com/sitespeedio/sitespeed.io/pull/4395), [#4396](https://github.com/sitespeedio/sitespeed.io/pull/4396) and [#4405](https://github.com/sitespeedio/sitespeed.io/pull/4405)
* Let the Docker container output the CPU architecture for easier error reporting [#4404](https://github.com/sitespeedio/sitespeed.io/pull/4404).
### Fixed
* Replace dependencies with local code:
* Replace lodash.forEach [#4378](https://github.com/sitespeedio/sitespeed.io/pull/4378).
* Replace recursive-readdir [#4377](https://github.com/sitespeedio/sitespeed.io/pull/4377).
* Replace cli-color [#4374](https://github.com/sitespeedio/sitespeed.io/pull/4374).
* Replace text-table [#4373](https://github.com/sitespeedio/sitespeed.io/pull/4373).
* Replace lodash.chunk [#4372](https://github.com/sitespeedio/sitespeed.io/pull/4372).
* Replace lodash.flatten [#4371](https://github.com/sitespeedio/sitespeed.io/pull/4371).
* Replace fs-extra [#4370](https://github.com/sitespeedio/sitespeed.io/pull/4370.)
* Replace uuid [#4369](https://github.com/sitespeedio/sitespeed.io/pull/4369).
* Replace lodash.clonedeep [#4388](https://github.com/sitespeedio/sitespeed.io/pull/4388).
* Remove unused lodash.pick [#4387](https://github.com/sitespeedio/sitespeed.io/pull/4387).
* Replace lodash.pullAll and lodash.union [#4386](https://github.com/sitespeedio/sitespeed.io/pull/4386).
* Replace find-up [#4385](https://github.com/sitespeedio/sitespeed.io/pull/4385).
* Replace getos and osname [#4384](https://github.com/sitespeedio/sitespeed.io/pull/4384).
* Replace p-limit [#4394](https://github.com/sitespeedio/sitespeed.io/pull/4394).
* Replace concurrent-queue [#4393](https://github.com/sitespeedio/sitespeed.io/pull/4393).
* Replace lodash.isEmpty [#4391](https://github.com/sitespeedio/sitespeed.io/pull/4391).
* Remove unused jstransformer-markdown-it [#4392](https://github.com/sitespeedio/sitespeed.io/pull/4392)
* Fix cli command: Use `--summaryDetail` (not summary-detail) [#4376](https://github.com/sitespeedio/sitespeed.io/pull/4376).
* Remove connectivity output from text since it was broken [#4375](https://github.com/sitespeedio/sitespeed.io/pull/4375).
* Upgrade to co2.js 0.16.4 [#4353](https://github.com/sitespeedio/sitespeed.io/pull/4353).
* Make sure co2 data is only read once at startup [#4352](https://github.com/sitespeedio/sitespeed.io/pull/4352).
* Making the slim container a little smaller [#4355](https://github.com/sitespeedio/sitespeed.io/pull/4355).
* Ugrade to google-cloud/storage-7.14.0 [#4361](https://github.com/sitespeedio/sitespeed.io/pull/4361).
* Upgrade to AWS client 3.717.0 [#4368](https://github.com/sitespeedio/sitespeed.io/pull/4368)
* Removed the webdriver manager in the Docker container [4390](https://github.com/sitespeedio/sitespeed.io/pull/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](https://github.com/sitespeedio/sitespeed.io/pull/4402).
### Tech
* New GitHub actions that test uploading to S3, GCS and SCP.
## 35.7.5 - 2024-12-23
### Fixed
* Update to faststat 0.0.7 [#4347](https://github.com/sitespeedio/sitespeed.io/pull/4347).
* Update dev dependencies [#4345](https://github.com/sitespeedio/sitespeed.io/pull/4345).
* Let analysisstorer know about webpagereplay so that correct information is displayed [#4349](https://github.com/sitespeedio/sitespeed.io/pull/4349).
* Pass on webpagereplay flag to browsertime [#4350](https://github.com/sitespeedio/sitespeed.io/pull/4350).
* Update to Browsertime 23.5.0 [#4351](https://github.com/sitespeedio/sitespeed.io/pull/4351)
## 35.7.4 - 2024-12-20
### Fixed
* Updated to Browsertime 23.4.5 that have a fix for visual metrics running videos from mobile [#4343](https://github.com/sitespeedio/sitespeed.io/pull/4343).
## 35.7.3 - 2024-12-18
### Fixed
* Add validation for dataset lengths for the Wilcoxon test. Thank you [Pavel Bairov](https://github.com/Amerousful) for PR [4341](https://github.com/sitespeedio/sitespeed.io/pull/4341).
* Updated to Browsertime 23.4.4 that has a more robust check for gnirehtet configuration [#4342](https://github.com/sitespeedio/sitespeed.io/pull/4342).
## 35.7.2 - 2024-12-14
### Fixed
* Added extra logs if the compare plugin fails when using Python so we easily can see the input parameters.
## 35.7.1 - 2024-12-11
### Fixed
* Updated to Browsertime 23.4.3 [#4336](https://github.com/sitespeedio/sitespeed.io/pull/4336).
* Make sure Firefox displays power consumption in mWH [#4334](https://github.com/sitespeedio/sitespeed.io/pull/4334).
## 35.7.0 - 2024-11-30
### Added
* Firefox 133 in the Docker container [#4327](https://github.com/sitespeedio/sitespeed.io/pull/4327).
### Fixed
* Axe Core 4.10.2 [#3328](https://github.com/sitespeedio/sitespeed.io/pull/4328)
* Fix security warnings in the Docker container.
## 35.6.1 - 2024-11-23
### Fixed
* Make sure the compare plugin can handle if your run Firefox with CPU options [#4324](https://github.com/sitespeedio/sitespeed.io/pull/4324).
## 35.6.0 - 2024-11-23
### Added
* Updated to Firefox 132 and Edge 131 in the Docketr container. The performance regression in Firefox 132 [#2211](https://github.com/sitespeedio/browsertime/issues/2211) has been fixed.
@ -27,7 +398,7 @@ Andy Davies](https://github.com/andydavies) and the cool [https://github.com/and
## 35.3.0 - 2024-10-20
### Added
* Update to Chrome 130 in the Docker container [#4299](https://github.com/sitespeedio/sitespeed.io/pull/4299).
* Update to Chrome 130 in the Docker container [#4299](https://github.com/sitespeedio/sitespeed.io/pull/4299).
* Updated to Browsertime [23.2.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2320---2024-10-20) that has a fix for installting Geckodriver on ARM containers [#4303](https://github.com/sitespeedio/sitespeed.io/pull/4303).
* Updated Chromium from 107 to 130 in the ARM Docker container. This was possible by using the Chromium built by Microsoft (M$) in Playwright [#4304](https://github.com/sitespeedio/sitespeed.io/pull/4304).
@ -234,7 +605,7 @@ From this release we release a new Docker container with the major version tag!
### Breaking
* Woho! There's now a way to deploy your own version of sitespeed.io online for your own testing using [onlinetest][https://github.com/sitespeedio/onlinetest]! It has a HTML GUI and an API that you can use using sitespeed.io command line. There's one server part (the frontend and the API) and a testrunner part. You can run desktop, emulated mobile and Android test. I do not host a global version but I worked hard to make it easy to host yourself. I still work on the documentation but feel free to start to try it out before all documentation is finished :) If you have quick question and need help, please use the [Slack channel](https://join.slack.com/t/sitespeedio/shared_invite/zt-296jzr7qs-d6DId2KpEnMPJSQ8_R~WFw). If you have more complicated problems, please feel free to create issues [here](https://github.com/sitespeedio/onlinetest/issues/new).
* With this release we remove all dependencies to WebPageTest [#4085](https://github.com/sitespeedio/sitespeed.io/pull/4085). You are only affected if you used the [plugin-webpagetest](https://github.com/sitespeedio/plugin-webpagetest) or the +webpagetest Docker container. If you still want to use WebPageTest with sitespeed.io you can build something on the archived [plugin-webpagetest](https://github.com/sitespeedio/plugin-webpagetest).
* The S3 plugin has been upgraded to @aws-sdk/client-s3 v3 [#4138](https://github.com/sitespeedio/sitespeed.io/pull/4138). If you are using the S3 plugin and not set region, that will now fail. The v2 version of the aws-sdk used us-east-1 region as default, but v3 has removed the default setting. If you didn't used to set region you can add `--s3.region us-east-1` and it will work as before. If you do not do that, the uploads to S3 will fail. With v3 your `endpoint` need to start with http/https.
@ -253,7 +624,7 @@ From this release we release a new Docker container with the major version tag!
## 33.6.1 - 2024-05-13
### Fixed
* The plus1 container was updated with the latest version of the gpsi-plugin, since the old version broke when GPSI was updated to Lighthouse 12.
* The plus1 container was updated with the latest version of the gpsi-plugin, since the old version broke when GPSI was updated to Lighthouse 12.
## 33.6.0 - 2024-04-17
### Added
@ -295,7 +666,7 @@ From this release we release a new Docker container with the major version tag!
## 33.2.0 - 2024-03-12
### Added
* Updated to Browsertime 21.5.0 in [#4103](https://github.com/sitespeedio/sitespeed.io/pull/4103) also included changes released in 21.4.0.
* Firefox:
* Firefox:
* Move injectJS functionality to Bidi [#2088](https://github.com/sitespeedio/browsertime/pull/2088). This makes it possible to inject JS in Firefox on mobile.
* Expose Bidi in commands [#2091](https://github.com/sitespeedio/browsertime/pull/2091). You can now use webdriver bidi direct in your commands.
* Fixed command action.clear() that actually didn't clear the command [#2095](https://github.com/sitespeedio/browsertime/pull/2095).
@ -309,7 +680,7 @@ From this release we release a new Docker container with the major version tag!
## 33.1.0 - 2024-02-21
### Added
* Firefox 123 and Chrome 122 in the Docker container [#4090](https://github.com/sitespeedio/sitespeed.io/pull/4090) and [#4089](https://github.com/sitespeedio/sitespeed.io/pull/4089).
* Chromedriver 122 and Edgedriver 121
* Chromedriver 122 and Edgedriver 121
* [Browsertime 21.3.0](https://github.com/sitespeedio/sitespeed.io/pull/4091).
## 33.0.0 - 2024-02-11
@ -374,8 +745,8 @@ The new version of Browsertime also adds code completion/IntelliSense support. R
* @param {import('browsertime').BrowsertimeContext} context
* @param {import('browsertime').BrowsertimeCommands} commands
*/
export default async function (context, commands) {
export default async function (context, commands) {
};
```
@ -415,7 +786,7 @@ export default async function (context, commands) {
### Fixed
* Moved functionality from co2 to sitespeed.io see [#4034](https://github.com/sitespeedio/sitespeed.io/pull/4034).
### Added
### Added
* Upgraded the Docker container to use Firefox 121 [#4033](https://github.com/sitespeedio/sitespeed.io/pull/4033).
* Updated to [Browsertime 19.3.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1931---2023-12-18) [#4031](https://github.com/sitespeedio/sitespeed.io/pull/4031).
@ -441,7 +812,7 @@ export default async function (context, commands) {
## 30.7.0 - 2023-11-30
### Added
* Show Axe individual issues on the page summary (not only on each individual run) [#4019](https://github.com/sitespeedio/sitespeed.io/pull/4019). Thank you [shaqb](https://github.com/shaqb) for pointing that out. The total number of issues is also sent to Graphite under *statistics.axe.violationIssues*.
* Show Axe individual issues on the page summary (not only on each individual run) [#4019](https://github.com/sitespeedio/sitespeed.io/pull/4019). Thank you [shaqb](https://github.com/shaqb) for pointing that out. The total number of issues is also sent to Graphite under *statistics.axe.violationIssues*.
## 30.6.0 - 2023-11-29
@ -514,7 +885,7 @@ export default async function (context, commands) {
* Updated Browsertime to 17.18.0:
* Updated to Chromedriver 119 [#2003](https://github.com/sitespeedio/browsertime/pull/2003). 119 works with both Chrome 118 and 119 so it fixes [#1197](https://github.com/sitespeedio/browsertime/issues/1997).
* Add support for network idle method to know when to end a test that uses network logs. Uses Bidi for Firefox and CDP for Chrome to listen on network events to know when to end a test. By default 5 seconds idle network time ends a tests (you could have network responses that hasn't arrived yet) [#1960](https://github.com/sitespeedio/browsertime/pull/1960). Potentially this can help SPA users or users where the page uses iframes. You can try it out by adding `--browsertime.pageCompleteCheckNetworkIdle true` to your command line. This is still some work in progress but feel free to try ut out.
* The resources script now collects number of resources served from the browser cashe for browser that supports that through the resource timing API [#1998](https://github.com/sitespeedio/browsertime/pull/1998)
* The resources script now collects number of resources served from the browser cashe for browser that supports that through the resource timing API [#1998](https://github.com/sitespeedio/browsertime/pull/1998)
* Make sure timer always is cleared. There was case of where we do a rase beteween a promise and a timeout where the timeout timer wasn't cleared/removed [#2005](https://github.com/sitespeedio/browsertime/pull/2005).
* Better way to get the url when you use GeckoProfiler.stop for Firefox, thank you [Nazım Can Altınova](https://github.com/canova) for PR [#1999](https://github.com/sitespeedio/browsertime/pull/1999)
@ -530,7 +901,7 @@ export default async function (context, commands) {
## 29.7.0 - 2023-09-27
### Added
* Updated Firefox to 118 in the Docker container [#3968](https://github.com/sitespeedio/sitespeed.io/pull/3968).
* Users of the +1 container will have Lighthouse version 11.1.0.
* Users of the +1 container will have Lighthouse version 11.1.0.
## 29.6.0 - 2023-09-22
### Added
@ -658,7 +1029,7 @@ The changes where done in [#3888](https://github.com/sitespeedio/sitespeed.io/pu
## 27.6.5 - 2023-05-26
### Fixed
* Bumped Browsertime with a fix for host-resolver-rules, thank you [Mikhail](https://github.com/atuchin-m) for PR [#1953](https://github.com/sitespeedio/browsertime/pull/1953).
* Hopefully fixed the broken manifest file for the Docker containers by updating the Docker build actions to latest versions and added provenance: false.
* Hopefully fixed the broken manifest file for the Docker containers by updating the Docker build actions to latest versions and added provenance: false.
## 27.6.4 - 2023-05-20
### Fixed
@ -692,7 +1063,7 @@ The changes where done in [#3888](https://github.com/sitespeedio/sitespeed.io/pu
* Another fix for storing result data as JSON.
## 27.5.0 - 2023-05-03
### Added
### Added
* Use Chrome 113 in the Docker container.
### Fixed
@ -727,7 +1098,7 @@ The changes where done in [#3888](https://github.com/sitespeedio/sitespeed.io/pu
* Increased the default wait time from 2 to 5 seconds when a element a clicked and the page complete check runs [#1931](https://github.com/sitespeedio/browsertime/pull/1931)
* Upgraded to Chromedriver 112 [#1932](https://github.com/sitespeedio/browsertime/pull/1932).
* If you use `--headless` Chrome will use the new headless switch [#1933](https://github.com/sitespeedio/browsertime/pull/1933).
* The plugin-lighthouse uses Lighthouse 10.1.0 and --headless=new
* The plugin-lighthouse uses Lighthouse 10.1.0 and --headless=new
## 27.0.0 - 2023-04-04
@ -739,7 +1110,7 @@ There's been many additions to Browsertime the last months and I'll update the C
The project was transitioned to a [pure ESM package](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) both Browsertime [#1859](https://github.com/sitespeedio/browsertime/pull/1859) and sitespeed.io [#3769](https://github.com/sitespeedio/sitespeed.io/pull/3769). That allow us to stay uptodate with dependencies. This is important for us and will make the project easier to maintain.
#### CLI users
If you are a command line user and use [scripting](https://www.sitespeed.io/documentation/sitespeed.io/scripting/), you will need to do a change to your scripts or add some extra configuration.
If you are a command line user and use [scripting](https://www.sitespeed.io/documentation/sitespeed.io/scripting/), you will need to do a change to your scripts or add some extra configuration.
**The quick fix**: Rename your *.js* scripting files to *.cjs* that way NodeJS will treat your file as a common JS file and everything will just work. For example if you have a file names `login.js` you can rename that to `login.cjs` and make sure you load that new file. Then sitespeed.io 27.0.0 will just work as before.
@ -759,14 +1130,14 @@ export default async function (context, commands) {
}
```
If you have more complicated scripts, follow the [ESM package guide](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).
If you have more complicated scripts, follow the [ESM package guide](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).
Then rename your file to be named *.mjs. If your file is named `collect.js` change it to `collect.mjs`. This is the best fix and will work 100% of the time. That way NodeJS will know that you are using the ESM standard. You can read more in [how NodeJs choose to load files](https://nodejs.org/docs/latest-v18.x/api/packages.html#determining-module-system).
**Another quick fix alternative**: As a last alternative add `--browsertime.cjs` as a parameter to your test. That way the scripting file will be treated as a commonjs file. This is a hack, so to make sure it works, the user that runs Browsertime need to have write privileges to the folder where you have your scripting files. Browsertime will create a package.json file on the same levels as your script file. If you already have a package.json there, it will be overwritten.
#### Non cli users
#### Non cli users
Documentation coming soon.
Read [Sindre Sorhus Pure ESM package guide](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) on how you can move your project.
@ -781,7 +1152,7 @@ If you run sitespeed.io direct using NodeJs (and not using Docker) you need to i
```python -m pip install --user OpenCV-Python Numpy```
If you still want to use ImageMagick you can do that by setting ```browsertime.visualMetricsPortable false```
If you still want to use ImageMagick you can do that by setting ```browsertime.visualMetricsPortable false```
### Fixed
@ -790,17 +1161,17 @@ If you still want to use ImageMagick you can do that by setting ```browsertime.v
### Added
* [A lot of things has happened](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md) in Browsertime:
* There's a new better way to get the HAR from Firefox using WebDriver BiDi network events. Thank you Julian Descottes and others at Mozilla that made this happen! With the new version we hope to see less overhead getting the HAR + it works on Firefox on Android #1918. You can turn it on with --browsertime.firefox.bidihar.
* Updated to Geckodriver 0.33
* Fixed the interaction to next paint error message that started to appear in latest Chrome
* Safer check for getting last meaningful paint
* Updated to Geckodriver 0.33
* Fixed the interaction to next paint error message that started to appear in latest Chrome
* Safer check for getting last meaningful paint
* Log the CPU benchmark metric to the console. This is useful (at least for me) when debugging instances with a lot of instability.
* In Chrome 111 some metrics become more instable when running on host with limited CPU. This change also exists in 112 beta. However we where missing out on a couple of command line magic to disable features in Chrome.
* On Linux you can use taskset to assing FFMPEG to specific CPUs using --videoParams.taskset "0,5,7,9-11" . It will start FFMPEG with taskset -c <CPUS> to pin FFMPG to specific CPU(s). Specify a numerical list of processors. The list may contain multiple items, separated by comma, and ranges. For example, "0,5,7,9-11". Use it together with isolcpus.
* If you use a rooted Samsung A51 you can now choose the CPU speed (min/middle/max) using --android.pinCPUSpeed min|middle|max
* Expose chrome-remote-interface client to scripting. This makes it so much easier to run whatever CDP command. Get the raw version `commands.cdp.getRawClient()`.
* Pin CPU freq to fastest for Samsung A51 (if you have a rooted device)
* Pin CPU freq to fastest for Samsung A51 (if you have a rooted device)
* Updated to Chrome 111, Firefox 111 and Edge 111 in the Docker container.
* The Lighthouse plugin has been updated to Lighthouse 10.
* The Lighthouse plugin has been updated to Lighthouse 10.
* Support for InfluxDb 2, thank you [Damien-Ar](https://github.com/Damien-Ar) for PR [#3711](https://github.com/sitespeedio/sitespeed.io/pull/3711) and [Roman Voitseshevsky](https://github.com/boitcex) for adding tests in [#3790](https://github.com/sitespeedio/sitespeed.io/pull/3790).
## 26.1.0 - 2022-10-21
### Added
@ -885,7 +1256,7 @@ https://github.com/sitespeedio/sitespeed.io/pull/3715).
* Updated Browsertime to 16.14.1 that adds a guard for null values in rsd (this fixes the warning logs happening in 25.8.0).
## 25.8.0 - 2022-08-26
### Added
* Updated to [Browsertime 16.14.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#16140---2022-08-26). that collects relative standard deviation for metrics and the number of processes that runs on the server when you start a test.
* Updated to [Browsertime 16.14.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#16140---2022-08-26). that collects relative standard deviation for metrics and the number of processes that runs on the server when you start a test.
## 25.7.3 - 2022-08-17
### Fixed
* Upgraded to [Browsertime 16.13.3](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#16133---2022-08-17) that fixes a bug when setting cookies when navigating in Chrome/Edge when using scripting.
@ -909,7 +1280,7 @@ https://github.com/sitespeedio/sitespeed.io/pull/3715).
### Added
* Updated to Firefox 103 in the Docker container.
* The +1 container uses Lighthouse 9.6.4.
* Removed videojs and use plain video element to display the video [#3697](https://github.com/sitespeedio/sitespeed.io/pull/3697). This makes the result pages cleaner.
* Removed videojs and use plain video element to display the video [#3697](https://github.com/sitespeedio/sitespeed.io/pull/3697). This makes the result pages cleaner.
### Fixed
* Fixed error message when you run Axe and analysisstorer at the same time [#3703](https://github.com/sitespeedio/sitespeed.io/pull/3703).
@ -955,7 +1326,7 @@ https://github.com/sitespeedio/sitespeed.io/pull/3715).
* Bug fix for adding custom CSS from plugins, than you [Josh Duncan](https://github.com/josh-lr) for PR [#3679](https://github.com/sitespeedio/sitespeed.io/pull/3679).
## 25.2.0 - 2022-06-22
### Added
### Added
* Updated the Docker container to use Chrome 103.
## 25.1.1 - 2022-06-20
@ -966,7 +1337,7 @@ https://github.com/sitespeedio/sitespeed.io/pull/3715).
* Updated Browsertime to [16.9.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1690---2022-06-15) with the following changes:
* New `wait.byCondition` command. Thank you [Icecold777](https://github.com/Icecold777) for PR [#1803](https://github.com/sitespeedio/browsertime/pull/1803).
* Collect number of CPU longtasks before largest contentful paint [#1806](https://github.com/sitespeedio/browsertime/pull/1806).
* Instead of throwing errors and exit the tests if the page hasn't finished loading after 5 minutes, we now gracefully ends the test after 2 minutes (you can change that time with `--maxLoadTime`). That makes more sense than just throwing errors [#1810](https://github.com/sitespeedio/browsertime/pull/1810).
* Instead of throwing errors and exit the tests if the page hasn't finished loading after 5 minutes, we now gracefully ends the test after 2 minutes (you can change that time with `--maxLoadTime`). That makes more sense than just throwing errors [#1810](https://github.com/sitespeedio/browsertime/pull/1810).
## 25.0.0 - 2022-06-10
@ -997,7 +1368,7 @@ In debug mode, the browser will pause after each iteration.
* Updated to [Browsertime 16.7.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1670---2022-05-20) from 16.4.0. With the latest versions we get:
* Use `--browsertime.videoParams.thumbsize` to set the max size of the filmstrip thumbnails.
* Interaction to next paint is collected for browsers that supports it (useful for your user journeys)
* The time when the last CPU long task happens is a new metric, thank you Andy Davies for that idea!
* The time when the last CPU long task happens is a new metric, thank you Andy Davies for that idea!
* You can now use groupAlias directly in a text file [#3655](https://github.com/sitespeedio/sitespeed.io/pull/3655). You can read how in the [updated documentation](https://www.sitespeed.io/documentation/sitespeed.io/configuration/#analyse-by-urls).
* Added an option for using the full Graphite namespace when latest screenshots/video is stored for a test [#3660](https://github.com/sitespeedio/sitespeed.io/pull/3660).
### Fixed
@ -1046,7 +1417,7 @@ In debug mode, the browser will pause after each iteration.
* Updated base Docker image to use Ubuntu 22.04 [#3636](https://github.com/sitespeedio/sitespeed.io/pull/3636).
### Fixed
* Updated dependencies: aws-sdk, cli-color, fs-extra, influx, junit-report-builder and tape [#3640](https://github.com/sitespeedio/sitespeed.io/pull/3640)
* Updated dependencies: aws-sdk, cli-color, fs-extra, influx, junit-report-builder and tape [#3640](https://github.com/sitespeedio/sitespeed.io/pull/3640)
### Tech
* Use Ava for unit testing [#3637](https://github.com/sitespeedio/sitespeed.io/pull/3637)
@ -1066,7 +1437,7 @@ In debug mode, the browser will pause after each iteration.
## 24.0.0 - 2022-04-06
### Changed
### Changed
* Upgraded to [Browsertime 16.0.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1600---2022-04-05) that changed how the DNS is flushed. You need to add `--flushDNS` to your conifguration to flush the DNS between runs.
### Added
@ -1098,7 +1469,7 @@ In debug mode, the browser will pause after each iteration.
* The -slim Docker container now uses Firefox 98.
* Updated Grafana to latest 8.4.3 in the Docker compose file.
* Updated [Graphite dashboards](https://github.com/sitespeedio/grafana-bootstrap-docker/tree/main/dashboards/graphite) to use Timeseries graphs instead of old "Graph".
* You can use `-o` or `--open` or `--view` to open the result page after you run sitespeed.io on Mac and Linux [#3569](https://github.com/sitespeedio/sitespeed.io/pull/3596).
* You can use `-o` or `--open` or `--view` to open the result page after you run sitespeed.io on Mac and Linux [#3569](https://github.com/sitespeedio/sitespeed.io/pull/3596).
* Open the result with `-o` on Linux using xdg-open [#3597](https://github.com/sitespeedio/sitespeed.io/pull/3597).
## 23.4.0 - 2022-03-09
@ -1121,7 +1492,7 @@ In debug mode, the browser will pause after each iteration.
## 23.1.0 - 2022-02-24
### Added
* Updated [Browsertime](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1510---2022-02-24) that collect timings from main document. The result includes a field named mainDocumentTimings and contains blocked, dns, connect, send, wait, receive, ssl as long as you get a HAR file from the browser.
* Updated [Browsertime](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1510---2022-02-24) that collect timings from main document. The result includes a field named mainDocumentTimings and contains blocked, dns, connect, send, wait, receive, ssl as long as you get a HAR file from the browser.
* Show Browsertime version in runtime settings [#3575](https://github.com/sitespeedio/sitespeed.io/pull/3575).
@ -1129,7 +1500,7 @@ In debug mode, the browser will pause after each iteration.
* Updated Chromedriver dependency that fixes installation on Mac M1 and some send keys issues.
## 23.0.1 - 2022-02-21
### Fixed
* Bumped to Browsertime 15.0.1 to make sure connectivity is set only once. In last release it was set in the beginning of the test and for eacch iteration. In practice that doesn't matter but it's very confusing if you check the logs.
* Bumped to Browsertime 15.0.1 to make sure connectivity is set only once. In last release it was set in the beginning of the test and for eacch iteration. In practice that doesn't matter but it's very confusing if you check the logs.
## 23.0.0 - 2022-02-21
### Breaking changes
@ -1163,7 +1534,7 @@ In debug mode, the browser will pause after each iteration.
* If you use the Lighthouse plugin there's breaking changes:
In the new version we drop support for the following:
* Running multiple runs with Lighthouse.
* Running multiple runs with Lighthouse.
* Using scripts to login the user (or whatever you need before you run your tests)
It's a couple of reasons why I remove those features:
* I been looking for a maintainer of the Lighthouse plugin for +1 year and I haven't found one. For me to be able to maintain it I want the plugin to be as simple as possible.
@ -1174,7 +1545,7 @@ With the new release we also break how you configure Lighthouse. People has had
- By configuration JSON file. `--lighthouse.config config.js`
- By Lightouse flags file. `--lighthouse.flags flag.json`
If you don't need to configure Lightouse you can use the default settings both for desktop and mobile. If you run without any settings, the plugin will use desktop settings. If you run with `--mobile`, `--android` or `--ios` the mobile settings will be used.
If you don't need to configure Lightouse you can use the default settings both for desktop and mobile. If you run without any settings, the plugin will use desktop settings. If you run with `--mobile`, `--android` or `--ios` the mobile settings will be used.
### Added
* Build Docker containers for both amd64 and arm64 to make containers work on Mac M1. The arm container contains Firefox and Chromium. Thank you [whichfinder](https://github.com/whichfinder) and [Radu Micu](https://github.com/radum) for the help! Fixed in PR [#3554](https://github.com/sitespeedio/sitespeed.io/pull/3554).
@ -1205,7 +1576,7 @@ If you don't need to configure Lightouse you can use the default settings both f
### Added
* Updated to a new build of WebPageReplay in the Docker container
* Updated the Ubuntu base image to latest version and latest NodeJS in the Docketr container.
* Upgraded Browsertime [#3528](https://github.com/sitespeedio/sitespeed.io/pull/3528):
* Upgraded Browsertime [#3528](https://github.com/sitespeedio/sitespeed.io/pull/3528):
* Add support for Humble as connectivity engine for mobile phone testing. Make sure to setup Humble on a Raspberry Pi 4 and the choose engine with --connectivity.engine humble and set the URL to your instance --connectivity.humble.url http://raspberrypi.local:3000. Added in #1691.
* Upgraded to Chrome 97 and Edge 97 in the Docker container.
* Upgraded to Chromedriver 97.
@ -1220,7 +1591,7 @@ If you don't need to configure Lightouse you can use the default settings both f
## 21.2.2 - 2021-12-23
### Fixed
* Fix the error introduced in 21.2.0 for "Include page summary URL in the result JSON"
[#3525](https://github.com/sitespeedio/sitespeed.io/pull/3525).
[#3525](https://github.com/sitespeedio/sitespeed.io/pull/3525).
## 21.2.1 - 2021-12-22
### Fixed
@ -1263,7 +1634,7 @@ If you don't need to configure Lightouse you can use the default settings both f
* Removed mentions aboout server push [#69](https://github.com/sitespeedio/coach-core/pull/69)
* Added more information on how to debug CPU advice [#71](https://github.com/sitespeedio/coach-core/pull/71).
* Updated to sustainable plugin core code to [co2 0.8.0](https://github.com/thegreenwebfoundation/co2.js/blob/main/CHANGELOG.md#080---2021-11-28). This include a biug fix to the 1byte model that will lower your co2 score [#3519](https://github.com/sitespeedio/sitespeed.io/pull/3519).
* Updated to sustainable plugin core code to [co2 0.8.0](https://github.com/thegreenwebfoundation/co2.js/blob/main/CHANGELOG.md#080---2021-11-28). This include a biug fix to the 1byte model that will lower your co2 score [#3519](https://github.com/sitespeedio/sitespeed.io/pull/3519).
### Added
* Updated to [Browsertime 14.12.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#14120---2021-11-30) that fixes the [FF 94 HAR issue](https://github.com/sitespeedio/browsertime/issues/1671).
@ -1326,7 +1697,7 @@ Note: Do your test fails with Firefox 94? See [Browsertime #1671](https://github
* Add support for using cookies when crawling, thank you [dammg](https://github.com/dammg) for PR [#3472](https://github.com/sitespeedio/sitespeed.io/pull/3472).
* [Browsertime 14.6.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1460---2021-10-13).
* [Use alias in your budget file](https://www.sitespeed.io/documentation/sitespeed.io/performance-budget/#override-per-url-or-alias) [#3479](https://github.com/sitespeedio/sitespeed.io/pull/3479).
* Support for using [User Timing API marks/measures in the budget file](https://www.sitespeed.io/documentation/sitespeed.io/performance-budget/#user-timing-api-metrics) [#3482](https://github.com/sitespeedio/sitespeed.io/pull/3482) and [#3483](https://github.com/sitespeedio/sitespeed.io/pull/3483).
* Support for using [User Timing API marks/measures in the budget file](https://www.sitespeed.io/documentation/sitespeed.io/performance-budget/#user-timing-api-metrics) [#3482](https://github.com/sitespeedio/sitespeed.io/pull/3482) and [#3483](https://github.com/sitespeedio/sitespeed.io/pull/3483).
* Support for [using custom metrics from scripting in your budget](https://www.sitespeed.io/documentation/sitespeed.io/performance-budget/#metrics-from-scripting) [#3484](https://github.com/sitespeedio/sitespeed.io/pull/3484) and [#3486](https://github.com/sitespeedio/sitespeed.io/pull/3486).
### Fixed
@ -1337,7 +1708,7 @@ Note: Do your test fails with Firefox 94? See [Browsertime #1671](https://github
* Use Firefox 93 in the Docker and the Docker slim container [#3471](https://github.com/sitespeedio/sitespeed.io/pull/3471).
## 20.0.0 - 2021-09-30
Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
### Breaking changes
* Before you update to the new version: If you save your metrics to Graphite, have you upgraded those metrics to the new format as introduced in sitespeed.io the **15/4-2021**? If not, please follow the [guide](https://www.sitespeed.io/documentation/sitespeed.io/graphite/#upgrade-to-use-the-test-slug-in-the-namespace) in the documentation. If you haven't done that and still upgrade to sitespeed.io 20 you need to make sure you add `--graphite.addSlugToKey false` to your test else the metrics will be reported under a new key structure. The change was done in [#3434](https://github.com/sitespeedio/sitespeed.io/pull/3434).
* Set [throttle](https://github.com/sitespeedio/throttle) as default connectivity engine if you use Mac or Linux [#3433](https://github.com/sitespeedio/sitespeed.io/pull/3433). This makes it much easier to enable throttling. Our Docker container is not affected by this change.
@ -1382,7 +1753,7 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
* Upgraded to [Browsertime 14.0.3](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1403---2021-08-31).
## 19.2.0 - 2021-08-27
### Added
* Upgraded to AXE core 4.3.2 [#3441](https://github.com/sitespeedio/sitespeed.io/pull/3441).
* Upgraded to AXE core 4.3.2 [#3441](https://github.com/sitespeedio/sitespeed.io/pull/3441).
* Added stddev/median/mean to the metrics side by side page [#3443](https://github.com/sitespeedio/sitespeed.io/pull/3443).
* Added a generic text that we miss out of many metrics for Safari at the moment [#3442](https://github.com/sitespeedio/sitespeed.io/pull/3442).
* Add option to add friendly name to junit test cases. Use `--budget.friendlyName` to set that. Thank you [Vishal](https://github.com/vishallanke) for the request. Done in PR [#3448](https://github.com/sitespeedio/sitespeed.io/pull/3448).
@ -1403,7 +1774,7 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
### Added
* Updated to Edge 92 and Edgedriver 92 in the Docker container.
* Updated to Firefox 92 beta in the Docker container to fix the [devtools slowness bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1712983) that was inroduced in Firefox 90.
* Updated to Firefox 92 beta in the Docker container to fix the [devtools slowness bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1712983) that was inroduced in Firefox 90.
## 18.0.1 - 2021-07-29
### Fixed
@ -1447,7 +1818,7 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
* Keep selected tab open across runs. Thank you [Tanishq](https://github.com/amtanq) for PR [#3409](https://github.com/sitespeedio/sitespeed.io/pull/3409).
* Update Docker container to use NodeJS 14.7.1.
* Upgraded to [Browsertime 12.9.3](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1293---2021-06-24).
* Updated [Coach-core](https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#641---2021-06-23): Use all headers for Wappalyzer (before only the main document was used)
* Updated [Coach-core](https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#641---2021-06-23): Use all headers for Wappalyzer (before only the main document was used)
## 17.8.1 - 2021-06-10
### Fixed
@ -1458,7 +1829,7 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
### Added
* New [Browsertime 12.9.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1290---2021-06-04) that updates Cumulative Layout Shift to the [new defintion](https://web.dev/evolving-cls/).
### Fixed
### Fixed
* Guard if you try to run Safari simulator in Docker [#3405](https://github.com/sitespeedio/sitespeed.io/pull/3405)
## 17.7.0 - 2021-06-03
@ -1477,7 +1848,7 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
## 17.6.0 - 3
### Added
### Added
* Updated to [Browsertime 12.7.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1270---2021-05-26) that fixes the problem with the broken CPU throttling in Chrome.
* Chrome and Chromedriver 91. Edge 90 (Eddge 91 coming later this week) in the Docker container
@ -1489,7 +1860,7 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
* Updated dashboards to in the Docker setup.
### Fixed
* New Browsertime [12.6.1](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1261---2021-05-21) that fixes a bug when you use a equals sign in the value field in a cookie.
* New Browsertime [12.6.1](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1261---2021-05-21) that fixes a bug when you use a equals sign in the value field in a cookie.
* Updated dependencies with install warnings [#3387](https://github.com/sitespeedio/sitespeed.io/pull/3387),
## 17.4.0 - 2021-05-14
@ -1515,7 +1886,7 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
* [Fix test running without connectivity settings](https://github.com/sitespeedio/sitespeed.io/commit/3ac3c2ab6885689b6689c6f2974ae7c256be9faf).
## 17.2.0 - 2021-04-27
### Added
### Added
* Show runtime settings in the HTML [#3359](https://github.com/sitespeedio/sitespeed.io/pull/3359). This makes it easier to see what settings are used. We gonna iterate and add more settings later.
* Upgraded to [Browsertime 12.2.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1220---2021-04-27).
@ -1530,13 +1901,13 @@ Please read the [20.0 blog post](https://www.sitespeed.io/sitespeed.io-20.0/)!
## 17.0.1 - 2021-04-17
### Fixed
* Updated Browsertime to 12.0.1 that fixes the problem with Chrome/Chromedriver 90 that introduced longer time to close the browser than earlier versions, so when trying the next run, the previous browser is not closed, fixed by adding a 2 second sleep time when closing the browser.
## 17.0.0 - 2021-04-15
## 17.0.0 - 2021-04-15
Woohoo we shipped 17.0.0! There are many changes and you should read through the full changelog and focus on the new best practise section and breaking changes.
### New best practices
One of the new things in 17 is the support for one extra key in Graphite: the name of the test. Set a computer friendly name of your test by using `--slug`. Then use the slug in the graphite key by adding `--graphite.addSlugToKey` to your run. When you do that change, should also convert your graphite data and your dashboards. The plan is like this:
* In April 2021 you can convert your data and use the slug. You need to add `--graphite.addSlugToKey true` else you will get a log warning that you miss the slug for your test. All default dashboards in sitespeed.io will use the slug, so to use them you should add that new key and convert your data.
* In September 2021 `--graphite.addSlugToKey true` will be set to default, meaning if you haven't upgraded your Graphite data yet, you need to set `--graphite.addSlugToKey false` to be able to run as before.
* In November 2021 the CLI functionality will disappear and you need upgrade your Graphite metrics when you upgrade sitespeed.io.
* In November 2021 the CLI functionality will disappear and you need upgrade your Graphite metrics when you upgrade sitespeed.io.
You can read how to upgrade in the [documentation](https://www.sitespeed.io/documentation/sitespeed.io/graphite/#upgrade-to-use-the-test-slug-in-the-namespace).
@ -1578,9 +1949,9 @@ Lets continue with all the changes.
* New metrics: Delta between TTFB and First Contentful Paint, Largest Contentful paint and First visual change [#1528](https://github.com/sitespeedio/browsertime/pull/1528). You can use this if you have unstable TTFB and want to alert on front end metrics. Lets see when other also implement this :)
* Made it easier for people to get Google Web Vitals. We copy that data under the googleWebVitals namespace in the result JSON [#1521](https://github.com/sitespeedio/browsertime/pull/1521).
* Added TTFB as a single metric [#1522](https://github.com/sitespeedio/browsertime/pull/1522).
* New stop watch command [#1512](https://github.com/sitespeedio/browsertime/pull/1512). Measure time by:
```const timer = commands.stopWatch.get('my_timer');
timer.start();
* New stop watch command [#1512](https://github.com/sitespeedio/browsertime/pull/1512). Measure time by:
```const timer = commands.stopWatch.get('my_timer');
timer.start();
// Do something
// Stop the timer and add the result to the last tested URL
timer.stopAndAdd();
@ -1692,9 +2063,9 @@ There's a couple of new functionality that will have documentation in a week or
* New plugin to copy screenshots [#3243](https://github.com/sitespeedio/sitespeed.io/pull/3243) and videos [#3248](https://github.com/sitespeedio/sitespeed.io/pull/3248) as latest for that run.
* Upload latest screenshots/videos to S3 [#3246](https://github.com/sitespeedio/sitespeed.io/pull/3246).
### Fixed
* The HTML links to pages when using alias in a text file was broken as reported in [#3244](https://github.com/sitespeedio/sitespeed.io/issues/3244), fixed in PR [#3245](https://github.com/sitespeedio/sitespeed.io/pull/3245).
* The HTML links to pages when using alias in a text file was broken as reported in [#3244](https://github.com/sitespeedio/sitespeed.io/issues/3244), fixed in PR [#3245](https://github.com/sitespeedio/sitespeed.io/pull/3245).
## 16.2.1 - 2021-01-06
### Fixed
### Fixed
* The new `--graphite.annotationRetentionMinutes` formatted the annotation date wrong, fixed in [#3238](https://github.com/sitespeedio/sitespeed.io/pull/3238).
## 16.2.0 - 2021-01-06
### Fixed
@ -1749,7 +2120,7 @@ There's a couple of new functionality that will have documentation in a week or
* Fully use the third-party-web to know about third parties instead of home grown solution.
* Testing for JQuery removed the $ reference on the page [#22](https://github.com/sitespeedio/coach-core/pull/22).
* Updated to [Browsertime 11](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1100---2020-12-18):
* Record and keep the browser full screen (including URL bar) [#1435](https://github.com/sitespeedio/browsertime/pull/1435). All metrics should stay the same with this change but the video and the code will be easier :) When we implemented video a long time ago we wanted to cut out the URL bar but it made it harder to keep the video to look ok on different OS.
* Record and keep the browser full screen (including URL bar) [#1435](https://github.com/sitespeedio/browsertime/pull/1435). All metrics should stay the same with this change but the video and the code will be easier :) When we implemented video a long time ago we wanted to cut out the URL bar but it made it harder to keep the video to look ok on different OS.
* Say goodbye to RUM Speed Index [#1439](https://github.com/sitespeedio/browsertime/pull/1439).
* Domain name on disk now uses underscore instead of dots in the name [#1445](https://github.com/sitespeedio/browsertime/pull/1445).
* Click the Android power button at the start of each test (instead of the home button [#1447](https://github.com/sitespeedio/browsertime/pull/1447).
@ -1781,11 +2152,11 @@ There's a couple of new functionality that will have documentation in a week or
* Added latest Browsertime [10.9.0](https://github.com/sitespeedio/browsertime/releases/tag/v10.9.0) with fixes for Firefox.
## 15.8.0 - 2020-11-17
### Added
### Added
* Updated to Firefox 83 in the Docker container.
## 15.7.4 - 2020-11-16
### Fixed
* Upgraded Browsertime that reverted Geckodriver to 0.27.0 since there are problems starting Firefox on Android using 0.28.0.
* Upgraded Browsertime that reverted Geckodriver to 0.27.0 since there are problems starting Firefox on Android using 0.28.0.
## 15.7.3 - 2020-11-11
### Fixed
* Upgraded to Browsertime 10.6.5 with a new version of Geckodriver for Firefox.
@ -1830,9 +2201,9 @@ There's a couple of new functionality that will have documentation in a week or
### Fixed
* Updated to Browsertime 10.6.1.
* Fixed dependencies with security audits that could be automatically fixed.
## 15.6.0 - 2020-10-20
### Added
### Added
* Updated to Firefox 82 in the Docker container.
* Updated to [Browsertime 10.6.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#1060---2020-10-20).
@ -1885,7 +2256,7 @@ The new sitespeed.io 15.0 uses the brand new Browsertime 10! Browsertime mainly
## 14.4.0 - 2020-08-27
### Added
* Updated the Docker container to use Chrome 85 and Firefox 80. Updated the slim container to use Firefox 80.
* Updated the Docker container to use Chrome 85 and Firefox 80. Updated the slim container to use Firefox 80.
* Updated to Browsertime 9.4.0 that includes Chromedriver 85.
### Fixed
@ -1893,7 +2264,7 @@ The new sitespeed.io 15.0 uses the brand new Browsertime 10! Browsertime mainly
## 14.3.2 - 2020-08-24
### Fixed
* Upgraded to [Browsertime 9.3.1](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#931---2020-08-24) that fixes a bug so that correct mobile emulation settings is set on Chrome, updated Throttle to 2.0.1 and update a couple of other packages.
* Upgraded to [Browsertime 9.3.1](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#931---2020-08-24) that fixes a bug so that correct mobile emulation settings is set on Chrome, updated Throttle to 2.0.1 and update a couple of other packages.
## 14.3.1 - 2020-08-24
### Fixed
@ -1948,10 +2319,10 @@ There are five important new things in the new release:
### Breaking changes
* If you use the JSON directly from Browsertime, the screenshot data is now an array instead of a string since you can have multiple screenshots in one run. If you use sitespeed.io directly you will not be affected by the change.
* The experimental flag for perIteration metric for Graphite [#3069](https://github.com/sitespeedio/sitespeed.io/pull/3069) has been removed. If you want to send per iteration data to Graphite use ```--graphite.perIteration```.
* The experimental flag for perIteration metric for Graphite [#3069](https://github.com/sitespeedio/sitespeed.io/pull/3069) has been removed. If you want to send per iteration data to Graphite use ```--graphite.perIteration```.
### Added
* All dashboards for Graphite has been updated to use Grafana 7.0.0 with a new look and feel.
* All dashboards for Graphite has been updated to use Grafana 7.0.0 with a new look and feel.
* Show all screenshots for a run in a tab [#3045](https://github.com/sitespeedio/sitespeed.io/pull/3045).
* Updated to [Browsertime 9.0.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#900----2020-06-26).
* There's a Chrome User Experience Report plugin bundled in sitespeed.io! Get the CrUx data using ```--crux.key``` and get your key from Google.
@ -1984,7 +2355,7 @@ There are five important new things in the new release:
## 13.1.1 - 2020-05-29
### Fixed
* Exit with sitespeed.io exit code when you run WebPageReplay in the Docker container [#3017](https://github.com/sitespeedio/sitespeed.io/pull/3017).
* Exit with sitespeed.io exit code when you run WebPageReplay in the Docker container [#3017](https://github.com/sitespeedio/sitespeed.io/pull/3017).
## 13.1.0 - 2020-05-28
### Added
@ -2017,7 +2388,7 @@ There are five important new things in the new release:
* Better guards for missing WebPageTest first view data [#3002](https://github.com/sitespeedio/sitespeed.io/pull/3002)
* If you used the old budget format, limits and values wasn't written in the HTML and in the log [#3009](https://github.com/sitespeedio/sitespeed.io/pull/3009).
### Tech
### Tech
* Continous work to move out CLI options to respective plugin by [Erick Wilder](https://github.com/erickwilder), thank you!
## 12.11.0 - 2020-05-16
@ -2118,7 +2489,7 @@ Some time ago we got [a tweet](https://twitter.com/robnavrey/status/125806312524
* Send load time for LCP to Graphite/Influx so you can choose between render/start time and use max value in the HTML [#2940](https://github.com/sitespeedio/sitespeed.io/pull/2940).
## 12.2.3 - 2020-03-20
### Fixed
### Fixed
* Remove videoRecordingStart from the summary [#2935](https://github.com/sitespeedio/sitespeed.io/pull/2935).
* Show CPU geckorprofile link only when you run Firefox [#2931](https://github.com/sitespeedio/sitespeed.io/pull/2931).
* Upgraded to [Browsertime 8.3.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#830---2020-03-20).
@ -2244,7 +2615,7 @@ Read about Browsertime 8.0 and sitespeed.io 12.0 in [the blog post](https://www.
* Collect number of DOM elements as a part of the page info for each run [#1000](https://github.com/sitespeedio/browsertime/pull/1000).
* Configure how often to check for the pageCompleteCheck. Default is every 200 ms, and it happens after the load event end (using the default pageLoadStrategy). Set it with `--browsertime.pageCompleteCheckPollTimeout`(value in ms) [#998](https://github.com/sitespeedio/browsertime/pull/998).
* Added missing pageLoadStrategy option in the CLI. The option worked but no visible cli help for it [#1001](https://github.com/sitespeedio/browsertime/pull/1001).
* Do not load the Browsertime WebExtention for Chrome (it is not used anymore) and make it possible for Firefox to disable to use it with `--browsertime.firefox.disableBrowsertimeExtension`.
* Do not load the Browsertime WebExtention for Chrome (it is not used anymore) and make it possible for Firefox to disable to use it with `--browsertime.firefox.disableBrowsertimeExtension`.
* Added configurable settle time for the browser to rest after the browser is open and before the tests starts to run. Use `--browsertime.timeToSettle` in ms [#1003](https://github.com/sitespeedio/browsertime/pull/1003).
* Calculate FID instead of just report it [#1005](https://github.com/sitespeedio/browsertime/pull/1005)
* You can now run ADB shell directly from your user script [#1007](https://github.com/sitespeedio/browsertime/pull/1007). Use `commands.android.shell('')`.
@ -2266,7 +2637,7 @@ Read about Browsertime 8.0 and sitespeed.io 12.0 in [the blog post](https://www.
## 11.3.0 - 2019-11-22
### Added
* Added the sitespeed.io version and browser version in the title of the annotation tag of Graphite and Grafana [#2791](https://github.com/sitespeedio/sitespeed.io/pull/2791), [#2792](https://github.com/sitespeedio/sitespeed.io/pull/2792) and [#2793](https://github.com/sitespeedio/sitespeed.io/pull/2793).
* Updated to Browsertime 7.2.2:
* Updated to Browsertime 7.2.2:
* There was a bug introduced in 7.0.0 that made navigation fail on Safari [#997](https://github.com/sitespeedio/browsertime/pull/997).
* Get phone and Android version from the phone [#991](https://github.com/sitespeedio/browsertime/pull/991).
* Take care of the case when a page overwrites the document.URL [#992](https://github.com/sitespeedio/browsertime/pull/992).

View File

@ -1,9 +1,10 @@
FROM sitespeedio/webbrowsers:chrome-131.0-firefox-132.0-edge-131.0
FROM sitespeedio/webbrowsers:chrome-143.0-firefox-146.0-edge-143.0
ARG TARGETPLATFORM=linux/amd64
ENV SITESPEED_IO_BROWSERTIME__XVFB true
ENV SITESPEED_IO_BROWSERTIME__DOCKER true
ENV SITESPEED_IO_BROWSERTIME__XVFB=true
ENV SITESPEED_IO_BROWSERTIME__DOCKER=true
ENV PYTHON=python3
COPY docker/webpagereplay/$TARGETPLATFORM/wpr /usr/local/bin/
COPY docker/webpagereplay/wpr_cert.pem /webpagereplay/certs/
@ -11,8 +12,7 @@ COPY docker/webpagereplay/wpr_key.pem /webpagereplay/certs/
COPY docker/webpagereplay/deterministic.js /webpagereplay/scripts/deterministic.js
COPY docker/webpagereplay/LICENSE /webpagereplay/
RUN sudo apt-get update && sudo apt-get install libnss3-tools python2 \
RUN sudo apt-get update && sudo apt-get install libnss3-tools \
net-tools \
build-essential \
iproute2 -y && \
@ -28,8 +28,12 @@ WORKDIR /usr/src/app
COPY package.json /usr/src/app/
COPY npm-shrinkwrap.json /usr/src/app/
COPY tools/postinstall.js /usr/src/app/tools/postinstall.js
RUN npm install --production && npm cache clean --force
COPY . /usr/src/app
COPY ./bin/ /usr/src/app/bin/
COPY ./lib/ /usr/src/app/lib/
RUN rm -fR /usr/src/app/node_modules/selenium-webdriver/bin
COPY docker/scripts/start.sh /start.sh

View File

@ -1,12 +1,12 @@
FROM node:20.9.0-bookworm-slim
FROM node:24.11.0-bookworm-slim
ARG TARGETPLATFORM=linux/amd64
ENV SITESPEED_IO_BROWSERTIME__DOCKER true
ENV SITESPEED_IO_BROWSERTIME__VIDEO false
ENV SITESPEED_IO_BROWSERTIME__BROWSER firefox
ENV SITESPEED_IO_BROWSERTIME__VISUAL_METRICS false
ENV SITESPEED_IO_BROWSERTIME__HEADLESS true
ENV SITESPEED_IO_BROWSERTIME__DOCKER=true
ENV SITESPEED_IO_BROWSERTIME__VIDEO=false
ENV SITESPEED_IO_BROWSERTIME__BROWSER=firefox
ENV SITESPEED_IO_BROWSERTIME__VISUAL_METRICS=false
ENV SITESPEED_IO_BROWSERTIME__HEADLESS=true
ENV PATH="/usr/local/bin:${PATH}"
@ -15,13 +15,15 @@ RUN echo "deb http://deb.debian.org/debian/ unstable main contrib non-free" >> /
apt-get install -y --no-install-recommends firefox tcpdump iproute2 ca-certificates sudo --no-install-recommends --no-install-suggests && \
# Cleanup
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/* /tmp/*
&& rm -rf /var/lib/apt/lists/* /tmp/*
# Install sitespeed.io
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN CHROMEDRIVER_SKIP_DOWNLOAD=true EGDEDRIVER_SKIP_DOWNLOAD=true npm install --production && npm cache clean --force && npm uninstall npm -g
COPY tools/postinstall.js /usr/src/app/tools/postinstall.js
RUN CHROMEDRIVER_SKIP_DOWNLOAD=true EGDEDRIVER_SKIP_DOWNLOAD=true npm install --omit=dev --omit=optional && npm cache clean --force && npm uninstall npm npx -g && rm -fR /usr/src/app/node_modules/selenium-webdriver/bin
WORKDIR /usr/src/app
COPY docker/scripts/start-slim.sh /start.sh

11
HELP.md
View File

@ -2,7 +2,7 @@
We want to make sitespeed.io one of the best web performance tool in the world and we hope you can help us!
## Developers
We love to have more people involved in improving sitespeed.io. We are constantly working on adding more documentation and trying to write more information in the issues so its easier to help out. If there's an [issue](https://github.com/sitespeedio/sitespeed.io/issues) that you want to take on, ping the the issue and we can help you get started. You can also [join our Slack channel](https://join.slack.com/t/sitespeedio/shared_invite/zt-296jzr7qs-d6DId2KpEnMPJSQ8_R~WFw) if you need help!
We love to have more people involved in improving sitespeed.io. We are constantly working on adding more documentation and trying to write more information in the issues so its easier to help out. If there's an [issue](https://github.com/sitespeedio/sitespeed.io/issues) that you want to take on, ping the the issue and we can help you get started. You can also [join our Slack channel](https://join.slack.com/t/sitespeedio/shared_invite/zt-296jzr7qs-d6DId2KpEnMPJSQ8_R~WFw) if you need help! You can start by reading the [developer documentation](https://www.sitespeed.io/documentation/sitespeed.io/developers/).
## Designers
As a designer there's a lot you can do: You can help us improve the HTML result pages. Maybe we should restructure the metrics ? Or could the header/footer look better? You could also have look at [https://www.sitespeed.io](https://www.sitespeed.io/) where we have all the documentation. You can pretty much help us with everything, no one in the core team got design skills :)
@ -10,13 +10,6 @@ As a designer there's a lot you can do: You can help us improve the HTML result
## Documentation
Documentation is fun and it is the core of making sitespeed.io easy to use. We got a [special documentation tag for issues](https://github.com/sitespeedio/sitespeed.io/issues?q=is%3Aissue+is%3Aopen+label%3Adocumentation) that you can use to find where we know we lack documentation. Fixing spelling mistakes is great. Or rewrite parts that you think is too complicated. You can find what you need to send a PR to the documentation [here](https://github.com/sitespeedio/sitespeed.io/tree/main/docs).
## Tests
We lack unit tests. You can read about [our testing pipeline](https://www.sitespeed.io/releasing-with-confidence/) that works good for us but more unit tests are always good. A good start is adding support for the code in the [support library](https://github.com/sitespeedio/sitespeed.io/tree/main/lib/support).
## Companies
Do you use sitespeed.io in your everyday work? Then we have a perfect proposition for you! Have a hack day with focus on sitespeed.io for your team and contribute back. Pick one the things in the **Help wanted** section or make your plugin Open Source and tell us about it. Or maybe there's a something you think is missing? Create it. Contribute back.
# Help wanted
You can help us:
* Help us improve the documentation. We love your feedback and help [https://github.com/sitespeedio/sitespeed.io/tree/main/docs](https://github.com/sitespeedio/sitespeed.io/tree/main/docs).
Do you use sitespeed.io in your everyday work? Then go to the [sponsor page](https://www.sitespeed.io/sponsor/).

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2012-2023 Peter Hedenskog
Copyright (c) 2012-2026 Peter Hedenskog
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,10 +1,12 @@
# sitespeed.io
![Unit tests](https://github.com/sitespeedio/sitespeed.io/workflows/Unit%20tests/badge.svg?branch=main)
![Linux browsers](https://github.com/sitespeedio/sitespeed.io/workflows/Linux%20browsers/badge.svg?branch=main)
![Docker](https://github.com/sitespeedio/sitespeed.io/workflows/Docker/badge.svg?branch=main)
![Windows Edge](https://github.com/sitespeedio/sitespeed.io/workflows/Windows%20Edge/badge.svg?branch=main)
![OSX Safari](https://github.com/sitespeedio/sitespeed.io/workflows/OSX%20Safari/badge.svg?branch=main)
[![Unit tests](https://github.com/sitespeedio/sitespeed.io/actions/workflows/unittests.yml/badge.svg)](https://github.com/sitespeedio/sitespeed.io/actions/workflows/unittests.yml)
[![Linux browsers](https://github.com/sitespeedio/sitespeed.io/actions/workflows/linux.yml/badge.svg)](https://github.com/sitespeedio/sitespeed.io/actions/workflows/linux.yml)
[![Docker](https://github.com/sitespeedio/sitespeed.io/actions/workflows/docker.yml/badge.svg)](https://github.com/sitespeedio/sitespeed.io/actions/workflows/docker.yml)
[![Docker security scan](https://github.com/sitespeedio/sitespeed.io/actions/workflows/docker-scan.yml/badge.svg)](https://github.com/sitespeedio/sitespeed.io/actions/workflows/docker-scan.yml)
[![Windows Edge](https://github.com/sitespeedio/sitespeed.io/actions/workflows/windows.yml/badge.svg)](https://github.com/sitespeedio/sitespeed.io/actions/workflows/windows.yml)
[![OSX Safari](https://github.com/sitespeedio/sitespeed.io/actions/workflows/safari.yml/badge.svg)](https://github.com/sitespeedio/sitespeed.io/actions/workflows/safari.yml)
[![Test upload functionality](https://github.com/sitespeedio/sitespeed.io/actions/workflows/upload.yml/badge.svg)](https://github.com/sitespeedio/sitespeed.io/actions/workflows/upload.yml)
[![Downloads][downloads-image]][downloads-url]
[![Docker][docker-image]][docker-url]
[![Stars][stars-image]][stars-url]
@ -12,7 +14,8 @@
[![Changelog #212][changelog-image]][changelog-url]
[Website](https://www.sitespeed.io/) | [Documentation](https://www.sitespeed.io/documentation/sitespeed.io/) | [Changelog](https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md) | [Mastodon](https://fosstodon.org/@sitespeedio)
[Website](https://www.sitespeed.io/) | [Documentation](https://www.sitespeed.io/documentation/sitespeed.io/) | [Changelog](https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md) | [Bluesky](https://bsky.app/profile/sitespeed.io) | [Mastodon](https://fosstodon.org/@sitespeedio)
# Table of Contents
@ -191,7 +194,7 @@ With these insights, you can make informed decisions about optimizations and tra
### Video Performance Analysis
For visual feedback, `sitespeed.io` can generate videos, making it easier to see how your site loads in real-time. Here's an sample video:
For visual feedback, `sitespeed.io` can generate videos, making it easier to see how your site loads in real-time. Here's a sample video:
![Video Analysis](https://raw.githubusercontent.com/sitespeedio/sitespeed.io/main/docs/img/barack.gif)

View File

@ -8,10 +8,10 @@ import get from 'lodash.get';
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
import { findUpSync } from 'find-up';
import { BrowsertimeEngine, configureLogging } from 'browsertime';
import { getURLs } from '../lib/cli/util.js';
import { findUpSync } from '../lib/support/fileUtil.js';
import {config as browsertimeConfig} from '../lib/plugins/browsertime/index.js';

View File

@ -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 && apiOptions.android.enabled === true)
) {
apiOptions.api.testType = 'android';
} else if (apiOptions.safari && apiOptions.safari.ios) {
apiOptions.api.testType = 'ios';

View File

@ -11,6 +11,7 @@ RUN npm --version
RUN npm install @sitespeed.io/plugin-lighthouse -g --production
RUN npm install @sitespeed.io/plugin-gpsi -g --production
RUN npm install @sitespeed.io/plugin-influxdb -g --production
VOLUME /sitespeed.io
WORKDIR /sitespeed.io

View File

@ -1,7 +1,7 @@
version: '3'
services:
grafana:
image: grafana/grafana:11.0.0
image: grafana/grafana:12.2.0
hostname: grafana
depends_on:
- graphite

View File

@ -1,31 +1,50 @@
#!/bin/bash
firefox --version
firefox --version 2>/dev/null
SITESPEEDIO=/usr/src/app/bin/sitespeed.js
MAX_OLD_SPACE_SIZE="${MAX_OLD_SPACE_SIZE:-2048}"
WORKDIR_UID=$(stat -c "%u" .)
WORKDIR_GID=$(stat -c "%g" .)
# write files owned by the user who runs the container
# if your volume is mounted at /sitespeed.io, use it as CWD
[[ -d /sitespeed.io && "$PWD" = "/" ]] && cd /sitespeed.io
# Create user with the same UID and GID as the owner of the working directory, which will be used
# to execute node. This is partly for security and partly so output files won't be owned by root.
groupadd --non-unique --gid $WORKDIR_GID sitespeedio
useradd --non-unique --uid $WORKDIR_UID --gid $WORKDIR_GID --home-dir /tmp sitespeedio
uid=$(stat -c '%u' . 2>/dev/null || echo 0)
gid=$(stat -c '%g' . 2>/dev/null || echo 0)
if [[ "$uid" -ne 0 && "$gid" -ne 0 ]]; then
if ! getent group "$gid" >/dev/null 2>&1; then
groupadd -g "$gid" sitespeedio-host 2>/dev/null || true
fi
if ! getent passwd "$uid" >/dev/null 2>&1; then
useradd -u "$uid" -g "$gid" -M -d /tmp -s /bin/bash sitespeedio-host 2>/dev/null || true
fi
fi
run_as_host() {
if [[ "$uid" -ne 0 && "$gid" -ne 0 ]]; then
HOME=/tmp chroot --skip-chdir --userspec="+${uid}:+${gid}" / "$@"
else
HOME=/tmp "$@"
fi
}
function execNode(){
run_as_host node "$@"
}
# Need to explictly override the HOME directory to prevent dconf errors like:
# (firefox:2003): dconf-CRITICAL **: 00:31:23.379: unable to create directory '/root/.cache/dconf': Permission denied. dconf will not work properly.
export HOME=/tmp
# Inspired by docker-selenium way of shutting down
function shutdown {
kill -s SIGTERM ${PID}
wait $PID
}
chroot --skip-chdir --userspec='sitespeedio:sitespeedio' / node --max-old-space-size=$MAX_OLD_SPACE_SIZE $SITESPEEDIO "$@" &
execNode --max-old-space-size=$MAX_OLD_SPACE_SIZE $SITESPEEDIO "$@" &
PID=$!

View File

@ -1,5 +1,30 @@
#!/bin/bash
#
set -e
# write files owned by the user who runs the container
# if your volume is mounted at /sitespeed.io, use it as CWD
[[ -d /sitespeed.io && "$PWD" = "/" ]] && cd /sitespeed.io
uid=$(stat -c '%u' . 2>/dev/null || echo 0)
gid=$(stat -c '%g' . 2>/dev/null || echo 0)
if [[ "$uid" -ne 0 && "$gid" -ne 0 ]]; then
if ! getent group "$gid" >/dev/null 2>&1; then
groupadd -g "$gid" sitespeedio-host 2>/dev/null || true
fi
if ! getent passwd "$uid" >/dev/null 2>&1; then
useradd -u "$uid" -g "$gid" -M -d /tmp -s /bin/bash sitespeedio-host 2>/dev/null || true
fi
fi
run_as_host() {
if [[ "$uid" -ne 0 && "$gid" -ne 0 ]]; then
HOME=/tmp chroot --skip-chdir --userspec="+${uid}:+${gid}" / "$@"
else
HOME=/tmp "$@"
fi
}
# All browsers do not exist in all architectures.
if [[ `which google-chrome` ]]; then
google-chrome --version
@ -8,13 +33,16 @@ elif [[ `which chromium-browser` ]]; then
fi
if [[ `which firefox` ]]; then
firefox --version
firefox --version 2>/dev/null
fi
if [[ `which microsoft-edge` ]]; then
microsoft-edge --version
fi
ARCH="$(uname -m)"
echo "Architecture: $ARCH"
BROWSERTIME=/usr/src/app/bin/browsertimeWebPageReplay.js
SITESPEEDIO=/usr/src/app/bin/sitespeed.js
export DBUS_SESSION_BUS_ADDRESS=/dev/null
@ -37,20 +65,12 @@ else
WPR_HTTPS_PORT=${WPR_HTTPS_PORT:-443}
fi
WORKDIR_UID=$(stat -c "%u" .)
WORKDIR_GID=$(stat -c "%g" .)
# Create user with the same UID and GID as the owner of the working directory, which will be used
# to execute node. This is partly for security and partly so output files won't be owned by root.
groupadd --non-unique --gid $WORKDIR_GID sitespeedio
useradd --non-unique --uid $WORKDIR_UID --gid $WORKDIR_GID --home-dir /tmp sitespeedio
# Need to explictly override the HOME directory to prevent dconf errors like:
# (firefox:2003): dconf-CRITICAL **: 00:31:23.379: unable to create directory '/root/.cache/dconf': Permission denied. dconf will not work properly.
export HOME=/tmp
function execNode(){
chroot --skip-chdir --userspec='sitespeedio:sitespeedio' / node "$@"
run_as_host node "$@"
}
# If we run Chrome on Android, we need to start the ADB server
@ -108,7 +128,7 @@ function runWebPageReplay() {
execNode --max-old-space-size=$MAX_OLD_SPACE_SIZE $SITESPEEDIO --browsertime.firefox.preference security.OCSP.enabled:0 --browsertime.firefox.acceptInsecureCerts true --browsertime.firefox.preference network.dns.forceResolve:127.0.0.1 --browsertime.chrome.webPageReplayHostResolver --browsertime.chrome.webPageReplayHTTPPort $WPR_HTTP_PORT --browsertime.chrome.webPageReplayHTTPSPort $WPR_HTTPS_PORT --browsertime.connectivity.engine throttle --browsertime.connectivity.throttle.localhost --replay --browsertime.connectivity.profile custom --browsertime.connectivity.rtt $LATENCY "$@" &
PID=$!
trap shutdown SIGTERM SIGINT
wait $PID
EXIT_STATUS=$?

View File

@ -1,3 +1,3 @@
source "https://rubygems.org"
gem 'github-pages', group: :jekyll_plugins
ruby '3.0.0'
ruby '~> 3.0.0'

View File

@ -27,9 +27,10 @@
<div class="col-1-5">
<h3>Connect</h3>
<ul>
<li><a rel="me" href="https://fosstodon.org/@sitespeedio">Mastodon</a></li>
<li><a rel="me" href="https://bsky.app/profile/sitespeed.io">Bluesky</a></li>
<li><a href="https://github.com/sitespeedio">GitHub</a></li>
<li><a href="https://join.slack.com/t/sitespeedio/shared_invite/zt-296jzr7qs-d6DId2KpEnMPJSQ8_R~WFw">Slack</a></li>
<li><a rel="me" href="https://fosstodon.org/@sitespeedio">Mastodon</a></li>
</div>
<div class="col-1-5">
<h3>sitespeed.io</h3>

View File

@ -2,4 +2,4 @@
* * *
Join the effort to make Sitespeed.io even better! Whether you're a developer, writer, or UX expert, there are many ways you can contribute to the improvement of our tool. Check out our [help section](https://github.com/sitespeedio/sitespeed.io/blob/main/HELP.md) and [full issue list](https://github.com/sitespeedio/sitespeed.io/issues) for opportunities to get involved. And a big thank you to [all those]((https://github.com/sitespeedio/sitespeed.io/blob/main/CONTRIBUTORS.md)) who have already made contributions through pull requests or ideas. Your support is greatly appreciated.
Join the effort to make Sitespeed.io even better! Whether you're a developer, writer, or UX expert, there are many ways you can contribute to the improvement of our tool. Check out our [help section](https://github.com/sitespeedio/sitespeed.io/blob/main/HELP.md) and [full issue list](https://github.com/sitespeedio/sitespeed.io/issues) for opportunities to get involved. And a big thank you to [all those](https://github.com/sitespeedio/sitespeed.io/blob/main/CONTRIBUTORS.md) who have already made contributions through pull requests or ideas. Your support is greatly appreciated.

View File

@ -1 +1 @@
23.4.1
26.3.1

View File

@ -1 +1 @@
8.0.2
8.1.3

View File

@ -1 +1 @@
0.4.5
1.7.1

View File

@ -1 +1 @@
35.5.0
39.3.1

View File

@ -1 +1 @@
0.5.6
1.2.0

View File

@ -41,7 +41,7 @@ layout: compress
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{site.baseurl}}/img/ico/sitespeed.io-72.png">
<link rel="apple-touch-icon-precomposed" href="{{site.baseurl}}/img/ico/sitespeed.io-57.png">
<link rel="shortcut icon" href="{{site.baseurl}}/img/ico/sitespeed.io.ico">
<link type="application/atom+xml" href="https://www.sitespeed.io/feed/index.xml" rel="alternate" />
<link type="application/atom+xml" href="https://www.sitespeed.io/feed/blog.xml" rel="alternate" />
<style>
{% include css/default.css %}

View File

@ -54,6 +54,8 @@ android
--android.pretestPowerPress, --androidPretestPowerPress Press the power button on the phone before a test starts. [boolean] [default: false]
--android.pretestPressHomeButton, --androidPretestPressHomeButton Press the home button on the phone before a test starts. [boolean] [default: false]
--android.verifyNetwork, --androidVerifyNetwork Before a test start, verify that the device has a Internet connection by pinging 8.8.8.8 (or a configurable domain with --androidPingAddress) [boolean] [default: false]
--android.simpleperf, --androidSimpleperf Path to the Simpleperf profiler from the Android NDK. [string]
--android.perfettoTrace, --androidPerfettoTrace Collect a perfetto trace with the given configuration. [default: false]
--android.gnirehtet, --gnirehtet Start gnirehtet and reverse tethering the traffic from your Android phone. [boolean] [default: false]
firefox
@ -66,7 +68,7 @@ firefox
--firefox.developer Use Firefox Developer. Works on OS X. For Linux you need to set the binary path. [boolean]
--firefox.preference Extra command line arguments to pass Firefox preferences by the format key:value To add multiple preferences, repeat --firefox.preference once per argument.
--firefox.args Extra command line arguments to pass to the Firefox process (e.g. --MOZ_LOG). To add multiple arguments to Firefox, repeat --firefox.args once per argument.
--firefox.includeResponseBodies Include response bodies in HAR [choices: "none", "all", "html"] [default: "none"]
--firefox.includeResponseBodies Include response bodies in HAR [choices: "none", "all"] [default: "none"]
--firefox.appconstants Include Firefox AppConstants information in the results [boolean] [default: false]
--firefox.acceptInsecureCerts Accept insecure certs [boolean]
--firefox.windowRecorder Use the internal compositor-based Firefox window recorder to emit PNG files for each frame that is a meaningful change. The PNG output will further be merged into a variable frame rate video for analysis. Use this instead of ffmpeg to record a video (you still need the --video flag). [boolean] [default: false]
@ -79,7 +81,7 @@ firefox
--firefox.geckoProfilerParams.interval Sampling interval in ms. Defaults to 1 on desktop, and 4 on android. [number]
--firefox.geckoProfilerParams.bufferSize Buffer size in elements. Default is ~90MB. [number] [default: 13107200]
--firefox.perfStats Collect gecko performance statistics as measured internally by the firefox browser. See https://searchfox.org/mozilla-central/source/tools/performance/PerfStats.h#24-33 [boolean] [default: false]
--firefox.perfStatsParams.mask Mask to decide which features to enable [number] [default: 4294967295]
--firefox.perfStatsParams.features Comma-separated list of PerfStats features to enable. If not provided, all features will be enabled. [string]
--firefox.collectMozLog Collect the MOZ HTTP log (by default). See --firefox.setMozLog if you need to specify the logs you wish to gather. [boolean]
--firefox.powerConsumption Enable power consumption collection (in Wh). To get the consumption you also need to set firefox.geckoProfilerParams.features to include power. [boolean] [default: false]
--firefox.setMozLog Use in conjunction with firefox.collectMozLog to set MOZ_LOG to something specific. Without this, the HTTP logs will be collected by default [default: "timestamp,nsHttp:5,cache2:5,nsSocketTransport:5,nsHostResolver:5"]
@ -111,7 +113,7 @@ video
--videoParams.threads Number of threads to use for video recording. Default is determined by ffmpeg. [default: 0]
edge
--edge.edgedriverPath Path to custom msedgedriver version (need to match your Egde version).
--edge.edgedriverPath Path to custom msedgedriver version (need to match your Edge version).
--edge.binaryPath Path to custom Edge binary
safari
@ -124,13 +126,12 @@ safari
--safari.useSimulator If the value of useSimulator is true, safaridriver will only use iOS Simulator hosts. If the value of safari:useSimulator is false, safaridriver will not use iOS Simulator hosts. NOTE: An Xcode installation is required in order to run WebDriver tests on iOS Simulator hosts. [boolean] [default: false]
Screenshot
--screenshot Save one screenshot per iteration. [boolean] [default: false]
--screenshotLCP Save one screenshot per iteration that shows the largest contentful paint element (if the browser supports LCP). [boolean] [default: false]
--screenshotLS Save one screenshot per iteration that shows the layout shift elements (if the browser supports layout shift). [boolean] [default: false]
--screenshotParams.type Set the file type of the screenshot [choices: "png", "jpg"] [default: "jpg"]
--screenshotParams.png.compressionLevel zlib compression level [default: 6]
--screenshotParams.jpg.quality Quality of the JPEG screenshot. 1-100 [default: 80]
--screenshotParams.maxSize The max size of the screenshot (width and height). [default: 2000]
--screenshot Save one screenshot per iteration. [boolean] [default: false]
--screenshotLCP Save one screenshot per iteration that shows the largest contentful paint element (if the browser supports LCP). [boolean] [default: false]
--screenshotLS Save one screenshot per iteration that shows the layout shift elements (if the browser supports layout shift). [boolean] [default: false]
--screenshotParams.type Set the file type of the screenshot [choices: "png", "jpg"] [default: "jpg"]
--screenshotParams.jpg.quality Quality of the JPEG screenshot. 1-100 [default: 80]
--screenshotParams.maxSize The max size of the screenshot (width and height). [default: 2000]
PageLoad
--pageCompleteCheck Supply a JavaScript (inline or JavaScript file) that decides when the browser is finished loading the page and can start to collect metrics. The JavaScript snippet is repeatedly queried to see if page has completed loading (indicated by the script returning true). Use it to fetch timings happening after the loadEventEnd. By default the tests ends 2 seconds after loadEventEnd. Also checkout --pageCompleteCheckInactivity and --pageCompleteCheckPollTimeout
@ -177,7 +178,6 @@ Options:
--visualElements, --visuaElements Collect Visual Metrics from elements. Works only with --visualMetrics turned on. By default you will get visual metrics from the largest image within the view port and the largest h1. You can also configure to pickup your own defined elements with --scriptInput.visualElements [boolean]
--visualMetricsPerceptual Collect Perceptual Speed Index when you run --visualMetrics. [boolean]
--visualMetricsContentful Collect Contentful Speed Index when you run --visualMetrics. [boolean]
--visualMetricsPortable Use the portable visual-metrics processing script (no ImageMagick dependencies). [boolean] [default: true]
--visualMetricsKeyColor Collect Key Color frame metrics when you run --visualMetrics. Each --visualMetricsKeyColor supplied must have 8 arguments: key name, red channel (0-255) low and high, green channel (0-255) low and high, blue channel (0-255) low and high, fraction (0.0-1.0) of pixels that must match each channel. [array]
--scriptInput.visualElements Include specific elements in visual elements. Give the element a name and select it with document.body.querySelector. Use like this: --scriptInput.visualElements name:domSelector see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors. Add multiple instances to measure multiple elements. Visual Metrics will use these elements and calculate when they are visible and fully rendered.
--scriptInput.longTask, --minLongTaskLength Set the minimum length of a task to be categorised as a CPU Long Task. It can never be smaller than 50. The value is in ms and only works in Chromium browsers at the moment. [number] [default: 50]
@ -200,11 +200,13 @@ Options:
--script Add custom Javascript to run after the page has finished loading to collect metrics. If a single js file is specified, it will be included in the category named "custom" in the output json. Pass a folder to include all .js scripts in the folder, and have the folder name be the category. Note that --script can be passed multiple times.
--userAgent Override user agent
--appendToUserAgent Append a String to the user agent. Works in Chrome/Edge and Firefox.
--logLevel Manually set the min log level [string] [choices: "trace", "verbose", "debug", "info", "warning", "error"]
-q, --silent Only output info in the logs, not to the console. Enter twice to suppress summary line. [count]
-o, --output Specify file name for Browsertime data (ex: 'browsertime'). Unless specified, file will be named browsertime.json
--har Specify file name for .har file (ex: 'browsertime'). Unless specified, file will be named browsertime.har
--skipHar Pass --skipHar to not collect a HAR file. [boolean]
--gzipHar Pass --gzipHar to gzip the HAR file [boolean]
--cleanSensitiveHeaders Pass --cleanSensitiveHeaders to remove sensitive headers in the HAR file [boolean]
--config Path to JSON config file. You can also use a .browsertime.json file that will automatically be found by Browsertime using find-up.
--viewPort Size of browser window WIDTHxHEIGHT or "maximize". Note that "maximize" is ignored for xvfb.
--resultDir Set result directory for the files produced by Browsertime
@ -217,6 +219,7 @@ Options:
--preURL, --warmLoad A URL that will be accessed first by the browser before the URL that you wanna analyze. Use it to fill the browser cache.
--preURLDelay, --warmLoadDealy Delay between preURL and the URL you want to test (in milliseconds) [default: 1500]
--userTimingAllowList All userTimings are captured by default this option takes a regex that will allow which userTimings to capture in the results.
--userTimingBlockList All userTimings are captured by default this option takes a regex that will block some usertimings in the results.
--headless Run the browser in headless mode. Works for Firefox and Chrome. [boolean] [default: false]
--extension Path to a WebExtension to be installed in the browser. Note that --extension can be passed multiple times.
--cjs Load scripting files that ends with .js as common js. Default (false) loads files as esmodules. [boolean] [default: false]

View File

@ -1,6 +1,6 @@
---
layout: default
title: Documentation Browsertime 22
title: Documentation Browsertime 26
description: Read about all you can do with Browsertime.
keywords: tools, documentation, web performance
nav: documentation
@ -9,7 +9,7 @@ image: https://www.sitespeed.io/img/sitespeed-2.0-twitter.png
twitterdescription: Documentation for Browsertime.
---
# Documentation v22
# Documentation v26
<img src="{{site.baseurl}}/img/logos/browsertime.png" class="pull-right img-big" alt="Browsertime logo" width="200" height="175">

View File

@ -16,23 +16,55 @@ twitterdescription:
{:toc}
## Introduction
The online test is the simplest way to deploy your own version of sitespeed.io. You can add tests through a web GUI or by using the sitespeed.io command line, which can pass the tests to your test server.
The online test is the simplest way to deploy your own version of sitespeed.io. You can add tests through a web GUI or by using the sitespeed.io command line, which pass the tests to your test server. This means that you can use your dedicated test machines both for monitoring and one off performance tests.
This method is ideal for small, medium, and large companies and organizations that need a GUI for running performance tests.
![Add your tests]({{site.baseurl}}/img/onlinestartscreen.png)
{: .img-thumbnail}
To get started, you will need the sitespeed.io server, at least one sitespeed.io test runner, and the necessary dependencies (a message broker like Redis, PostgreSQL, and a place to store the result pages).
![Search]({{site.baseurl}}/img/onlinesearch.png)
{: .img-thumbnail}
This method is ideal for small, medium, and large companies and organizations that also wants a GUI for running performance tests.
To get started, you will need the sitespeed.io server, at least one sitespeed.io test runner, and the necessary dependencies (a message broker like Redis/KeyDB, PostgreSQL, and a place to store the result pages).
![The setup]({{site.baseurl}}/img/onlinetestsetup.png)
{: .img-thumbnail}
e
## Installation
For small businesses needing to test one or a few websites, you can deploy everything on a single server. For large companies planning to run numerous tests, you can distribute the components across multiple servers. If you plan to run tests from various locations worldwide, ensure the web GUI, database, and Redis are located together in the same region.
For small businesses needing to test one or a few websites, you can deploy everything on a single dedicated server. For large companies planning to run many many tests, you can distribute the components across multiple servers. If you plan to run tests from various locations worldwide, ensure the web GUI, database, and KeyDB are located together in the same region since the web GUI is the one that do the most communication with KeyDB and the database.
### Using Docker
It's easy to get the Docker version running on your local Linux or Mac OS machine. Make sure you have [Docker](https://www.docker.com) and [docker compose](https://docs.docker.com/compose/) installed.
1. **Clone the repository:**
```bash
git clone https://github.com/sitespeedio/onlinetest.git
```
2. **Navigate to the project directory:**
```bash
cd onlinetest
```
3. **Start the Docker containers (KeyDB/PostgreSQL/Minio/sitespeed.io server and testrunner):**
```bash
docker compose -f docker-compose.yml -f docker-compose.app.yml up
```
Now you can open your web browser and navigate to [http://127.0.0.1:3000](http://127.0.0.1:3000) to run your first test.
If you are on Linux you need to run `sudo modprobe ifb numifbs=1` to be able to set different connectivities inside of Docker. On Mac you can only run native connectivity when you run inside of Docker.
### Using NodeJS
To get the server and test runner running, you need to install [NodeJS](https://nodejs.org/). Please follow the instructions on [NodeJS](https://nodejs.org/) for your operating system. Install the LTS version (currently, that is NodeJS 20).
### Install the server
#### Install the server
Get the latest release from npm:
@ -40,7 +72,7 @@ Get the latest release from npm:
npm install @sitespeed.io/server -g
```
### Install the test runner
#### Install the test runner
Get the latest release from npm:
@ -51,7 +83,7 @@ npm install @sitespeed.io/testrunner -g
The test runner can either use our [pre-made sitespeed.io Docker container](https://hub.docker.com/r/sitespeedio/sitespeed.io) (in which case you need to install Docker) or use the npm-installed sitespeed.io. If you choose not to use Docker, follow [these instructions](https://www.sitespeed.io/documentation/sitespeed.io/installation/#using-node-js) to get sitespeed.io up and running.
### Install the dependencies
#### Install the dependencies
You need to have KeyDB (or a similar message broker that follow the Redis APIs), PostgreSQL and somewhere to store the HTML result. If you don't want to handle the dependencies yourself you can use [our docker compose file](https://github.com/sitespeedio/onlinetest/blob/main/docker-compose.yml). You need to have Docker and Docker compose installed to run it.
To get the Docker Compose file, the easiest way for testing is to clone the repository:
@ -65,12 +97,14 @@ docker compose up
In the repository you also have a *.env* file that sets up username/passwords for the different services. For KeyDB there's also a *keydb.conf* file that also holds the password.
## Configuration
If you start the applications, the default configuration is used. The configuration for the server is [here](https://github.com/sitespeedio/onlinetest/blob/main/server/config/default.yaml) and for the test runner [here](https://github.com/sitespeedio/onlinetest/blob/main/testrunner/config/default.yaml).
The [.env](https://github.com/sitespeedio/onlinetest/blob/main/.env) is the key for the setup if you use Docker/Docker compose. Most things for your everyday tests can be setup there.
You can (and should) override that configuration with command line parameters, or you can replace the configuration by using your own configuration file. Take a copy of the default ones and reconfigure them the way you need.
You also have specific [configuration files for the server](https://github.com/sitespeedio/onlinetest/blob/main/server/config/default.yaml) and for the [test runner](https://github.com/sitespeedio/onlinetest/blob/main/testrunner/config/default.yaml).
You can override that configuration with command line parameters, or you can replace the configuration by using your own configuration file. Take a copy of the default ones and reconfigure them the way you need. When you start the server and the testrunnner you add `--config /path/to/file` to your new files and these will be used.
### YAML / JSON
The configuration files can be YAML or JSON. Using a configuration file should be your first choice.
The configuration files can be YAML or JSON. Using a configuration file should be your first choice because then you are in full control.
You can provide a configuration file using the command line: `--config`.
@ -90,15 +124,14 @@ You can override that with `--redis.host MY_HOST`.
### sitespeed.io configuration
You can also pre-configure how you will use sitespeed.io. For example, check out the [default configuration](https://github.com/sitespeedio/onlinetest/blob/main/server/config/sitespeed.json) where we set up S3 and how you access the results.
You can also pre-configure how you will use sitespeed.io on each testrunner.
The configuration for sitespeed.io uses inheritance. On the server, you can configure a sitespeed.io configuration. That configuration will be passed on to the test runner and merged with the sitespeed.io configuration on the test runner. Finally, this configuration will be merged with the configuration from the CLI API or the GUI. It looks like this:
The configuration for sitespeed.io uses inheritance. On the server, you can configure a sitespeed.io configuration in the Docker compose file. That configuration will be passed on to the test runner and merged with the sitespeed.io configuration on the test runner. Finally, this configuration will be merged with the configuration from the CLI API or the GUI. It looks like this:
**server -> test runner -> CLI/GUI configurations**
This way, you can configure some parts globally (in the server config), some things locally (per test runner), and some parts individually per test.
## The server
The server will host the HTML GUI and the API. There's a lot of things you can configure on the server.
@ -112,9 +145,14 @@ When you have your own configuration, you provide it like this:
sitespeed.io-server --config path/to/file
```
Or if you use Docker:
```bash
docker run --rm -v "$(pwd)":/config sitespeedio/server:{% include version/server.txt %} --config /config/config.yml
```
### Database and message broker
The first thing you need to do is configure the PostgreSQL and Redis connections to match your setup. The default setup uses localhost and default passwords. Make sure to change these settings to match your specific configuration.
The first thing you need to do is configure the PostgreSQL and KeyDB connections to match your setup. The default setup uses localhost and default passwords. Make sure to change these settings to match your specific configuration.
### HTTPS
@ -159,8 +197,6 @@ Then when you use sitespeed.io and the API make sure to use`--api.key MY_KEY` to
You probably want to limit which domains can be tested through the GUI on the server. You can do this with the *validTestDomains* configuration. This needs to be a regular expression that will be matched against the hostname of the URL that you want to test.
By default, Wikipedia domains are set as valid, so you will want to change that.
Here are a couple of examples:
* To test all URLs on https://www.sitespeed.io: `validTestDomains: "^www\.sitespeed\.io$"`
@ -211,7 +247,17 @@ localization:
If your testrunner is installed globally, you start it by running `sitespeed.io-testrunner`.
When you have your own configuration, you provide it like this:
`sitespeed.io-testrunner --config path/to/file`.
```bash
sitespeed.io-testrunner --config path/to/file
```
If you use Docker, you can start it like this:
```bash
docker run -v "$(pwd)":/config --cap-add=NET_ADMIN -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp sitespeedio/testrunner:{% include version/testrunner.txt %} --config /config/config.json
```
### Message broker
Your testrunner needs to be able to connect to your Redis-like broker, so make sure to configure it accordingly in your configuration file.
@ -284,11 +330,11 @@ If you want to have multiple phones of the same model work on the same queue (to
If you choose to use Docker, set `useDocker` to true in the configuration. Then all you need to do is make sure Docker is installed on the server.
You can configure which Docker container to use. Normally, when you run sitespeed.io, you should specify the exact sitespeed.io version, like `sitespeedio/sitespeed.io:36.0.0`, to know exactly which version you are using. However, if you want to deploy your test runner and let it auto-update, you can use `sitespeedio/sitespeed.io:latest` as the tag. Ensure that you update the container once per day with:
You can configure which Docker container to use. Normally, when you run sitespeed.io, you should specify the exact sitespeed.io version, like `sitespeedio/sitespeed.io:35.0.0`, to know exactly which version you are using. However, if you want to deploy your test runner and let it auto-update, you can use `sitespeedio/sitespeed.io:35` as the tag. Ensure that you update the container once per day with:
```yaml
docker:
container: "sitespeedio/sitespeed.io:latest"
container: "sitespeedio/sitespeed.io:35"
```
If you try out the Docker containers locally on your machine, you need to remember remember that localhost inside the container isn't automatically the same as localhost on the server. You can read about it [here](https://www.sitespeed.io/documentation/sitespeed.io/docker/#access-localhost).

View File

@ -129,6 +129,18 @@ You can also use the <code>--urlAlias</code> if you want to give the page a frie
docker run --rm -v "$(pwd):/sitespeed.io" sitespeedio/sitespeed.io:{% include version/sitespeed.io.txt %} --useHash --urlAlias super --urlAlias duper https://www.sitespeed.io/#/super https://www.sitespeed.io/#/duper
~~~
### How do I test single point of failure (SPOF)?
You can use the dommain unreachable.sitespeed.io that you can connect to but it will be really slow.
For example, you have a web site that load assets from cdn1.readspeaker.com inside of the head tag and you want to test what happens if that domain is really slow. You can do that using Chrome and add this argument.
~~~bash
--chrome.args='--host-resolver-rules=MAP cdn1.readspeaker.com unreachable.sitespeed.io'
~~~
That will make all requests that uses cdn1.readspeaker.com instead access unreachable.sitespeed.io that will slow down everything.
### Running tests from multiple locations
Can I test the same URLs from different locations and how do I make sure they don't override each others data in Graphite?

View File

@ -21,7 +21,7 @@ Browser
--browsertime.pageCompleteCheckStartWait, --pageCompleteCheckStartWait The time in ms to wait for running the page complete check for the first time. Use this when you have a pageLoadStrategy set to none [number] [default: 500]
--browsertime.pageCompleteCheckNetworkIdle, --pageCompleteCheckNetworkIdle Use the network log instead of running JavaScript to decide when to end the test. This will wait for 5 seconds of no network activity before it ends the test. This can be used with Chrome/Edge and Firefox. [boolean] [default: false]
--browsertime.pageLoadStrategy, --pageLoadStrategy Set the strategy to waiting for document readiness after a navigation event. After the strategy is ready, your pageCompleteCheck will start running. This only work for Firefox and Chrome and please check which value each browser implements. [string] [choices: "eager", "none", "normal"] [default: "none"]
--browsertime.script, --script Add custom Javascript that collect metrics and run after the page has finished loading. Note that --script can be passed multiple times if you want to collect multiple metrics. The metrics will automatically be pushed to the summary/detailed summary and each individual page + sent to Graphite/InfluxDB.
--browsertime.script, --script Add custom Javascript that collect metrics and run after the page has finished loading. Note that --script can be passed multiple times if you want to collect multiple metrics. The metrics will automatically be pushed to the summary/detailed summary and each individual page + sent to Graphite
--browsertime.injectJs, --injectJs Inject JavaScript into the current page at document_start. More info: https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts
--browsertime.selenium.url Configure the path to the Selenium server when fetching timings using browsers. If not configured the supplied NodeJS/Selenium version is used.
--browsertime.viewPort, --viewPort The browser view port size WidthxHeight like 400x300 [default: "1366x708"]
@ -35,7 +35,7 @@ Browser
--browsertime.visualMetricsPerceptual, --visualMetricsPerceptual Collect Perceptual Speed Index when you run --visualMetrics. [boolean]
--browsertime.visualMetricsContentful, --visualMetricsContentful Collect Contentful Speed Index when you run --visualMetrics. [boolean]
--browsertime.visualElements, --visualElements Collect Visual Metrics from elements. Works only with --visualMetrics turned on. By default you will get visual metrics from the largest image within the view port and the largest h1. You can also configure to pickup your own defined elements with --scriptInput.visualElements [boolean]
--browsertime.scriptInput.visualElements, --scriptInput.visualElements Include specific elements in visual elements. Give the element a name and select it with document.body.querySelector. Use like this: --scriptInput.visualElements name:domSelector . Add multiple instances to measure multiple elements. Visual Metrics will use these elements and calculate when they are visible and fully rendered.
--browsertime.scriptInput.visualElements, --scriptInput.visualElements Include specific elements in visual elements. Give the element a name and select it with document.body.querySelector. Use like this: --scriptInput.visualElements name:domSelector . If you want to measure multiple elements, use a configuration file with an array for the input. Visual Metrics will use these elements and calculate when they are visible and fully rendered.
--browsertime.scriptInput.longTask, --minLongTaskLength Set the minimum length of a task to be categorised as a CPU Long Task. It can never be smaller than 50. The value is in ms and you make Browsertime collect long tasks using --chrome.collectLongTasks or --cpu. [number] [default: 50]
--browsertime.video, --video Record a video and store the video. Set it to false to remove the video that is created by turning on visualMetrics. To remove fully turn off video recordings, make sure to set video and visualMetrics to false. Requires FFMpeg to be installed. [boolean]
--browsertime.videoParams.framerate, --videoParams.framerate, --fps Frames per second in the video [default: 30]
@ -43,7 +43,7 @@ Browser
--browsertime.videoParams.addTimer, --videoParams.addTimer Add timer and metrics to the video [boolean] [default: true]
--browsertime.videoParams.convert, --videoParams.convert Convert the original video to a viewable format (for most video players). Turn that off to make a faster run. [boolean] [default: true]
--browsertime.cpu, --cpu Easy way to enable both chrome.timeline and CPU long tasks for Chrome and geckoProfile for Firefox [boolean]
--browsertime.userTimingWhitelist, --userTimingWhitelist This option takes a regex that will whitelist which userTimings to capture in the results. All userTimings are captured by default. T
--browsertime.userTimingAllowList, --userTimingAllowList This option takes a regex that will whitelist which userTimings to capture in the results. All userTimings are captured by default.
--axe.enable Run axe tests. Axe will run after all other metrics is collected and will add some extra time to each test. [boolean]
-r, --browsertime.requestheader, --requestheader 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.
--browsertime.cookie, --cookie Cookie that will be added to the request. Add multiple instances to add multiple cookies. Use the following format cookieName=cookieValue. Only works in Chrome and Firefox.
@ -70,7 +70,7 @@ Filmstrip
--filmstrip.showAll Show all screenshots in the filmstrip, independent if they have changed or not. [boolean] [default: false]
Firefox
--browsertime.firefox.includeResponseBodies, --firefox.includeResponseBodies Warning: This do not work at the moment, see https://github.com/sitespeedio/sitespeed.io/issues/4295 [choices: "none", "all", "html"] [default: "none"]
--browsertime.firefox.includeResponseBodies, --firefox.includeResponseBodies Collect response bodies in the HAR [choices: "none", "all"] [default: "none"]
--browsertime.firefox.nightly, --firefox.nightly Use Firefox Nightly. Works on OS X. For Linux you need to set the binary path. [boolean]
--browsertime.firefox.beta, --firefox.beta Use Firefox Beta. Works on OS X. For Linux you need to set the binary path. [boolean]
--browsertime.firefox.developer, --firefox.developer Use Firefox Developer. Works on OS X. For Linux you need to set the binary path. [boolean]
@ -183,21 +183,6 @@ Graphite
--graphite.bulkSize Break up number of metrics to send with each request. [number]
--graphite.messages Define which messages to send to Graphite. By default we do not send data per run, but you can change that by adding run as one of the options [default: ["pageSummary","summary"]]
InfluxDB
--influxdb.protocol The protocol used to store connect to the InfluxDB host. [default: "http"]
--influxdb.host The InfluxDB host used to store captured metrics.
--influxdb.port The InfluxDB port used to store captured metrics. [default: 8086]
--influxdb.username The InfluxDB username for your InfluxDB instance (only for InfluxDB v1)
--influxdb.password The InfluxDB password for your InfluxDB instance (only for InfluxDB v1).
--influxdb.organisation The InfluxDB organisation for your InfluxDB instance (only for InfluxDB v2)
--influxdb.token The InfluxDB token for your InfluxDB instance (only for InfluxDB v2)
--influxdb.version The InfluxDB version of your InfluxDB instance. [default: 1]
--influxdb.database The database name used to store captured metrics. [default: "sitespeed"]
--influxdb.tags A comma separated list of tags and values added to each metric [default: "category=default"]
--influxdb.includeQueryParams Whether to include query parameters from the URL in the InfluxDB keys or not [boolean] [default: false]
--influxdb.groupSeparator Choose which character that will separate a group/domain. Default is underscore, set it to a dot if you wanna keep the original domain name. [default: "_"]
--influxdb.annotationScreenshot Include screenshot (from Browsertime) in the annotation. You need to specify a --resultBaseURL for this to work. [boolean] [default: false]
Plugins
--plugins.list List all configured plugins in the log. [boolean]
--plugins.add Extra plugins that you want to run. Relative or absolute path to the plugin. Specify multiple plugin names separated by comma, or repeat the --plugins.add option
@ -212,11 +197,10 @@ Budget
--budget.removeWorkingResult, --budget.removePassingResult Remove the result of URLs that pass the budget. You can use this if you many URL and only care about the ones that fails your budget. All videos/HTML for the working URLs will be removed if you pass this on. [boolean]
Screenshot
--browsertime.screenshot Set to false to disable screenshots [boolean] [default: true]
--browsertime.screenshotParams.type, --screenshot.type Set the file type of the screenshot [choices: "png", "jpg"] [default: "png"]
--browsertime.screenshotParams.png.compressionLevel, --screenshot.png.compressionLevel zlib compression level [default: 6]
--browsertime.screenshotParams.jpg.quality, --screenshot.jpg.quality Quality of the JPEG screenshot. 1-100 [default: 80]
--browsertime.screenshotParams.maxSize, --screenshot.maxSize The max size of the screenshot (width and height). [default: 2000]
--browsertime.screenshot Set to false to disable screenshots [boolean] [default: true]
--browsertime.screenshotParams.type, --screenshot.type Set the file type of the screenshot [choices: "png", "jpg"] [default: "png"]
--browsertime.screenshotParams.jpg.quality, --screenshot.jpg.quality Quality of the JPEG screenshot. 1-100 [default: 80]
--browsertime.screenshotParams.maxSize, --screenshot.maxSize The max size of the screenshot (width and height). [default: 2000]
Metrics
--metrics.list List all possible metrics in the data folder (metrics.txt). [boolean] [default: false]
@ -282,8 +266,8 @@ HTML
--html.homeurl The URL for the logo in the result [default: "https://www.sitespeed.io/"]
Text
--summary Show brief text summary to stdout [boolean] [default: false]
--summary-detail Show longer text summary to stdout [boolean] [default: false]
--summary Show brief text summary to stdout [boolean] [default: false]
--summaryDetail Show longer text summary to stdout [boolean] [default: false]
Sustainable
--sustainable.enable Test if the web page is sustainable. [boolean]
@ -321,12 +305,11 @@ Options:
-v, --verbose Verbose mode prints progress messages to the console. Enter up to three times (-vvv) to increase the level of detail. [count]
--browsertime.xvfb, --xvfb Start xvfb before the browser is started [boolean] [default: false]
--browsertime.xvfbParams.display, --xvfbParams.display The display used for xvfb [default: 99]
--browsertime.visualMetricsPortable Use the portable visual-metrics processing script (no ImageMagick dependencies). [boolean] [default: true]
--browsertime.enableProfileRun, --enableProfileRun Make one extra run that collects the profiling trace log (no other metrics is collected). For Chrome it will collect the timeline trace, for Firefox it will get the Geckoprofiler trace. This means you do not need to get the trace for all runs and can skip the overhead it produces. [boolean]
--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 trace. [boolean]
--browsertime.enableProfileRun, --enableProfileRun Make one extra run that collects the profiling trace log (no other metrics is collected). For Chrome it will collect the timeline trace, for Firefox it will get the Geckoprofiler trace. This means you do not need to get the trace for all runs and can skip the overhead it produces. You should not run this together with --cpu since that will get a trace for every iteration. [boolean]
--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]
@ -339,13 +322,13 @@ Options:
--outputFolder The folder where the result will be stored. If you do not set it, the result will be stored in "DOMAIN_OR_FILENAME_OR_SLUG/TIMESTAMP" [string]
--copyLatestFilesToBase Copy the latest screenshots to the root folder (so you can include it in Grafana). Do not work together it --outputFolder. [boolean] [default: false]
--firstParty A regex running against each request and categorize it as first vs third party URL. (ex: ".*sitespeed.*"). If you do not set a regular expression parts of the domain from the tested URL will be used: ".*domain.*"
--urlAlias Use an alias for the URL (if you feed URLs from a file you can instead have the alias in the file). You need to pass on the same amount of alias as URLs. The alias is used as the name of the URL on the HTML report and in Graphite/InfluxDB. Pass on multiple --urlAlias for multiple alias/URLs. This will override alias in a file. [string]
--groupAlias Use an alias for the group/domain. You need to pass on the same amount of alias as URLs. The alias is used as the name of the group in Graphite/InfluxDB. Pass on multiple --groupAlias for multiple alias/groups. This do not work for scripting at the moment. [string]
--urlAlias Use an alias for the URL (if you feed URLs from a file you can instead have the alias in the file). You need to pass on the same amount of alias as URLs. The alias is used as the name of the URL on the HTML report and in Graphite. Pass on multiple --urlAlias for multiple alias/URLs. This will override alias in a file. [string]
--groupAlias Use an alias for the group/domain. You need to pass on the same amount of alias as URLs. The alias is used as the name of the group in Graphite. Pass on multiple --groupAlias for multiple alias/groups. This do not work for scripting at the moment. [string]
--utc Use Coordinated Universal Time for timestamps [boolean] [default: false]
--logToFile Store the log for your run into a file in logs/sitespeed.io.log [boolean] [default: false]
--useHash If your site uses # for URLs and # give you unique URLs you need to turn on useHash. By default is it turned off, meaning URLs with hash and without hash are treated as the same URL [boolean] [default: false]
--multi Test multiple URLs within the same browser session (same cache etc). Only works with Browsertime. Use this if you want to test multiple pages (use journey) or want to test multiple pages with scripts. You can mix URLs and scripts (the order will matter): login.js https://www.sitespeed.io/ logout.js - More details: https://www.sitespeed.io/documentation/sitespeed.io/scripting/ [boolean] [default: false]
--name Give your test a name.
--logLevel Manually set the min log level [string] [choices: "trace", "verbose", "debug", "info", "warning", "error"]
-o, --open, --view Open your test result in your default browser (Mac OS or Linux with xdg-open).
--slug Give your test a slug. The slug is used when you send the metrics to your data storage to identify the test and the folder of the tests. The max length of the slug is 200 characters and it can only contain a-z A-Z 0-9 and -_ characters.
--config Path to JSON config file

View File

@ -219,7 +219,7 @@ docker run --rm -v "$(pwd):/sitespeed.io" sitespeedio/sitespeed.io:{% include ve
The CLI will always override the JSON config.
You can also extend another JSON config file. The path needs to be absolute.
You can also extend another JSON config file. The path needs to be absolute. We recommend that you use a configuration file because that makes things easier.
~~~json
{
@ -239,7 +239,7 @@ You can also extend another JSON config file. The path needs to be absolute.
}
~~~
If you have a parameter that you want to repeat, for example setting multiple request headers, the field needs to be an JSON array.
If you have a parameter that you want to repeat, for example setting multiple request headers, the field needs to be an JSON array.
~~~json
{

View File

@ -78,7 +78,7 @@ Using `-v "$(pwd):/sitespeed.io"` will map the current directory inside Docker a
{: .note .note-info}
## Running on Mac M1 ARM
## Running on Mac MX ARM
We have ARM container that will use almost latest version of Chromium (using Microsofts Playwright build) and a newer version of Firefox.
If you plan to run Lighthouse in the +1 container, that will not work. Lighthouse uses its own Chrome installation and at the moment Google do not provide a build that work on ARM Linux.
@ -110,9 +110,19 @@ docker pull sitespeedio/sitespeed.io:X.Y.Z
Then change your start script (or where you start your container) to use the new version number.
You can also pin sitespeed.io to stable versions. Say for example that you want to pin your version to version 35. Then you can use the following version:
```bash
docker pull sitespeedio/sitespeed.io:35
```
Then when we continously release new 35 version, you can just run `docker pull sitespeedio/sitespeed.io:35` and you will get the latest released version of 35.
## Tags and version
In the real world you should always specify the exact version (tag) of the Docker container to make sure you use the same version for every run. If you use the latest tag you will download newer version of the container as they become available, meaning you can have major changes between test runs (version upgrades, dependencies updates, browser versions, etc). So you should always specify a tag after the container name(X.Y.Z). This is important for sitespeed.io/browsertime/Graphite/Grafana containers. It's important for all containers you use. Never use the *latest* tag!
In the real world you should specify the version (tag) of the Docker container to make sure you use the same version for every run. If you use the latest tag you will download newer version of the container as they become available, meaning you can have major changes between test runs (version upgrades, dependencies updates, browser versions, etc). So you should always specify a tag after the container name (X.Y.Z) or (X) or (X.Y). This is important for sitespeed.io/browsertime/Graphite/Grafana containers. It's important for all containers you use. Never use the *latest* tag!
## Synchronise docker machines time with host

View File

@ -20,6 +20,8 @@ You can run it with:
docker run --shm-size=1g --rm -v "$(pwd):/sitespeed.io" sitespeedio/sitespeed.io:{% include version/sitespeed.io.txt %}-plus1 https://www.sitespeed.io/ --plugins.remove @sitespeed.io/plugin-lighthouse
```
You would also need to add the `--gpsi.key YOUR_GPSI_KEY` to sitespeed.io. The GPSI key is provided by Google and you can get it [here](https://cloud.google.com/docs/authentication/api-keys).
The container also includes Lighthouse. We automatically release a new version of the container per release by adding *-plus1* to the tag. If you use Graphite/InfluxDb the score from Lighthouse and GPSI will be automatically stored.
The plugin will send a request to the Google Page Speed Servers and parse the result. The result will look something like this:

View File

@ -1,6 +1,6 @@
---
layout: default
title: Documentation sitespeed.io 31.x
title: Documentation sitespeed.io 39.x
description: Read about all you can do with sitespeed.io.
keywords: tools, documentation, web performance
nav: documentation
@ -9,7 +9,7 @@ image: https://www.sitespeed.io/img/sitespeed-2.0-twitter.png
twitterdescription: Documentation for sitespeed.io.
---
# Documentation v34
# Documentation v39
<img src="{{site.baseurl}}/img/logos/sitespeed.io.png" class="pull-right img-big" alt="sitespeed.io logo" width="200" height="214">
@ -18,7 +18,7 @@ Sitespeed.io is the complete toolbox to test the web performance of your web sit
## Start
* [Introduction](introduction/) - start here if you are new to the project or web performance testing.
* [Installation](installation/) - install using npm, yarn or run our Docker containers.
* [Browsers](browsers/) - collect timings using real browsers. We support Firefox, Chrome, Chrome on Android and limited support for Safari on OS X and iOS.
* [Browsers](browsers/) - collect timings using real browsers. We support Firefox, Chrome, Chrome on Android and limited support for Safari on OS X and iOS.
* [Compare plugin](compare/) - use Mann Whitney U or Wilcox statistical methods to know if you have a regression.
* [Configuration](configuration/) - there's a lot of things you can do with sitespeed.io, lets checkout how!
* [Connectivity](connectivity/) - set the connectivity to emulate real users network conditions.

View File

@ -176,24 +176,6 @@ Here is an example of a fully configured budget file.
}
~~~
If you use WebPageTest you can configure:
~~~json
{
"budget": {
"webpagetest": {
"SpeedIndex": 1000,
"lastVisualChange": 2000,
"render": 800,
"visualComplete": 2000,
"visualComplete95": 2000,
"TTFB": 150,
"fullyLoaded": 3000
}
}
}
~~~
If you use Lighthouse you can configure:
~~~json

View File

@ -283,7 +283,7 @@ In the [open](#opencontext-options) function you can add something like this:
~~~javascript
// Register a logger for this plugin, a unique name so we can filter the log
// And save the log for later
this.log = context.intel.getLogger('sitespeedio.plugin.PLUGIN_NAME');
this.log = context.getLogger('sitespeedio.plugin.PLUGIN_NAME');
this.log.info('Plugin PLUGIN_NAME started');
~~~

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -632,6 +632,29 @@ function addHrefToSidebarTitle() {
});
}
function highlightActiveLinkInSidebar() {
const list = document.location.href.split('/');
const targetURL = decodeURI(list[list.length - 1]);
let element = document.querySelector(`.sidebar a[href*='${targetURL}']`);
if (!element) {
try {
element = document.querySelector(
`.sidebar a[href*='${targetURL.split('#')[0]}']`
);
} catch (e) {
console.error(e);
return;
}
}
if (!element) return;
element.parentElement.classList.add('active');
element.scrollIntoView();
}
function onDomContentLoaded() {
var themeButton = document.querySelectorAll('.theme-toggle');
@ -676,6 +699,7 @@ function onDomContentLoaded() {
initTooltip();
fixTable();
addHrefToSidebarTitle();
highlightActiveLinkInSidebar();
}
// eslint-disable-next-line no-undef

File diff suppressed because one or more lines are too long

View File

@ -10,7 +10,7 @@ body {
a,
a:active {
color: #00bbff;
color: #0bf;
}
hr {
@ -43,6 +43,8 @@ h6 {
background: #252525;
}
.with-arrow {
fill: #999;
}
@ -51,6 +53,10 @@ h6 {
background: #292929;
}
.sidebar-section-children.active {
background: #444;
}
.sidebar-section-children a:hover {
background: #2c2c2c;
}
@ -86,8 +92,8 @@ h6 {
}
.navbar-item a:active {
color: #aaa;
background-color: #222;
color: #aaa;
}
.navbar-item:hover {
@ -105,8 +111,8 @@ h6 {
.toc-link {
color: #777;
transition: color 0.3s;
font-size: 0.875rem;
transition: color 0.3s;
}
.toc-link.is-active-link {
@ -193,7 +199,6 @@ samp {
color: #eee;
}
/* stylelint-enable */
table .name,
.params .name,
@ -396,12 +401,12 @@ blockquote {
background: #222;
}
/* scroll bar */
::-webkit-scrollbar-track {
background: #333;
.child-tutorial {
border-color: #555;
color: #f3f3f3;
}
::-webkit-scrollbar-thumb {
background: #555;
outline: 0.06125rem solid #555;
.child-tutorial:hover {
background: #222;
}

View File

@ -1,20 +1,25 @@
.light ::selection {
background: #ffce76;
color: #1d1919;
background: #ffce76;
color: #1d1919;
}
/* stylelint-disable-next-line selector-no-qualifying-type,rule-empty-line-before */
body.light {
background-color: #fff;
color: #111;
background-color: #fff;
color: #111;
}
.light a,
.light a:active {
color: #007bff;
color: #007bff;
}
.light hr {
color: #f7f7f7;
color: #f7f7f7;
}
.light h1,
@ -23,231 +28,293 @@ body.light {
.light h4,
.light h5,
.light h6 {
color: #111;
color: #111;
}
.light .sidebar {
background-color: #f7f7f7;
color: #222;
background-color: #f7f7f7;
color: #222;
}
.light .sidebar-title {
color: #222;
color: #222;
}
.light .sidebar-section-title {
color: #222;
color: #222;
}
.light .sidebar-section-title:hover {
background: #eee;
.light .sidebar-section-title:hover,
.light .sidebar-section-title.active {
background: #eee;
}
.light .with-arrow {
fill: #111;
fill: #111;
}
.light .sidebar-section-children-container {
background: #eee;
background: #eee;
}
.light .sidebar-section-children.active {
background: #ccc;
}
.light .sidebar-section-children a:hover {
background: #e0e0e0;
background: #e0e0e0;
}
.light .sidebar-section-children a {
color: #111;
color: #111;
}
.light .navbar-container {
background: #fff;
background: #fff;
}
.light .icon-button svg,
.light .navbar-item a {
color: #222;
fill: #222;
color: #222;
fill: #222;
}
.light .tippy-box {
background: #eee;
color: #111;
background: #eee;
color: #111;
}
.light .tippy-arrow {
color: #f1f1f1;
color: #f1f1f1;
}
/* stylelint-disable-next-line selector-max-compound-selectors,rule-empty-line-before */
.light .font-size-tooltip .icon-button svg {
fill: #111;
fill: #111;
}
/* stylelint-disable-next-line selector-max-compound-selectors, rule-empty-line-before */
.light .font-size-tooltip .icon-button.disabled svg {
fill: #999;
fill: #999;
}
.light .icon-button:hover {
background: #ddd;
background: #ddd;
}
.light .icon-button:active {
background: #ccc;
background: #ccc;
}
.light .navbar-item a:active {
color: #333;
background-color: #eee;
background-color: #eee;
color: #333;
}
.light .navbar-item:hover {
background: #f7f7f7;
background: #f7f7f7;
}
.light .footer {
background: #f7f7f7;
color: #111;
background: #f7f7f7;
color: #111;
}
.light .footer a {
color: #111;
color: #111;
}
.light .toc-link {
color: #999;
transition: color 0.3s;
font-size: 0.875rem;
color: #999;
font-size: 0.875rem;
transition: color 0.3s;
}
.light .toc-link.is-active-link {
color: #111;
color: #111;
}
.light .has-anchor .link-anchor {
color: #ddd;
color: #ddd;
}
.light .has-anchor .link-anchor:hover {
color: #ccc;
color: #ccc;
}
.light .signature-attributes {
color: #aaa;
color: #aaa;
}
.light .ancestors {
color: #999;
color: #999;
}
.light .ancestors a {
color: #999 !important;
color: #999 !important;
}
.light .important {
color: #ee1313;
color: #ee1313;
}
.light .type-signature {
color: #00918e;
color: #00918e;
}
.light .name,
.light .name a {
color: #293a80;
color: #293a80;
}
.light .details {
background: #f9f9f9;
color: #101010;
background: #f9f9f9;
color: #101010;
}
.light .member-item-container strong,
.light .method-member-container strong {
color: #000;
color: #000;
}
.light .prettyprint {
background: #f7f7f7;
background: #f7f7f7;
}
.light .pre-div {
background: #f7f7f7;
background: #f7f7f7;
}
.light .hljs .hljs-ln-numbers {
color: #aaa;
color: #aaa;
}
.light .hljs .selected {
background: #ccc;
background: #ccc;
}
/* stylelint-disable-next-line selector-no-qualifying-type,rule-empty-line-before */
.light table.hljs-ln td {
background: none;
background: none;
}
/* stylelint-disable-next-line selector-max-compound-selectors,rule-empty-line-before */
.light .hljs .selected .hljs-ln-numbers {
color: #444;
color: #444;
}
.light .pre-top-bar-container {
background-color: #eee;
background-color: #eee;
}
.light .prettyprint code {
background-color: #f7f7f7;
background-color: #f7f7f7;
}
.light table .name,
.light .params .name,
.light .props .name,
.light .name code {
color: #4d4e53;
color: #4d4e53;
}
.light table td,
.light .params td {
background: #f7f7f7;
background: #f7f7f7;
}
/* stylelint-disable-next-line selector-max-compound-selectors,rule-empty-line-before */
.light table thead th,
.light .params thead th,
.light .props thead th {
background-color: #eee;
color: #111;
background-color: #eee;
color: #111;
}
/* stylelint-disable */
.light table .params thead tr,
.light .params .params thead tr,
.light .props .props thead tr {
background-color: #eee;
color: #111;
background-color: #eee;
color: #111;
}
.light .disabled {
color: #454545;
color: #454545;
}
.light .code-lang-name {
color: #ff0000;
color: #ff0000;
}
.light .tooltip {
background: #ffce76;
color: #000;
background: #ffce76;
color: #000;
}
/* Code */
.light .hljs-comment,
.light .hljs-quote {
color: #a0a1a7;
color: #a0a1a7;
}
.light .hljs-doctag,
.light .hljs-keyword,
.light .hljs-formula {
color: #a626a4;
color: #a626a4;
}
.light .hljs-section,
@ -255,11 +322,13 @@ body.light {
.light .hljs-selector-tag,
.light .hljs-deletion,
.light .hljs-subst {
color: #e45649;
color: #e45649;
}
.light .hljs-literal {
color: #0184bb;
color: #0184bb;
}
.light .hljs-string,
@ -267,7 +336,8 @@ body.light {
.light .hljs-addition,
.light .hljs-attribute,
.light .hljs-meta .hljs-string {
color: #50a14f;
color: #50a14f;
}
.light .hljs-attr,
@ -278,7 +348,8 @@ body.light {
.light .hljs-selector-attr,
.light .hljs-selector-pseudo,
.light .hljs-number {
color: #986801;
color: #986801;
}
.light .hljs-symbol,
@ -287,102 +358,125 @@ body.light {
.light .hljs-meta,
.light .hljs-selector-id,
.light .hljs-title {
color: #4078f2;
color: #4078f2;
}
.light .hljs-built_in,
.light .hljs-title.class_,
.light .hljs-class .hljs-title {
color: #c18401;
color: #c18401;
}
.light .hljs-emphasis {
font-style: italic;
font-style: italic;
}
.light .hljs-strong {
font-weight: bold;
font-weight: bold;
}
.light .hljs-link {
text-decoration: underline;
text-decoration: underline;
}
/* Code Ends */
.light blockquote {
background: #eee;
color: #111;
background: #eee;
color: #111;
}
.light code {
background: #ddd;
color: #000;
background: #ddd;
color: #000;
}
.light .search-container {
background: rgba(0, 0, 0, 0.1);
background: rgba(0, 0, 0, 0.1);
}
.light .search-close-button svg {
fill: #f00;
fill: #f00;
}
.light .search-container .wrapper {
background: #eee;
background: #eee;
}
.light .search-result-c {
color: #aaa;
color: #aaa;
}
.light .search-box-c svg {
fill: #333;
fill: #333;
}
.light .search-input {
background: #f7f7f7;
color: #111;
background: #f7f7f7;
color: #111;
}
.light .search-result-item {
background: #f7f7f7;
background: #f7f7f7;
}
.light .search-result-item:hover {
background: #e9e9e9;
background: #e9e9e9;
}
.light .search-result-item:active {
background: #f7f7f7;
background: #f7f7f7;
}
.light .search-result-item-title {
color: #111;
color: #111;
}
.light .search-result-item-p {
color: #aaa;
color: #aaa;
}
.light .mobile-menu-icon-container .icon-button {
background: #e5e5e5;
background: #e5e5e5;
}
.light .mobile-sidebar-container {
background: #fff;
background: #fff;
}
.light .mobile-sidebar-wrapper {
background: #f7f7f7;
background: #f7f7f7;
}
/* scroll bar */
.light ::-webkit-scrollbar-track {
background: #ddd;
.light .child-tutorial {
border-color: #aaa;
color: #222;
}
.light ::-webkit-scrollbar-thumb {
background: #aaa;
outline: 0.06125rem solid #aaa;
.light .child-tutorial:hover {
background: #ccc;
}

View File

@ -0,0 +1,30 @@
::-webkit-scrollbar {
height: 0.3125rem;
width: 0.3125rem;
}
::-webkit-scrollbar-thumb,
::-webkit-scrollbar-track {
border-radius: 1rem;
}
::-webkit-scrollbar-track {
background: #333;
}
::-webkit-scrollbar-thumb {
background: #555;
outline: 0.06125rem solid #555;
}
.light ::-webkit-scrollbar-track {
background: #ddd;
}
.light ::-webkit-scrollbar-thumb {
background: #aaa;
outline: 0.06125rem solid #aaa;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>The sitespeed.io blog</title>
<title>Sitespeed.io Blog</title>
<description>The latest news from the sitespeed.io world.</description>
<link>https://www.sitespeed.io</link>
<atom:link href="{{ site.url }}/feed.xml" rel="self" type="application/rss+xml" />
<atom:link href="{{ site.url }}/feed/blog.xml" rel="self" type="application/rss+xml" />
{% for post in site.posts limit:10 %}
<item>
<title>{{ post.title | xml_escape }}</title>

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>browsertime-release-feed</id>
<title>browsertime release feed</title>
<updated>2024-11-12T22:33:53.651Z</updated>
<updated>2026-01-09T21:34:42.934Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>
@ -17,17 +17,20 @@
<rights>All rights reserved 2022, Peter Hedenskog and team</rights>
<category term="Web Performance"/>
<entry>
<title type="html"><![CDATA[browsertime 23.3.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.3.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.3.0"/>
<updated>2024-11-12T00:00:00.000Z</updated>
<title type="html"><![CDATA[browsertime 26.3.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.3.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.3.0"/>
<updated>2026-01-09T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Updated to Chrome and Chromedriver 131 <a href="https://github.com/sitespeedio/browsertime/pull/2203">#2209</a></li>
<li>Get response bodies in the HAR for Firefox. Thank you <a href="https://github.com/juliandescottes">Julian Descottes</a> and the rest of the Mozilla team that made this possible in bidi-har-export. Added in <a href="https://github.com/sitespeedio/browsertime/pull/2359">#2359</a>. The Firefox HAR has missed this functionality since we did the switch to bidi-har.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated to ff-test-bidi-har-export to 0.0.17<a href="https://github.com/sitespeedio/browsertime/pull/2204">#2204</a></li>
<li>Restructure server timings so the timing name does not get lost for InfluxDB/Graphite. Thank you <a href="https://github.com/TimOldenburg">Tim Oldenburg</a> for PR <a href="https://github.com/sitespeedio/browsertime/pull/2358">#2358</a>.</li>
</ul>
<ul>
<li>Add Simpleperf app_profiler options and use <code>--android.simpleperf</code>. Thank you <a href="https://github.com/animalan">Abhishek Nimalan</a> for PR <a href="https://github.com/sitespeedio/browsertime/pull/2352">#2352</a></li>
</ul>
]]></summary>
<author>
@ -36,20 +39,20 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 23.2.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.2.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.2.0"/>
<updated>2024-10-20T00:00:00.000Z</updated>
<title type="html"><![CDATA[browsertime 26.2.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.2.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.2.0"/>
<updated>2025-12-18T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Updated to Chrome and Chromedriver 130 <a href="https://github.com/sitespeedio/browsertime/pull/2192">#2192</a></li>
<li>Updated Chromedriver and Edgedriver to 143 <a href="https://github.com/sitespeedio/browsertime/pull/2354">#2354</a> and<a href="https://github.com/sitespeedio/browsertime/pull/2355">#2355</a>.</li>
</ul>
<ul>
<li>The Chrome in the ARM container is bumped from 107 to 130 <a href="https://github.com/sitespeedio/browsertime/pull/2194">#2194</a>.</li>
<li>Updated webdriver to 4.39.0 <a href="https://github.com/sitespeedio/browsertime/pull/2356">#2356</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>New Geckodriver install that fixes running on ARM in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2193">#2193</a>.</li>
<li>Try to tune the XVFB handling to make it safer that xvfb is always stopped <a href="https://github.com/sitespeedio/browsertime/pull/2353">#2353</a>.</li>
</ul>
]]></summary>
<author>
@ -58,13 +61,35 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 23.1.2]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.2</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.2"/>
<updated>2024-10-11T00:00:00.000Z</updated>
<title type="html"><![CDATA[browsertime 26.1.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.1.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.1.0"/>
<updated>2025-12-11T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Firefox 146 in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2351">#2351</a>.</li>
</ul>
<ul>
<li>Chrome 143 in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2350">#2350</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Make sure the user in the Docker container has the correct user rights <a href="https://github.com/sitespeedio/browsertime/pull/2349">#2349</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 26.0.1]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.1</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.1"/>
<updated>2025-12-10T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Updated Chrome HAR to 1.0.1 <a href="https://github.com/sitespeedio/browsertime/pull/2191">#2191</a>.</li>
<li>Remove extra console.log entry :)</li>
</ul>
]]></summary>
<author>
@ -73,13 +98,46 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 23.1.1]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.1</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.1"/>
<updated>2024-10-08T00:00:00.000Z</updated>
<title type="html"><![CDATA[browsertime 26.0.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.0"/>
<updated>2025-12-10T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Upgrade to support NodeJS 24 without warnings, include NodeJS 24 in the Docker container, and base the Docker container on Ubuntu 24.04. To make this work I needed to upgrade the Jimp library and then we lost the settings for png screenshots <code>--screenshotParams.png.compressionLevel</code> <a href="https://github.com/sitespeedio/browsertime/pull/2342">#2342</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 25.4.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.4.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.4.0"/>
<updated>2025-11-02T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Chrome and Chromedriver 142 <a href="https://github.com/sitespeedio/browsertime/pull/2335">#2335</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 25.3.1]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.1</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.1"/>
<updated>2025-10-24T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Updated to har export 0.0.16 for Firefox that fixes the HAR timing problem in <a href="https://github.com/sitespeedio/browsertime/issues/2189">#2189</a> <a href="https://github.com/sitespeedio/browsertime/pull/2190">#2190</a>.</li>
<li>Better handling of closing XVFB <a href="https://github.com/sitespeedio/browsertime/pull/2332">#2332</a>.</li>
</ul>
<ul>
<li>Firefox: Disable quicksuggest <a href="https://github.com/sitespeedio/browsertime/pull/2333">#2333</a>.</li>
</ul>
]]></summary>
<author>
@ -88,20 +146,23 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 23.1.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.0"/>
<updated>2024-10-08T00:00:00.000Z</updated>
<title type="html"><![CDATA[browsertime 25.3.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.0"/>
<updated>2025-10-17T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Log if you use a profile template for Firefox <a href="https://github.com/sitespeedio/browsertime/pull/2186">#2186</a>.</li>
<li>Make it possible to strip cookie and auth headers in the HAR file for Firefox <a href="https://github.com/sitespeedio/browsertime/pull/2329">#2329</a> and Chrome <a href="https://github.com/sitespeedio/browsertime/pull/2330">#2330</a>. Use <code>--cleanSensitiveHeaders</code> to remove a <a href="https://github.com/sitespeedio/browsertime/blob/main/lib/support/har/index.js#L11-L24">couple of headers</a>.</li>
</ul>
<ul>
<li>Update to Firefox 131 and Edge 129 in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2188">#2188</a>.</li>
<li>Firefox 144 <a href="https://github.com/sitespeedio/browsertime/pull/2331">#2331</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated to Chrome-HAR <a href="https://github.com/sitespeedio/browsertime/pull/2187">#2187</a>.</li>
<li>Updated developer dependencies <a href="https://github.com/sitespeedio/browsertime/pull/2326">#2326</a> and <a href="https://github.com/sitespeedio/browsertime/pull/2327">#2327</a>.</li>
</ul>
<ul>
<li>Updated log dependency <a href="https://github.com/sitespeedio/b23272327rowsertime/pull/2328">#2328</a></li>
</ul>
]]></summary>
<author>
@ -110,23 +171,19 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 23.0.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.0.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.0.0"/>
<updated>2024-09-23T00:00:00.000Z</updated>
<title type="html"><![CDATA[browsertime 25.2.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.2.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.2.0"/>
<updated>2025-10-12T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Updated Docker container with Chrome 129, Firefox 130. New Chromedriver <a href="https://github.com/sitespeedio/browsertime/pull/2181">#2181</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated to Selenium 4.25.0 <a href="https://github.com/sitespeedio/browsertime/pull/2185">#2185</a>.</li>
<li>Updated to Chrome/Chromedriver/Edge/Edgedriver 141, Firefox 143 <a href="https://github.com/sitespeedio/browsertime/pull/2325">#2325</a> and <a href="https://github.com/sitespeedio/browsertime/pull/2323">#2323</a>.</li>
</ul>
<ul>
<li>Use HAR export 0.0.15 for upcoming changes in Firefox <a href="https://github.com/sitespeedio/browsertime/pull/2184">#2184</a>.</li>
<li>Updated webdriver and bidi-har <a href="https://github.com/sitespeedio/browsertime/pull/2322">#2322</a>.</li>
</ul>
<ul>
<li>Fixes the internal configuration object for android. The old solution created an array with objects instead of just keys on the object.<a href="https://github.com/sitespeedio/browsertime/pull/2183">#2183</a>.</li>
<li>Added simpleperf and perfetto support for Android, thank you <a href="https://github.com/animalan">Abhishek Nimalan</a> for PR <a href="https://github.com/sitespeedio/browsertime/pull/2315">#2315</a>.</li>
</ul>
]]></summary>
<author>
@ -135,75 +192,16 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 22.10.2]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.2</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.2"/>
<updated>2024-09-13T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix for wait.byIdAndVisible command <a href="https://github.com/sitespeedio/browsertime/pull/2179">#2179</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 22.10.1]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.1</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.1"/>
<updated>2024-09-04T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Upgraded Bidi HAR to 0.0.14 that filters out data:text URLs thar is picked up in Firefox 130 <a href="https://github.com/sitespeedio/browsertime/pull/2177">#2177</a>.</li>
</ul>
<ul>
<li>Call stopSampling on browser stop during android power testing <a href="https://github.com/sitespeedio/browsertime/pull/2176">#2176</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 22.10.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.0"/>
<updated>2024-09-03T00:00:00.000Z</updated>
<title type="html"><![CDATA[browsertime 25.1.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.1.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.1.0"/>
<updated>2025-09-05T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Chromedriver 128 <a href="https://github.com/sitespeedio/browsertime/pull/2175">#2175</a></li>
<li>Updated to Chrome/Chromedriver 140, Firefox 142 <a href="https://github.com/sitespeedio/browsertime/pull/2318">#2318</a>.</li>
</ul>
<ul>
<li>Chrome 128, Firefox 129, Edge 127 <a href="https://github.com/sitespeedio/browsertime/pull/2173">#2173</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated dependencies: usb-profiling, fast-stats, webdriver, execa, dayjs <a href="https://github.com/sitespeedio/browsertime/pull/2174">#2174</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[browsertime 22.9.0]]></title>
<id>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.9.0</id>
<link href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.9.0"/>
<updated>2024-08-26T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Geckodriver 0.35.0 <a href="https://github.com/sitespeedio/browsertime/pull/2170">#2170</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Stopping gnirehtet throwed errors <a href="https://github.com/sitespeedio/browsertime/pull/2171">#2172</a>.</li>
</ul>
<ul>
<li>Updated to Throttle 5.0.1 that have nicer ifb0 handling <a href="https://github.com/sitespeedio/browsertime/pull/2172">#2172</a></li>
<li>Selenium webdriver 4.35.0 <a href="https://github.com/sitespeedio/browsertime/pull/2317">#2317</a>.</li>
</ul>
]]></summary>
<author>

View File

@ -4,7 +4,7 @@
<title>browsertime release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of browsertime</description>
<lastBuildDate>Tue, 12 Nov 2024 22:33:53 GMT</lastBuildDate>
<lastBuildDate>Fri, 09 Jan 2026 21:34:42 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>
@ -17,166 +17,164 @@
<category>Web Performance</category>
<atom:link href="https://www.sitespeed.io/feed/browsertime.rss" rel="self" type="application/rss+xml"/>
<item>
<title><![CDATA[browsertime 23.3.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.3.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.3.0</guid>
<pubDate>Tue, 12 Nov 2024 00:00:00 GMT</pubDate>
<title><![CDATA[browsertime 26.3.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.3.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.3.0</guid>
<pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Updated to Chrome and Chromedriver 131 <a href="https://github.com/sitespeedio/browsertime/pull/2203">#2209</a></li>
<li>Get response bodies in the HAR for Firefox. Thank you <a href="https://github.com/juliandescottes">Julian Descottes</a> and the rest of the Mozilla team that made this possible in bidi-har-export. Added in <a href="https://github.com/sitespeedio/browsertime/pull/2359">#2359</a>. The Firefox HAR has missed this functionality since we did the switch to bidi-har.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated to ff-test-bidi-har-export to 0.0.17<a href="https://github.com/sitespeedio/browsertime/pull/2204">#2204</a></li>
<li>Restructure server timings so the timing name does not get lost for InfluxDB/Graphite. Thank you <a href="https://github.com/TimOldenburg">Tim Oldenburg</a> for PR <a href="https://github.com/sitespeedio/browsertime/pull/2358">#2358</a>.</li>
</ul>
<ul>
<li>Add Simpleperf app_profiler options and use <code>--android.simpleperf</code>. Thank you <a href="https://github.com/animalan">Abhishek Nimalan</a> for PR <a href="https://github.com/sitespeedio/browsertime/pull/2352">#2352</a></li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 23.2.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.2.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.2.0</guid>
<pubDate>Sun, 20 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[browsertime 26.2.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.2.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.2.0</guid>
<pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Updated to Chrome and Chromedriver 130 <a href="https://github.com/sitespeedio/browsertime/pull/2192">#2192</a></li>
<li>Updated Chromedriver and Edgedriver to 143 <a href="https://github.com/sitespeedio/browsertime/pull/2354">#2354</a> and<a href="https://github.com/sitespeedio/browsertime/pull/2355">#2355</a>.</li>
</ul>
<ul>
<li>The Chrome in the ARM container is bumped from 107 to 130 <a href="https://github.com/sitespeedio/browsertime/pull/2194">#2194</a>.</li>
<li>Updated webdriver to 4.39.0 <a href="https://github.com/sitespeedio/browsertime/pull/2356">#2356</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>New Geckodriver install that fixes running on ARM in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2193">#2193</a>.</li>
<li>Try to tune the XVFB handling to make it safer that xvfb is always stopped <a href="https://github.com/sitespeedio/browsertime/pull/2353">#2353</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 23.1.2]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.2</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.2</guid>
<pubDate>Fri, 11 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[browsertime 26.1.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.1.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.1.0</guid>
<pubDate>Thu, 11 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Firefox 146 in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2351">#2351</a>.</li>
</ul>
<ul>
<li>Chrome 143 in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2350">#2350</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Make sure the user in the Docker container has the correct user rights <a href="https://github.com/sitespeedio/browsertime/pull/2349">#2349</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 26.0.1]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.1</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.1</guid>
<pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Updated Chrome HAR to 1.0.1 <a href="https://github.com/sitespeedio/browsertime/pull/2191">#2191</a>.</li>
<li>Remove extra console.log entry :)</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 23.1.1]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.1</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.1</guid>
<pubDate>Tue, 08 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[browsertime 26.0.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#26.0.0</guid>
<pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Upgrade to support NodeJS 24 without warnings, include NodeJS 24 in the Docker container, and base the Docker container on Ubuntu 24.04. To make this work I needed to upgrade the Jimp library and then we lost the settings for png screenshots <code>--screenshotParams.png.compressionLevel</code> <a href="https://github.com/sitespeedio/browsertime/pull/2342">#2342</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 25.4.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.4.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.4.0</guid>
<pubDate>Sun, 02 Nov 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Chrome and Chromedriver 142 <a href="https://github.com/sitespeedio/browsertime/pull/2335">#2335</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 25.3.1]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.1</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.1</guid>
<pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Updated to har export 0.0.16 for Firefox that fixes the HAR timing problem in <a href="https://github.com/sitespeedio/browsertime/issues/2189">#2189</a> <a href="https://github.com/sitespeedio/browsertime/pull/2190">#2190</a>.</li>
<li>Better handling of closing XVFB <a href="https://github.com/sitespeedio/browsertime/pull/2332">#2332</a>.</li>
</ul>
<ul>
<li>Firefox: Disable quicksuggest <a href="https://github.com/sitespeedio/browsertime/pull/2333">#2333</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 23.1.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.1.0</guid>
<pubDate>Tue, 08 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[browsertime 25.3.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.3.0</guid>
<pubDate>Fri, 17 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Log if you use a profile template for Firefox <a href="https://github.com/sitespeedio/browsertime/pull/2186">#2186</a>.</li>
<li>Make it possible to strip cookie and auth headers in the HAR file for Firefox <a href="https://github.com/sitespeedio/browsertime/pull/2329">#2329</a> and Chrome <a href="https://github.com/sitespeedio/browsertime/pull/2330">#2330</a>. Use <code>--cleanSensitiveHeaders</code> to remove a <a href="https://github.com/sitespeedio/browsertime/blob/main/lib/support/har/index.js#L11-L24">couple of headers</a>.</li>
</ul>
<ul>
<li>Update to Firefox 131 and Edge 129 in the Docker container <a href="https://github.com/sitespeedio/browsertime/pull/2188">#2188</a>.</li>
<li>Firefox 144 <a href="https://github.com/sitespeedio/browsertime/pull/2331">#2331</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated to Chrome-HAR <a href="https://github.com/sitespeedio/browsertime/pull/2187">#2187</a>.</li>
<li>Updated developer dependencies <a href="https://github.com/sitespeedio/browsertime/pull/2326">#2326</a> and <a href="https://github.com/sitespeedio/browsertime/pull/2327">#2327</a>.</li>
</ul>
<ul>
<li>Updated log dependency <a href="https://github.com/sitespeedio/b23272327rowsertime/pull/2328">#2328</a></li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 23.0.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.0.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#23.0.0</guid>
<pubDate>Mon, 23 Sep 2024 00:00:00 GMT</pubDate>
<title><![CDATA[browsertime 25.2.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.2.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.2.0</guid>
<pubDate>Sun, 12 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Updated Docker container with Chrome 129, Firefox 130. New Chromedriver <a href="https://github.com/sitespeedio/browsertime/pull/2181">#2181</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated to Selenium 4.25.0 <a href="https://github.com/sitespeedio/browsertime/pull/2185">#2185</a>.</li>
<li>Updated to Chrome/Chromedriver/Edge/Edgedriver 141, Firefox 143 <a href="https://github.com/sitespeedio/browsertime/pull/2325">#2325</a> and <a href="https://github.com/sitespeedio/browsertime/pull/2323">#2323</a>.</li>
</ul>
<ul>
<li>Use HAR export 0.0.15 for upcoming changes in Firefox <a href="https://github.com/sitespeedio/browsertime/pull/2184">#2184</a>.</li>
<li>Updated webdriver and bidi-har <a href="https://github.com/sitespeedio/browsertime/pull/2322">#2322</a>.</li>
</ul>
<ul>
<li>Fixes the internal configuration object for android. The old solution created an array with objects instead of just keys on the object.<a href="https://github.com/sitespeedio/browsertime/pull/2183">#2183</a>.</li>
<li>Added simpleperf and perfetto support for Android, thank you <a href="https://github.com/animalan">Abhishek Nimalan</a> for PR <a href="https://github.com/sitespeedio/browsertime/pull/2315">#2315</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 22.10.2]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.2</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.2</guid>
<pubDate>Fri, 13 Sep 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix for wait.byIdAndVisible command <a href="https://github.com/sitespeedio/browsertime/pull/2179">#2179</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 22.10.1]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.1</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.1</guid>
<pubDate>Wed, 04 Sep 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Upgraded Bidi HAR to 0.0.14 that filters out data:text URLs thar is picked up in Firefox 130 <a href="https://github.com/sitespeedio/browsertime/pull/2177">#2177</a>.</li>
</ul>
<ul>
<li>Call stopSampling on browser stop during android power testing <a href="https://github.com/sitespeedio/browsertime/pull/2176">#2176</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 22.10.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.10.0</guid>
<pubDate>Tue, 03 Sep 2024 00:00:00 GMT</pubDate>
<title><![CDATA[browsertime 25.1.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.1.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#25.1.0</guid>
<pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Chromedriver 128 <a href="https://github.com/sitespeedio/browsertime/pull/2175">#2175</a></li>
<li>Updated to Chrome/Chromedriver 140, Firefox 142 <a href="https://github.com/sitespeedio/browsertime/pull/2318">#2318</a>.</li>
</ul>
<ul>
<li>Chrome 128, Firefox 129, Edge 127 <a href="https://github.com/sitespeedio/browsertime/pull/2173">#2173</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated dependencies: usb-profiling, fast-stats, webdriver, execa, dayjs <a href="https://github.com/sitespeedio/browsertime/pull/2174">#2174</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[browsertime 22.9.0]]></title>
<link>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.9.0</link>
<guid>https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#22.9.0</guid>
<pubDate>Mon, 26 Aug 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Geckodriver 0.35.0 <a href="https://github.com/sitespeedio/browsertime/pull/2170">#2170</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Stopping gnirehtet throwed errors <a href="https://github.com/sitespeedio/browsertime/pull/2171">#2172</a>.</li>
</ul>
<ul>
<li>Updated to Throttle 5.0.1 that have nicer ifb0 handling <a href="https://github.com/sitespeedio/browsertime/pull/2172">#2172</a></li>
<li>Selenium webdriver 4.35.0 <a href="https://github.com/sitespeedio/browsertime/pull/2317">#2317</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/browsertime.png" length="0" type="image/png"/>

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>chrome-har-release-feed</id>
<title>chrome-har release feed</title>
<updated>2024-10-11T13:50:39.328Z</updated>
<updated>2024-12-27T07:52:02.791Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>

View File

@ -4,7 +4,7 @@
<title>chrome-har release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of chrome-har</description>
<lastBuildDate>Fri, 11 Oct 2024 13:50:39 GMT</lastBuildDate>
<lastBuildDate>Fri, 27 Dec 2024 07:52:02 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>coach-core-release-feed</id>
<title>coach-core release feed</title>
<updated>2024-03-21T14:14:57.464Z</updated>
<updated>2025-08-31T14:30:33.326Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>
@ -16,6 +16,64 @@
<icon>http://www.sitespeed.io/favicon.ico</icon>
<rights>All rights reserved 2022, Peter Hedenskog and team</rights>
<category term="Web Performance"/>
<entry>
<title type="html"><![CDATA[coach-core 8.1.2]]></title>
<id>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.2</id>
<link href="https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.2"/>
<updated>2025-08-01T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Don&#39;t check svg images in avoidScalingImages check, thank you <a href="https://github.com/M-arcus">Marcus Müller</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/129">#129</a>.</li>
</ul>
<ul>
<li>Add zstd to encoding check, thank you <a href="https://github.com/M-arcus">Marcus Müller</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/128">#128</a>.</li>
</ul>
<ul>
<li>Make sure we use wappalyzer that is MIT <a href="https://github.com/sitespeedio/coach-core/pull/133">#133</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[coach-core 8.1.1]]></title>
<id>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.1</id>
<link href="https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.1"/>
<updated>2024-12-28T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix broken minified release.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[coach-core 8.1.0]]></title>
<id>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.0</id>
<link href="https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.0"/>
<updated>2024-12-28T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Use latest data from <a href="https://github.com/enthec/webappanalyzer">https://github.com/enthec/webappanalyzer</a> <a href="https://github.com/sitespeedio/coach-core/pull/114">#114</a>.</li>
</ul>
<ul>
<li>Use third part web 0.26.2 <a href="https://github.com/sitespeedio/coach-core/pull/113">#113</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Update dev dependencies <a href="https://github.com/sitespeedio/coach-core/pull/115">#115</a>, <a href="https://github.com/sitespeedio/coach-core/pull/116">#116</a> and <a href="https://github.com/sitespeedio/coach-core/pull/117">#117</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[coach-core 8.0.2]]></title>
<id>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.0.2</id>
@ -139,107 +197,6 @@
<ul>
<li>Upgraded to PageXray 4.4.2 and Third Party Web 0.17.1.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[coach-core 7.1.1]]></title>
<id>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.1</id>
<link href="https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.1"/>
<updated>2022-04-13T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Upgraded to PageXray 4.4.1 and Third Party Web 0.15.0.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[coach-core 7.1.0]]></title>
<id>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.0</id>
<link href="https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.0"/>
<updated>2022-02-06T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Upgraded to PageXray 4.0.0.</li>
</ul>
<ul>
<li>Upgraded to third party web 0.13.0.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[coach-core 7.0.0]]></title>
<id>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.0.0</id>
<link href="https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.0.0"/>
<updated>2021-12-01T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Updated third-party-web to 0.12.6.</li>
</ul>
<ul>
<li>Use Chrome(ium) render blocking information to know if a request is render blocking or not <a href="https://github.com/sitespeedio/coach-core/pull/66">#66</a>.</li>
</ul>
<ul>
<li>Report offending JavaScript assets if the JavaScript max limits kicks in <a href="https://github.com/sitespeedio/coach-core/pull/70">#70</a>.</li>
</ul>
<ul>
<li>New largest contentful paint advice <a href="https://github.com/sitespeedio/coach-core/pull/76">#76</a>.</li>
</ul>
<ul>
<li>New first contentful paint advice <a href="https://github.com/sitespeedio/coach-core/pull/77">#77</a>.</li>
</ul>
<ul>
<li>Added TBT in the CPU longtask advice <a href="https://github.com/sitespeedio/coach-core/pull/80">#80</a>.</li>
</ul>
<ul>
<li>Report content and transfer size for offending URLs <a href="https://github.com/sitespeedio/coach-core/pull/81">#81</a>.</li>
</ul>
<ul>
<li>Report offending assets with transfer/content size for page size limit <a href="https://github.com/sitespeedio/coach-core/pull/82">#82</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix cases when JQuery is undefined. Thank you <a href="https://github.com/jajo-shubham">shubham jajodia</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/64">#64</a>.</li>
</ul>
<ul>
<li>A better way to find offending layout shifters. Thank you <a href="https://github.com/jajo-shubham">shubham jajodia</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/65">#65</a>.</li>
</ul>
<ul>
<li>Removed mentions aboout server push <a href="https://github.com/sitespeedio/coach-core/pull/69">#69</a></li>
</ul>
<ul>
<li>Added more information on how to debug CPU advice <a href="https://github.com/sitespeedio/coach-core/pull/71">#71</a>.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Moved AMP advice to best practice instead of privacy <a href="https://github.com/sitespeedio/coach-core/pull/67">#67</a>.</li>
</ul>
<ul>
<li>Increased favicon max size advice from 5 to 10 kb <a href="https://github.com/sitespeedio/coach-core/pull/68">#68</a></li>
</ul>
<ul>
<li>Renamed the fastRender advice to avoidRenderBlocking <a href="https://github.com/sitespeedio/coach-core/pull/73">#73</a></li>
</ul>
<ul>
<li>Remove the third party async advice <a href="https://github.com/sitespeedio/coach-core/pull/74">#74</a></li>
</ul>
<ul>
<li>Updated the layout shift advice to use cumulative layout shift <a href="https://github.com/sitespeedio/coach-core/pull/75">#75</a></li>
</ul>
<ul>
<li>Changed id of the Google Tag Manager advice <a href="https://github.com/sitespeedio/coach-core/pull/79">#79</a></li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>

View File

@ -4,7 +4,7 @@
<title>coach-core release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of coach-core</description>
<lastBuildDate>Thu, 21 Mar 2024 14:14:57 GMT</lastBuildDate>
<lastBuildDate>Sun, 31 Aug 2025 14:30:33 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>
@ -16,6 +16,55 @@
<copyright>All rights reserved 2022, Peter Hedenskog and team</copyright>
<category>Web Performance</category>
<atom:link href="https://www.sitespeed.io/feed/coach-core.rss" rel="self" type="application/rss+xml"/>
<item>
<title><![CDATA[coach-core 8.1.2]]></title>
<link>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.2</link>
<guid>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.2</guid>
<pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Don&#39;t check svg images in avoidScalingImages check, thank you <a href="https://github.com/M-arcus">Marcus Müller</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/129">#129</a>.</li>
</ul>
<ul>
<li>Add zstd to encoding check, thank you <a href="https://github.com/M-arcus">Marcus Müller</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/128">#128</a>.</li>
</ul>
<ul>
<li>Make sure we use wappalyzer that is MIT <a href="https://github.com/sitespeedio/coach-core/pull/133">#133</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/coach.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[coach-core 8.1.1]]></title>
<link>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.1</link>
<guid>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.1</guid>
<pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix broken minified release.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/coach.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[coach-core 8.1.0]]></title>
<link>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.0</link>
<guid>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.1.0</guid>
<pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Use latest data from <a href="https://github.com/enthec/webappanalyzer">https://github.com/enthec/webappanalyzer</a> <a href="https://github.com/sitespeedio/coach-core/pull/114">#114</a>.</li>
</ul>
<ul>
<li>Use third part web 0.26.2 <a href="https://github.com/sitespeedio/coach-core/pull/113">#113</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Update dev dependencies <a href="https://github.com/sitespeedio/coach-core/pull/115">#115</a>, <a href="https://github.com/sitespeedio/coach-core/pull/116">#116</a> and <a href="https://github.com/sitespeedio/coach-core/pull/117">#117</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/coach.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[coach-core 8.0.2]]></title>
<link>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#8.0.2</link>
@ -121,98 +170,6 @@
<ul>
<li>Upgraded to PageXray 4.4.2 and Third Party Web 0.17.1.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/coach.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[coach-core 7.1.1]]></title>
<link>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.1</link>
<guid>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.1</guid>
<pubDate>Wed, 13 Apr 2022 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Upgraded to PageXray 4.4.1 and Third Party Web 0.15.0.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/coach.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[coach-core 7.1.0]]></title>
<link>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.0</link>
<guid>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.1.0</guid>
<pubDate>Sun, 06 Feb 2022 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Upgraded to PageXray 4.0.0.</li>
</ul>
<ul>
<li>Upgraded to third party web 0.13.0.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/coach.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[coach-core 7.0.0]]></title>
<link>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.0.0</link>
<guid>https://github.com/sitespeedio/coach-core/blob/main/CHANGELOG.md#7.0.0</guid>
<pubDate>Wed, 01 Dec 2021 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Updated third-party-web to 0.12.6.</li>
</ul>
<ul>
<li>Use Chrome(ium) render blocking information to know if a request is render blocking or not <a href="https://github.com/sitespeedio/coach-core/pull/66">#66</a>.</li>
</ul>
<ul>
<li>Report offending JavaScript assets if the JavaScript max limits kicks in <a href="https://github.com/sitespeedio/coach-core/pull/70">#70</a>.</li>
</ul>
<ul>
<li>New largest contentful paint advice <a href="https://github.com/sitespeedio/coach-core/pull/76">#76</a>.</li>
</ul>
<ul>
<li>New first contentful paint advice <a href="https://github.com/sitespeedio/coach-core/pull/77">#77</a>.</li>
</ul>
<ul>
<li>Added TBT in the CPU longtask advice <a href="https://github.com/sitespeedio/coach-core/pull/80">#80</a>.</li>
</ul>
<ul>
<li>Report content and transfer size for offending URLs <a href="https://github.com/sitespeedio/coach-core/pull/81">#81</a>.</li>
</ul>
<ul>
<li>Report offending assets with transfer/content size for page size limit <a href="https://github.com/sitespeedio/coach-core/pull/82">#82</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix cases when JQuery is undefined. Thank you <a href="https://github.com/jajo-shubham">shubham jajodia</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/64">#64</a>.</li>
</ul>
<ul>
<li>A better way to find offending layout shifters. Thank you <a href="https://github.com/jajo-shubham">shubham jajodia</a> for PR <a href="https://github.com/sitespeedio/coach-core/pull/65">#65</a>.</li>
</ul>
<ul>
<li>Removed mentions aboout server push <a href="https://github.com/sitespeedio/coach-core/pull/69">#69</a></li>
</ul>
<ul>
<li>Added more information on how to debug CPU advice <a href="https://github.com/sitespeedio/coach-core/pull/71">#71</a>.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Moved AMP advice to best practice instead of privacy <a href="https://github.com/sitespeedio/coach-core/pull/67">#67</a>.</li>
</ul>
<ul>
<li>Increased favicon max size advice from 5 to 10 kb <a href="https://github.com/sitespeedio/coach-core/pull/68">#68</a></li>
</ul>
<ul>
<li>Renamed the fastRender advice to avoidRenderBlocking <a href="https://github.com/sitespeedio/coach-core/pull/73">#73</a></li>
</ul>
<ul>
<li>Remove the third party async advice <a href="https://github.com/sitespeedio/coach-core/pull/74">#74</a></li>
</ul>
<ul>
<li>Updated the layout shift advice to use cumulative layout shift <a href="https://github.com/sitespeedio/coach-core/pull/75">#75</a></li>
</ul>
<ul>
<li>Changed id of the Google Tag Manager advice <a href="https://github.com/sitespeedio/coach-core/pull/79">#79</a></li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/coach.png" length="0" type="image/png"/>
</item>

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>pagexray-release-feed</id>
<title>pagexray release feed</title>
<updated>2024-03-21T14:14:57.465Z</updated>
<updated>2024-12-27T07:52:02.793Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>

View File

@ -4,7 +4,7 @@
<title>pagexray release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of pagexray</description>
<lastBuildDate>Thu, 21 Mar 2024 14:14:57 GMT</lastBuildDate>
<lastBuildDate>Fri, 27 Dec 2024 07:52:02 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>server-release-feed</id>
<title>server release feed</title>
<updated>2024-09-24T06:38:13.439Z</updated>
<updated>2025-10-22T22:03:43.179Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>
@ -16,19 +16,13 @@
<rights>All rights reserved 2022, Peter Hedenskog and team</rights>
<category term="Web Performance"/>
<entry>
<title type="html"><![CDATA[server 0.4.5]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.5</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.5"/>
<updated>2024-09-24T00:00:00.000Z</updated>
<title type="html"><![CDATA[server 1.7.1]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.1</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.1"/>
<updated>2025-10-23T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Express 5.0.0 <a href="https://github.com/sitespeedio/onlinetest/pull/86">#86</a>.</li>
</ul>
<ul>
<li>Update body parser <a href="https://github.com/sitespeedio/onlinetest/pull/88">#88</a>.</li>
</ul>
<ul>
<li>Bull 4.16.3 <a href="https://github.com/sitespeedio/onlinetest/pull/87">#87</a></li>
<li>Fix for the search qyuery parameter <a href="https://github.com/sitespeedio/onlinetest/pull/162">#162</a>.</li>
</ul>
]]></summary>
<author>
@ -37,49 +31,16 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.4.2]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.2</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.2"/>
<updated>2024-09-09T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Device id was broken in the front end <a href="https://github.com/sitespeedio/onlinetest/pull/80">#80</a> and <a href="https://github.com/sitespeedio/onlinetest/pull/81">#81</a>.</li>
</ul>
<ul>
<li>The internal configuration was broken in the way that removing/adding testrunners failed removing correct configurations <a href="https://github.com/sitespeedio/onlinetest/pull/84">#84</a>. This fix also needs <a href="https://github.com/sitespeedio/onlinetest/pull/83">#83</a> in the testrunners.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.4.1]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.1</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.1"/>
<updated>2024-08-23T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix bug so you can choose emulated mobile in GUI <a href="https://github.com/sitespeedio/onlinetest/pull/76">#76</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.4.0]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.0</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.0"/>
<updated>2024-08-02T00:00:00.000Z</updated>
<title type="html"><![CDATA[server 1.7.0]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.0</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.0"/>
<updated>2025-10-22T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Merged slug/label column in search result <a href="https://github.com/sitespeedio/onlinetest/pull/68">#68</a></li>
<li>Updated dependencies (too many PRs).</li>
</ul>
<ul>
<li>Make it possible to choose container that runs the test, using the API <a href="https://github.com/sitespeedio/onlinetest/pull/69/">#69</a></li>
<li>Update to NodeJS 22 <a href="https://github.com/sitespeedio/onlinetest/pull/155">#155</a></li>
</ul>
]]></summary>
<author>
@ -88,28 +49,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.3.2]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.2</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.2"/>
<updated>2024-07-15T00:00:00.000Z</updated>
<title type="html"><![CDATA[server 1.6.5]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.5</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.5"/>
<updated>2025-03-11T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Upgrade to Bull 4.15.1 <a href="https://github.com/sitespeedio/onlinetest/pull/57">#57</a>.</li>
</ul>
<ul>
<li>Default to max 50 finished jobs in the queue <a href="https://github.com/sitespeedio/onlinetest/pull/58">#58</a>.</li>
</ul>
<ul>
<li>Update dev dependencies like ESLint 9 <a href="https://github.com/sitespeedio/onlinetest/pull/62">#62</a>.</li>
</ul>
<ul>
<li>Update DayJS 1.11.11 <a href="https://github.com/sitespeedio/onlinetest/pull/63">#63</a></li>
</ul>
<ul>
<li>Make sure all uncaught errors are caught <a href="https://github.com/sitespeedio/onlinetest/pull/64">#64</a></li>
</ul>
<ul>
<li>Add a keydb configuration file <a href="https://github.com/sitespeedio/onlinetest/pull/56">#56</a></li>
<li>And another fix for script names <a href="https://github.com/sitespeedio/onlinetest/pull/146">#146</a>.</li>
</ul>
]]></summary>
<author>
@ -118,16 +64,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.3.1]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.1</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.1"/>
<updated>2024-06-29T00:00:00.000Z</updated>
<title type="html"><![CDATA[server 1.6.4]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.4</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.4"/>
<updated>2025-03-10T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>If the queue system is down when you add a new test, make sure the status of the test in the database is failed <a href="https://github.com/sitespeedio/onlinetest/pull/50">#50</a>.</li>
</ul>
<ul>
<li>If the queue is not up when you access the start page, make sure that at least after X seconds you get a error page <a href="https://github.com/sitespeedio/onlinetest/pull/53">#53</a>.</li>
<li>Another fix for showing the script name <a href="https://github.com/sitespeedio/onlinetest/pull/145">#145</a>.</li>
</ul>
]]></summary>
<author>
@ -136,34 +79,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.3.0]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.0</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.0"/>
<updated>2024-06-28T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>search: Make label configurable in search result <a href="https://github.com/sitespeedio/onlinetest/pull/46">#46</a>.</li>
</ul>
<ul>
<li>search: Make run date readable <a href="https://github.com/sitespeedio/onlinetest/pull/45">#45</a>.</li>
</ul>
<ul>
<li>Show version number in footer and API <a href="https://github.com/sitespeedio/onlinetest/pull/44">#44</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.2.1]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.1</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.1"/>
<updated>2024-06-27T00:00:00.000Z</updated>
<title type="html"><![CDATA[server 1.6.3]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3"/>
<updated>2025-03-10T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Search: Fix for searching for test type <a href="https://github.com/sitespeedio/onlinetest/pull/42">#42</a>.</li>
<li>Show only the script name and not the full path <a href="https://github.com/sitespeedio/onlinetest/pull/144">#144</a>.</li>
</ul>
]]></summary>
<author>
@ -172,22 +94,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.2.0]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.0</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.0"/>
<updated>2024-06-27T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<title type="html"><![CDATA[server 1.6.3]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3"/>
<updated>2025-02-13T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Search: Add a clear search field button and make location and test type linkable in search result <a href="https://github.com/sitespeedio/onlinetest/pull/39">#39</a>.</li>
</ul>
<ul>
<li>Search: Show 100 search result as default and make it configurable <a href="https://github.com/sitespeedio/onlinetest/pull/38">#38</a>.</li>
</ul>
<ul>
<li>Search: Add last hour search button <a href="https://github.com/sitespeedio/onlinetest/pull/40">#40</a></li>
</ul>
<ul>
<li>Search: Make it confirable to see the slug column in search result <a href="https://github.com/sitespeedio/onlinetest/pull/41">#41</a></li>
<li>There was a bug that when you tried to change the URL after you edited a test with a script, you couldn&#39;t change the URL <a href="https://github.com/sitespeedio/onlinetest/pull/142">#142</a>.</li>
</ul>
]]></summary>
<author>
@ -196,16 +109,50 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 0.1.0]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.1.0</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.1.0"/>
<updated>2024-06-26T00:00:00.000Z</updated>
<title type="html"><![CDATA[server 1.6.2]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.2</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.2"/>
<updated>2025-02-12T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Another label fix.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 1.6.1]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.1</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.1"/>
<updated>2025-02-12T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Guard against empty labels when changing labels <a href="https://github.com/sitespeedio/onlinetest/pull/141">#141</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[server 1.6.0]]></title>
<id>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.0</id>
<link href="https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.0"/>
<updated>2025-02-12T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Make removeOnComplete and removeOnFail in the queue configurable. If you run a large installation with many many tests, you may want to increase the number of tests that will continue to live in the queue after the test has completed (removeOnComplete) <a href="https://github.com/sitespeedio/onlinetest/pull/36">#36</a>.</li>
<li>Add functionality to: edit/add alias to a finished test, rerun a test with the exact same configuration and change the URL of a test and rerun with the same configuration <a href="https://github.com/sitespeedio/onlinetest/pull/137">#137</a>.</li>
</ul>
<ul>
<li>Make attempts (number of tries if a test fail) configurable. By default there is one try <a href="https://github.com/sitespeedio/onlinetest/pull/37">#37</a>.</li>
<li>You can now configure which favicons that is used <a href="https://github.com/sitespeedio/onlinetest/pull/140">#140</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Update to latest sitespeed.io/log <a href="https://github.com/sitespeedio/onlinetest/pull/138">#138</a>.</li>
</ul>
]]></summary>
<author>

View File

@ -4,7 +4,7 @@
<title>server release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of server</description>
<lastBuildDate>Tue, 24 Sep 2024 06:38:13 GMT</lastBuildDate>
<lastBuildDate>Wed, 22 Oct 2025 22:03:43 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>
@ -12,160 +12,111 @@
<category>Web Performance</category>
<atom:link href="https://www.sitespeed.io/feed/server.rss" rel="self" type="application/rss+xml"/>
<item>
<title><![CDATA[server 0.4.5]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.5</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.5</guid>
<pubDate>Tue, 24 Sep 2024 00:00:00 GMT</pubDate>
<title><![CDATA[server 1.7.1]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.1</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.1</guid>
<pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Express 5.0.0 <a href="https://github.com/sitespeedio/onlinetest/pull/86">#86</a>.</li>
</ul>
<ul>
<li>Update body parser <a href="https://github.com/sitespeedio/onlinetest/pull/88">#88</a>.</li>
</ul>
<ul>
<li>Bull 4.16.3 <a href="https://github.com/sitespeedio/onlinetest/pull/87">#87</a></li>
<li>Fix for the search qyuery parameter <a href="https://github.com/sitespeedio/onlinetest/pull/162">#162</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.4.2]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.2</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.2</guid>
<pubDate>Mon, 09 Sep 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Device id was broken in the front end <a href="https://github.com/sitespeedio/onlinetest/pull/80">#80</a> and <a href="https://github.com/sitespeedio/onlinetest/pull/81">#81</a>.</li>
</ul>
<ul>
<li>The internal configuration was broken in the way that removing/adding testrunners failed removing correct configurations <a href="https://github.com/sitespeedio/onlinetest/pull/84">#84</a>. This fix also needs <a href="https://github.com/sitespeedio/onlinetest/pull/83">#83</a> in the testrunners.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.4.1]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.1</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.1</guid>
<pubDate>Fri, 23 Aug 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix bug so you can choose emulated mobile in GUI <a href="https://github.com/sitespeedio/onlinetest/pull/76">#76</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.4.0]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.0</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.4.0</guid>
<pubDate>Fri, 02 Aug 2024 00:00:00 GMT</pubDate>
<title><![CDATA[server 1.7.0]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.0</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.7.0</guid>
<pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Merged slug/label column in search result <a href="https://github.com/sitespeedio/onlinetest/pull/68">#68</a></li>
<li>Updated dependencies (too many PRs).</li>
</ul>
<ul>
<li>Make it possible to choose container that runs the test, using the API <a href="https://github.com/sitespeedio/onlinetest/pull/69/">#69</a></li>
<li>Update to NodeJS 22 <a href="https://github.com/sitespeedio/onlinetest/pull/155">#155</a></li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.3.2]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.2</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.2</guid>
<pubDate>Mon, 15 Jul 2024 00:00:00 GMT</pubDate>
<title><![CDATA[server 1.6.5]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.5</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.5</guid>
<pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Upgrade to Bull 4.15.1 <a href="https://github.com/sitespeedio/onlinetest/pull/57">#57</a>.</li>
</ul>
<ul>
<li>Default to max 50 finished jobs in the queue <a href="https://github.com/sitespeedio/onlinetest/pull/58">#58</a>.</li>
</ul>
<ul>
<li>Update dev dependencies like ESLint 9 <a href="https://github.com/sitespeedio/onlinetest/pull/62">#62</a>.</li>
</ul>
<ul>
<li>Update DayJS 1.11.11 <a href="https://github.com/sitespeedio/onlinetest/pull/63">#63</a></li>
</ul>
<ul>
<li>Make sure all uncaught errors are caught <a href="https://github.com/sitespeedio/onlinetest/pull/64">#64</a></li>
</ul>
<ul>
<li>Add a keydb configuration file <a href="https://github.com/sitespeedio/onlinetest/pull/56">#56</a></li>
<li>And another fix for script names <a href="https://github.com/sitespeedio/onlinetest/pull/146">#146</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.3.1]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.1</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.1</guid>
<pubDate>Sat, 29 Jun 2024 00:00:00 GMT</pubDate>
<title><![CDATA[server 1.6.4]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.4</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.4</guid>
<pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>If the queue system is down when you add a new test, make sure the status of the test in the database is failed <a href="https://github.com/sitespeedio/onlinetest/pull/50">#50</a>.</li>
</ul>
<ul>
<li>If the queue is not up when you access the start page, make sure that at least after X seconds you get a error page <a href="https://github.com/sitespeedio/onlinetest/pull/53">#53</a>.</li>
<li>Another fix for showing the script name <a href="https://github.com/sitespeedio/onlinetest/pull/145">#145</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.3.0]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.0</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.3.0</guid>
<pubDate>Fri, 28 Jun 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>search: Make label configurable in search result <a href="https://github.com/sitespeedio/onlinetest/pull/46">#46</a>.</li>
</ul>
<ul>
<li>search: Make run date readable <a href="https://github.com/sitespeedio/onlinetest/pull/45">#45</a>.</li>
</ul>
<ul>
<li>Show version number in footer and API <a href="https://github.com/sitespeedio/onlinetest/pull/44">#44</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.2.1]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.1</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.1</guid>
<pubDate>Thu, 27 Jun 2024 00:00:00 GMT</pubDate>
<title><![CDATA[server 1.6.3]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3</guid>
<pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Search: Fix for searching for test type <a href="https://github.com/sitespeedio/onlinetest/pull/42">#42</a>.</li>
<li>Show only the script name and not the full path <a href="https://github.com/sitespeedio/onlinetest/pull/144">#144</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.2.0]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.0</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.2.0</guid>
<pubDate>Thu, 27 Jun 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<title><![CDATA[server 1.6.3]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.3</guid>
<pubDate>Thu, 13 Feb 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Search: Add a clear search field button and make location and test type linkable in search result <a href="https://github.com/sitespeedio/onlinetest/pull/39">#39</a>.</li>
</ul>
<ul>
<li>Search: Show 100 search result as default and make it configurable <a href="https://github.com/sitespeedio/onlinetest/pull/38">#38</a>.</li>
</ul>
<ul>
<li>Search: Add last hour search button <a href="https://github.com/sitespeedio/onlinetest/pull/40">#40</a></li>
</ul>
<ul>
<li>Search: Make it confirable to see the slug column in search result <a href="https://github.com/sitespeedio/onlinetest/pull/41">#41</a></li>
<li>There was a bug that when you tried to change the URL after you edited a test with a script, you couldn&#39;t change the URL <a href="https://github.com/sitespeedio/onlinetest/pull/142">#142</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 0.1.0]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.1.0</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#0.1.0</guid>
<pubDate>Wed, 26 Jun 2024 00:00:00 GMT</pubDate>
<title><![CDATA[server 1.6.2]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.2</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.2</guid>
<pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Another label fix.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 1.6.1]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.1</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.1</guid>
<pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Guard against empty labels when changing labels <a href="https://github.com/sitespeedio/onlinetest/pull/141">#141</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[server 1.6.0]]></title>
<link>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.0</link>
<guid>https://github.com/sitespeedio/server/blob/main/CHANGELOG.md#1.6.0</guid>
<pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Make removeOnComplete and removeOnFail in the queue configurable. If you run a large installation with many many tests, you may want to increase the number of tests that will continue to live in the queue after the test has completed (removeOnComplete) <a href="https://github.com/sitespeedio/onlinetest/pull/36">#36</a>.</li>
<li>Add functionality to: edit/add alias to a finished test, rerun a test with the exact same configuration and change the URL of a test and rerun with the same configuration <a href="https://github.com/sitespeedio/onlinetest/pull/137">#137</a>.</li>
</ul>
<ul>
<li>Make attempts (number of tries if a test fail) configurable. By default there is one try <a href="https://github.com/sitespeedio/onlinetest/pull/37">#37</a>.</li>
<li>You can now configure which favicons that is used <a href="https://github.com/sitespeedio/onlinetest/pull/140">#140</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Update to latest sitespeed.io/log <a href="https://github.com/sitespeedio/onlinetest/pull/138">#138</a>.</li>
</ul>
]]></description>
</item>

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>sitespeed.io-release-feed</id>
<title>sitespeed.io release feed</title>
<updated>2024-11-13T06:18:24.139Z</updated>
<updated>2026-01-10T21:40:43.526Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>
@ -17,28 +17,17 @@
<rights>All rights reserved 2022, Peter Hedenskog and team</rights>
<category term="Web Performance"/>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.5.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.5.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.5.0"/>
<updated>2024-11-08T00:00:00.000Z</updated>
<title type="html"><![CDATA[sitespeed.io 39.3.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.3.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.3.0"/>
<updated>2026-01-10T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Upgraded Chrome/Chromedriver to 131 (with a <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2330---2024-11-12">new Browsertime</a>) <a href="https://github.com/sitespeedio/sitespeed.io/pull/4316">#4316</a>.</li>
<li>Updated to Browsertime 26.3 with and updated version of bidi-har that makes it possible to get response bodies in the HAR file for Firefox <a href="https://github.com/sitespeedio/sitespeed.io/pull/4578">#4578</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.4.1]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.1</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.1"/>
<updated>2024-11-08T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<h3>Fixed</h3>
<ul>
<li>It seems to be a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1930110">problem</a> with Firefox 132 inside of Docker. Lets return to 131 for some time <a href="https://github.com/sitespeedio/sitespeed.io/pull/4313">#4313</a>.</li>
<li>Fixed typo in iteration detail page for the cpuConsumption metric, thank you <a href="https://github.com/byte55">Michael Walter</a> for PR <a href="https://github.com/sitespeedio/sitespeed.io/pull/4577">#4577</a>.</li>
</ul>
]]></summary>
<author>
@ -47,13 +36,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.4.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.0"/>
<updated>2024-11-08T00:00:00.000Z</updated>
<title type="html"><![CDATA[sitespeed.io 39.2.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.2.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.2.0"/>
<updated>2025-12-18T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Firefox 132 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4309">#4309</a>.</li>
<li>Updated to Browsertime 26.2 with latest Chromedriver and Edgedriver and a small XVFB fix <a href="https://github.com/sitespeedio/sitespeed.io/pull/4575">#4575</a>.</li>
</ul>
]]></summary>
<author>
@ -62,13 +51,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.3.1]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.1</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.1"/>
<updated>2024-11-04T00:00:00.000Z</updated>
<title type="html"><![CDATA[sitespeed.io 39.1.2]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.2</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.2"/>
<updated>2025-12-17T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix compare plugin when you run visual metrics contentful and perceptual metrics <a href="https://github.com/sitespeedio/sitespeed.io/pull/4308">#4308</a>.</li>
<li>Fix a bug introduced in 39.0.0 where alias was missing when creating some file structure <a href="https://github.com/sitespeedio/sitespeed.io/pull/4574">#4574</a>.</li>
</ul>
]]></summary>
<author>
@ -77,19 +66,28 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.3.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.0"/>
<updated>2024-10-20T00:00:00.000Z</updated>
<title type="html"><![CDATA[sitespeed.io 39.1.1]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.1</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.1"/>
<updated>2025-12-16T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Safer handling for broken URLs. This logs the actual root cause <a href="https://github.com/sitespeedio/sitespeed.io/pull/4573">#4573</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 39.1.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.0"/>
<updated>2025-12-15T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Update to Chrome 130 in the Docker container <a href="https://github.com/sitespeedio/sitespeed.io/pull/4299">#4299</a>.</li>
</ul>
<ul>
<li>Updated to Browsertime <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2320---2024-10-20">23.2.0</a> that has a fix for installting Geckodriver on ARM containers <a href="https://github.com/sitespeedio/sitespeed.io/pull/4303">#4303</a>.</li>
</ul>
<ul>
<li>Updated Chromium from 107 to 130 in the ARM Docker container. This was possible by using the Chromium built by Microsoft (M$) in Playwright <a href="https://github.com/sitespeedio/sitespeed.io/pull/4304">#4304</a>.</li>
<li>Upgrade the Docker container: Chrome and Edge 143, Firefox 146 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4572">#4572</a>.</li>
</ul>
]]></summary>
<author>
@ -98,25 +96,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.2.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.2.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.2.0"/>
<updated>2024-10-14T00:00:00.000Z</updated>
<title type="html"><![CDATA[sitespeed.io 39.0.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.0.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.0.0"/>
<updated>2025-12-15T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.1.4]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.4</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.4"/>
<updated>2024-10-13T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Changed <code>--help</code> message for <code>--firefox.includeResponseBodies</code>. Include response bodies for Firefox stopped to work when we updated how we get the HAR (changed to bidi HAR). See <a href="https://github.com/sitespeedio/sitespeed.io/issues/4295">#4295</a>.</li>
<li>Upgrade to support NodeJS 24 without warnings, include NodeJS 24 in the Docker container, and base the Docker container on Ubuntu 24.04. To make this work I needed to upgrade the Jimp library and then we lost the settings for png screenshots <code>--browsertime.screenshotParams.png.compressionLevel</code> <a href="https://github.com/sitespeedio/sitespeed.io/pull/4570">#4570</a>.</li>
</ul>
]]></summary>
<author>
@ -125,13 +111,16 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.1.3]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.3</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.3"/>
<updated>2024-10-11T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<title type="html"><![CDATA[sitespeed.io 38.6.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.6.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.6.0"/>
<updated>2025-11-02T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Updated to Browsertim 23.1.2 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4294">#4294</a> that includes an update Chrome-HAR that swallows if an timing is broken from the Chrome trace.</li>
<li>Browsertime 25.4.0 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4566">#4566</a>.</li>
</ul>
<ul>
<li>Chrome 142 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4565">#4565</a>.</li>
</ul>
]]></summary>
<author>
@ -140,13 +129,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.1.2]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.2</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.2"/>
<updated>2024-10-09T00:00:00.000Z</updated>
<title type="html"><![CDATA[sitespeed.io 38.5.2]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.2</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.2"/>
<updated>2025-10-24T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Make sure crux setup messages are skipt for analysisstorer <a href="https://github.com/sitespeedio/sitespeed.io/pull/4291">4291</a>.</li>
<li>Upgrade to <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2531---2025-10-24">Browsetime 25.3.1</a> <a href="https://github.com/sitespeedio/sitespeed.io/pull/4562">#4562</a>.</li>
</ul>
]]></summary>
<author>
@ -155,13 +144,44 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 35.1.1]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.1</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.1"/>
<updated>2024-10-08T00:00:00.000Z</updated>
<title type="html"><![CDATA[sitespeed.io 38.5.1]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.1</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.1"/>
<updated>2025-10-21T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Updated to <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2311---2024-10-08">Browsertime 23.1.1</a> that fixes the Firefox HAR timing problem <a href="https://github.com/sitespeedio/sitespeed.io/pull/4289">#4289</a>.</li>
<li>The +1 container has a updated configuration for the GPSI plugin to remove the PWA category. Thank you <a href="https://github.com/ThimoCode">ThimoCode</a> for PR <a href="https://github.com/sitespeedio/plugin-gpsi/pull/58">#58</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[sitespeed.io 38.5.0]]></title>
<id>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.0</id>
<link href="https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.0"/>
<updated>2025-10-18T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Updated the Docker container to use Firefox 144 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4554">#4554</a>.</li>
</ul>
<ul>
<li>Added Browsertime 25.3 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4559">#4559</a> with support for removing some headers in the HAR file (more info about that soon).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated dev dependencies <a href="https://github.com/sitespeedio/sitespeed.io/pull/4556">#4556</a>.</li>
</ul>
<ul>
<li>Updated to Axe-core 4.11.0 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4555">#4555)</a>.</li>
</ul>
<ul>
<li>Updated Ora dependency <a href="https://github.com/sitespeedio/sitespeed.io/pull/4557">#4557</a>.</li>
</ul>
<ul>
<li>Updated the log dependency <a href="https://github.com/sitespeedio/sitespeed.io/pull/4558">#4558</a>. The new version remove the color for error logs.</li>
</ul>
]]></summary>
<author>

View File

@ -4,7 +4,7 @@
<title>sitespeed.io release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of sitespeed.io</description>
<lastBuildDate>Wed, 13 Nov 2024 06:18:24 GMT</lastBuildDate>
<lastBuildDate>Sat, 10 Jan 2026 21:40:43 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>
@ -17,124 +17,144 @@
<category>Web Performance</category>
<atom:link href="https://www.sitespeed.io/feed/rss.xml" rel="self" type="application/rss+xml"/>
<item>
<title><![CDATA[sitespeed.io 35.5.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.5.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.5.0</guid>
<pubDate>Fri, 08 Nov 2024 00:00:00 GMT</pubDate>
<title><![CDATA[sitespeed.io 39.3.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.3.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.3.0</guid>
<pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Upgraded Chrome/Chromedriver to 131 (with a <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2330---2024-11-12">new Browsertime</a>) <a href="https://github.com/sitespeedio/sitespeed.io/pull/4316">#4316</a>.</li>
<li>Updated to Browsertime 26.3 with and updated version of bidi-har that makes it possible to get response bodies in the HAR file for Firefox <a href="https://github.com/sitespeedio/sitespeed.io/pull/4578">#4578</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.4.1]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.1</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.1</guid>
<pubDate>Fri, 08 Nov 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<h3>Fixed</h3>
<ul>
<li>It seems to be a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1930110">problem</a> with Firefox 132 inside of Docker. Lets return to 131 for some time <a href="https://github.com/sitespeedio/sitespeed.io/pull/4313">#4313</a>.</li>
<li>Fixed typo in iteration detail page for the cpuConsumption metric, thank you <a href="https://github.com/byte55">Michael Walter</a> for PR <a href="https://github.com/sitespeedio/sitespeed.io/pull/4577">#4577</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.4.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.4.0</guid>
<pubDate>Fri, 08 Nov 2024 00:00:00 GMT</pubDate>
<title><![CDATA[sitespeed.io 39.2.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.2.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.2.0</guid>
<pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Firefox 132 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4309">#4309</a>.</li>
<li>Updated to Browsertime 26.2 with latest Chromedriver and Edgedriver and a small XVFB fix <a href="https://github.com/sitespeedio/sitespeed.io/pull/4575">#4575</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.3.1]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.1</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.1</guid>
<pubDate>Mon, 04 Nov 2024 00:00:00 GMT</pubDate>
<title><![CDATA[sitespeed.io 39.1.2]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.2</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.2</guid>
<pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix compare plugin when you run visual metrics contentful and perceptual metrics <a href="https://github.com/sitespeedio/sitespeed.io/pull/4308">#4308</a>.</li>
<li>Fix a bug introduced in 39.0.0 where alias was missing when creating some file structure <a href="https://github.com/sitespeedio/sitespeed.io/pull/4574">#4574</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.3.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.3.0</guid>
<pubDate>Sun, 20 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[sitespeed.io 39.1.1]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.1</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.1</guid>
<pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Safer handling for broken URLs. This logs the actual root cause <a href="https://github.com/sitespeedio/sitespeed.io/pull/4573">#4573</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 39.1.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.1.0</guid>
<pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Update to Chrome 130 in the Docker container <a href="https://github.com/sitespeedio/sitespeed.io/pull/4299">#4299</a>.</li>
</ul>
<ul>
<li>Updated to Browsertime <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2320---2024-10-20">23.2.0</a> that has a fix for installting Geckodriver on ARM containers <a href="https://github.com/sitespeedio/sitespeed.io/pull/4303">#4303</a>.</li>
</ul>
<ul>
<li>Updated Chromium from 107 to 130 in the ARM Docker container. This was possible by using the Chromium built by Microsoft (M$) in Playwright <a href="https://github.com/sitespeedio/sitespeed.io/pull/4304">#4304</a>.</li>
<li>Upgrade the Docker container: Chrome and Edge 143, Firefox 146 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4572">#4572</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.2.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.2.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.2.0</guid>
<pubDate>Mon, 14 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[sitespeed.io 39.0.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.0.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#39.0.0</guid>
<pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.1.4]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.4</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.4</guid>
<pubDate>Sun, 13 Oct 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Changed <code>--help</code> message for <code>--firefox.includeResponseBodies</code>. Include response bodies for Firefox stopped to work when we updated how we get the HAR (changed to bidi HAR). See <a href="https://github.com/sitespeedio/sitespeed.io/issues/4295">#4295</a>.</li>
<li>Upgrade to support NodeJS 24 without warnings, include NodeJS 24 in the Docker container, and base the Docker container on Ubuntu 24.04. To make this work I needed to upgrade the Jimp library and then we lost the settings for png screenshots <code>--browsertime.screenshotParams.png.compressionLevel</code> <a href="https://github.com/sitespeedio/sitespeed.io/pull/4570">#4570</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.1.3]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.3</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.3</guid>
<pubDate>Fri, 11 Oct 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<title><![CDATA[sitespeed.io 38.6.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.6.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.6.0</guid>
<pubDate>Sun, 02 Nov 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Updated to Browsertim 23.1.2 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4294">#4294</a> that includes an update Chrome-HAR that swallows if an timing is broken from the Chrome trace.</li>
<li>Browsertime 25.4.0 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4566">#4566</a>.</li>
</ul>
<ul>
<li>Chrome 142 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4565">#4565</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.1.2]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.2</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.2</guid>
<pubDate>Wed, 09 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[sitespeed.io 38.5.2]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.2</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.2</guid>
<pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Make sure crux setup messages are skipt for analysisstorer <a href="https://github.com/sitespeedio/sitespeed.io/pull/4291">4291</a>.</li>
<li>Upgrade to <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2531---2025-10-24">Browsetime 25.3.1</a> <a href="https://github.com/sitespeedio/sitespeed.io/pull/4562">#4562</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 35.1.1]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.1</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#35.1.1</guid>
<pubDate>Tue, 08 Oct 2024 00:00:00 GMT</pubDate>
<title><![CDATA[sitespeed.io 38.5.1]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.1</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.1</guid>
<pubDate>Tue, 21 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Updated to <a href="https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2311---2024-10-08">Browsertime 23.1.1</a> that fixes the Firefox HAR timing problem <a href="https://github.com/sitespeedio/sitespeed.io/pull/4289">#4289</a>.</li>
<li>The +1 container has a updated configuration for the GPSI plugin to remove the PWA category. Thank you <a href="https://github.com/ThimoCode">ThimoCode</a> for PR <a href="https://github.com/sitespeedio/plugin-gpsi/pull/58">#58</a>.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>
</item>
<item>
<title><![CDATA[sitespeed.io 38.5.0]]></title>
<link>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.0</link>
<guid>https://github.com/sitespeedio/sitespeed.io/blob/main/CHANGELOG.md#38.5.0</guid>
<pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Updated the Docker container to use Firefox 144 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4554">#4554</a>.</li>
</ul>
<ul>
<li>Added Browsertime 25.3 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4559">#4559</a> with support for removing some headers in the HAR file (more info about that soon).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Updated dev dependencies <a href="https://github.com/sitespeedio/sitespeed.io/pull/4556">#4556</a>.</li>
</ul>
<ul>
<li>Updated to Axe-core 4.11.0 <a href="https://github.com/sitespeedio/sitespeed.io/pull/4555">#4555)</a>.</li>
</ul>
<ul>
<li>Updated Ora dependency <a href="https://github.com/sitespeedio/sitespeed.io/pull/4557">#4557</a>.</li>
</ul>
<ul>
<li>Updated the log dependency <a href="https://github.com/sitespeedio/sitespeed.io/pull/4558">#4558</a>. The new version remove the color for error logs.</li>
</ul>
]]></description>
<enclosure url="https://www.sitespeed.io/img/logos/sitespeed.io.png" length="0" type="image/png"/>

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>testrunner-release-feed</id>
<title>testrunner release feed</title>
<updated>2024-09-24T06:28:20.179Z</updated>
<updated>2025-10-22T21:28:22.870Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>
@ -16,13 +16,13 @@
<rights>All rights reserved 2022, Peter Hedenskog and team</rights>
<category term="Web Performance"/>
<entry>
<title type="html"><![CDATA[testrunner 0.5.6]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.6</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.6"/>
<updated>2024-09-24T00:00:00.000Z</updated>
<title type="html"><![CDATA[testrunner 1.2.1]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.1</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.1"/>
<updated>2025-10-31T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Bull 4.16.3 <a href="https://github.com/sitespeedio/onlinetest/pull/87">#87</a></li>
<li>Tests running in the Docker container has the wrong path to the scripting file <a href="https://github.com/sitespeedio/onlinetest/pull/167">#167</a>.</li>
</ul>
]]></summary>
<author>
@ -31,64 +31,20 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.5.3]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.3</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.3"/>
<updated>2024-08-02T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Correctly set the hostname in the configuration file <a href="https://github.com/sitespeedio/onlinetest/pull/83">#83</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.5.2]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.2</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.2"/>
<updated>2024-08-02T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix a bug setting the baseline for compare plugin <a href="https://github.com/sitespeedio/onlinetest/pull/71">#71</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.5.1]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.1</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.1"/>
<updated>2024-08-02T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Correct version in package.json</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.5.0]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.0</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.0"/>
<updated>2024-08-02T00:00:00.000Z</updated>
<title type="html"><![CDATA[testrunner 1.2.0]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.0</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.0"/>
<updated>2025-10-22T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>When running compare plugin tests using Docker, set the baseline directory automatically <a href="https://github.com/sitespeedio/onlinetest/pull/70">#70</a></li>
<li>Update to sitespeed.io 38 <a href="https://github.com/sitespeedio/onlinetest/pull/158">#158</a></li>
</ul>
<ul>
<li><ul>
<li>Make it possible to choose container that runs the test, using the API <a href="https://github.com/sitespeedio/onlinetest/pull/69/">#69</a></li>
<li>Update to NodeJS 22 <a href="https://github.com/sitespeedio/onlinetest/pull/155">#155</a></li>
</ul>
</li>
<h3>Fixed</h3>
<ul>
<li>Updated dependencies (too many PRs).</li>
</ul>
]]></summary>
<author>
@ -97,28 +53,20 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.4.1]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.1</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.1"/>
<updated>2024-07-30T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Log testrunner version on startup <a href="https://github.com/sitespeedio/onlinetest/pull/67">#67</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.4.0]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.0</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.0"/>
<updated>2024-07-30T00:00:00.000Z</updated>
<title type="html"><![CDATA[testrunner 1.1.0]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.1.0</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.1.0"/>
<updated>2025-02-12T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Added</h3>
<ul>
<li>Made it possible to map a baseline directory in Docker so you can run compare plugin tests <a href="https://github.com/sitespeedio/onlinetest/pull/66">#66</a>.</li>
<li>Updated to sitespeed.io 36 as default version <a href="https://github.com/sitespeedio/onlinetest/pull/134">#134</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Use latest version of sitespeed.io/logs <a href="https://github.com/sitespeedio/onlinetest/pull/138">#138</a>.</li>
</ul>
<ul>
<li>Safer trap for WPR processes when running NodeJS Testrunner <a href="https://github.com/sitespeedio/onlinetest/pull/139">#139</a>.</li>
</ul>
]]></summary>
<author>
@ -127,13 +75,13 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.3.3]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.3.3</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.3.3"/>
<updated>2024-07-30T00:00:00.000Z</updated>
<title type="html"><![CDATA[testrunner 1.0.7]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.7</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.7"/>
<updated>2025-02-04T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix for running WebPageReplay <a href="https://github.com/sitespeedio/onlinetest/pull/65">#65</a>.</li>
<li>Fix to make sure WPR always is killed whatever happens <a href="https://github.com/sitespeedio/onlinetest/pull/131">#131</a>.</li>
</ul>
]]></summary>
<author>
@ -142,16 +90,88 @@
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 0.2.1]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.2.1</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.2.1"/>
<updated>2024-06-30T00:00:00.000Z</updated>
<title type="html"><![CDATA[testrunner 1.0.6]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.6</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.6"/>
<updated>2025-01-31T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Make sure we await adding things to the report queue <a href="https://github.com/sitespeedio/onlinetest/pull/55">#55</a>.</li>
<li>Disable verbose logging from GUI <a href="https://github.com/sitespeedio/onlinetest/pull/130">#130</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 1.0.5]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.5</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.5"/>
<updated>2025-01-30T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Catch errors in all queue <a href="https://github.com/sitespeedio/onlinetest/pull/54">#54</a>.</li>
<li>Make sure failing tests with a result is accessible <a href="https://github.com/sitespeedio/onlinetest/pull/126">#126</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 1.0.4]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.4</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.4"/>
<updated>2025-01-25T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Replace Intel log with @sitespeed.io/log <a href="https://github.com/sitespeedio/onlinetest/pull/117">#117</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 1.0.3]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.3</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.3"/>
<updated>2024-12-18T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix killing WebPageReplay correctly and correct path to WebPageReplay files <a href="https://github.com/sitespeedio/onlinetest/pull/108">#108</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 1.0.2]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.2</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.2"/>
<updated>2024-12-18T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix broken path to the WebPageReplay script when running as npm package and fix so you also can run desktop test using WebPageReplay when you use npm <a href="https://github.com/sitespeedio/onlinetest/pull/107">#107</a>.</li>
</ul>
]]></summary>
<author>
<name>Sitespeed.io</name>
<uri>https://www.sitespeed.io</uri>
</author>
</entry>
<entry>
<title type="html"><![CDATA[testrunner 1.0.1]]></title>
<id>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.1</id>
<link href="https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.1"/>
<updated>2024-12-06T00:00:00.000Z</updated>
<summary type="html"><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fixed the release flow so the Docker containers get the correct tag.</li>
</ul>
]]></summary>
<author>

View File

@ -4,7 +4,7 @@
<title>testrunner release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of testrunner</description>
<lastBuildDate>Tue, 24 Sep 2024 06:28:20 GMT</lastBuildDate>
<lastBuildDate>Wed, 22 Oct 2025 21:28:22 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>
@ -12,110 +12,126 @@
<category>Web Performance</category>
<atom:link href="https://www.sitespeed.io/feed/testrunner.rss" rel="self" type="application/rss+xml"/>
<item>
<title><![CDATA[testrunner 0.5.6]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.6</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.6</guid>
<pubDate>Tue, 24 Sep 2024 00:00:00 GMT</pubDate>
<title><![CDATA[testrunner 1.2.1]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.1</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.1</guid>
<pubDate>Fri, 31 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Bull 4.16.3 <a href="https://github.com/sitespeedio/onlinetest/pull/87">#87</a></li>
<li>Tests running in the Docker container has the wrong path to the scripting file <a href="https://github.com/sitespeedio/onlinetest/pull/167">#167</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.5.3]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.3</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.3</guid>
<pubDate>Fri, 02 Aug 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Correctly set the hostname in the configuration file <a href="https://github.com/sitespeedio/onlinetest/pull/83">#83</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.5.2]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.2</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.2</guid>
<pubDate>Fri, 02 Aug 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix a bug setting the baseline for compare plugin <a href="https://github.com/sitespeedio/onlinetest/pull/71">#71</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.5.1]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.1</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.1</guid>
<pubDate>Fri, 02 Aug 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Correct version in package.json</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.5.0]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.0</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.5.0</guid>
<pubDate>Fri, 02 Aug 2024 00:00:00 GMT</pubDate>
<title><![CDATA[testrunner 1.2.0]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.0</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.2.0</guid>
<pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>When running compare plugin tests using Docker, set the baseline directory automatically <a href="https://github.com/sitespeedio/onlinetest/pull/70">#70</a></li>
<li>Update to sitespeed.io 38 <a href="https://github.com/sitespeedio/onlinetest/pull/158">#158</a></li>
</ul>
<ul>
<li><ul>
<li>Make it possible to choose container that runs the test, using the API <a href="https://github.com/sitespeedio/onlinetest/pull/69/">#69</a></li>
<li>Update to NodeJS 22 <a href="https://github.com/sitespeedio/onlinetest/pull/155">#155</a></li>
</ul>
</li>
<h3>Fixed</h3>
<ul>
<li>Updated dependencies (too many PRs).</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.4.1]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.1</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.1</guid>
<pubDate>Tue, 30 Jul 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Log testrunner version on startup <a href="https://github.com/sitespeedio/onlinetest/pull/67">#67</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.4.0]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.0</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.4.0</guid>
<pubDate>Tue, 30 Jul 2024 00:00:00 GMT</pubDate>
<title><![CDATA[testrunner 1.1.0]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.1.0</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.1.0</guid>
<pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Added</h3>
<ul>
<li>Made it possible to map a baseline directory in Docker so you can run compare plugin tests <a href="https://github.com/sitespeedio/onlinetest/pull/66">#66</a>.</li>
<li>Updated to sitespeed.io 36 as default version <a href="https://github.com/sitespeedio/onlinetest/pull/134">#134</a>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Use latest version of sitespeed.io/logs <a href="https://github.com/sitespeedio/onlinetest/pull/138">#138</a>.</li>
</ul>
<ul>
<li>Safer trap for WPR processes when running NodeJS Testrunner <a href="https://github.com/sitespeedio/onlinetest/pull/139">#139</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.3.3]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.3.3</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.3.3</guid>
<pubDate>Tue, 30 Jul 2024 00:00:00 GMT</pubDate>
<title><![CDATA[testrunner 1.0.7]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.7</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.7</guid>
<pubDate>Tue, 04 Feb 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix for running WebPageReplay <a href="https://github.com/sitespeedio/onlinetest/pull/65">#65</a>.</li>
<li>Fix to make sure WPR always is killed whatever happens <a href="https://github.com/sitespeedio/onlinetest/pull/131">#131</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 0.2.1]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.2.1</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#0.2.1</guid>
<pubDate>Sun, 30 Jun 2024 00:00:00 GMT</pubDate>
<title><![CDATA[testrunner 1.0.6]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.6</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.6</guid>
<pubDate>Fri, 31 Jan 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Make sure we await adding things to the report queue <a href="https://github.com/sitespeedio/onlinetest/pull/55">#55</a>.</li>
<li>Disable verbose logging from GUI <a href="https://github.com/sitespeedio/onlinetest/pull/130">#130</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 1.0.5]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.5</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.5</guid>
<pubDate>Thu, 30 Jan 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Catch errors in all queue <a href="https://github.com/sitespeedio/onlinetest/pull/54">#54</a>.</li>
<li>Make sure failing tests with a result is accessible <a href="https://github.com/sitespeedio/onlinetest/pull/126">#126</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 1.0.4]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.4</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.4</guid>
<pubDate>Sat, 25 Jan 2025 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Replace Intel log with @sitespeed.io/log <a href="https://github.com/sitespeedio/onlinetest/pull/117">#117</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 1.0.3]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.3</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.3</guid>
<pubDate>Wed, 18 Dec 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix killing WebPageReplay correctly and correct path to WebPageReplay files <a href="https://github.com/sitespeedio/onlinetest/pull/108">#108</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 1.0.2]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.2</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.2</guid>
<pubDate>Wed, 18 Dec 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fix broken path to the WebPageReplay script when running as npm package and fix so you also can run desktop test using WebPageReplay when you use npm <a href="https://github.com/sitespeedio/onlinetest/pull/107">#107</a>.</li>
</ul>
]]></description>
</item>
<item>
<title><![CDATA[testrunner 1.0.1]]></title>
<link>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.1</link>
<guid>https://github.com/sitespeedio/testrunner/blob/main/CHANGELOG.md#1.0.1</guid>
<pubDate>Fri, 06 Dec 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<h3>Fixed</h3>
<ul>
<li>Fixed the release flow so the Docker containers get the correct tag.</li>
</ul>
]]></description>
</item>

View File

@ -2,7 +2,7 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>throttle-release-feed</id>
<title>throttle release feed</title>
<updated>2024-08-26T17:27:51.901Z</updated>
<updated>2024-12-27T07:52:02.796Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<author>
<name>Peter Hedenskog</name>

View File

@ -4,7 +4,7 @@
<title>throttle release feed</title>
<link>https://www.sitespeed.io</link>
<description>New releases and changelog feed of throttle</description>
<lastBuildDate>Mon, 26 Aug 2024 17:27:51 GMT</lastBuildDate>
<lastBuildDate>Fri, 27 Dec 2024 07:52:02 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>

BIN
docs/img/onlinesearch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

View File

@ -1,18 +1,7 @@
import prettier from 'eslint-plugin-prettier';
import unicorn from 'eslint-plugin-unicorn';
import globals from 'globals';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import js from '@eslint/js';
import { FlatCompat } from '@eslint/eslintrc';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});
export default [
{
@ -28,11 +17,11 @@ export default [
'test/prepostscripts/*'
]
},
...compat.extends('eslint:recommended', 'plugin:unicorn/recommended'),
js.configs.recommended,
unicorn.configs.recommended,
{
plugins: {
prettier,
unicorn
prettier
},
languageOptions: {

View File

@ -6,10 +6,8 @@ import { readFileSync, statSync } from 'node:fs';
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
import merge from 'lodash.merge';
import reduce from 'lodash.reduce';
import set from 'lodash.set';
import get from 'lodash.get';
import { findUpSync } from 'find-up';
import { getURLs, getAliases } from './util.js';
import { toArray } from '../support/util.js';
@ -19,6 +17,8 @@ import { config as metricsConfig } from '../plugins/metrics/index.js';
import { config as slackConfig } from '../plugins/slack/index.js';
import { config as htmlConfig } from '../plugins/html/index.js';
import { messageTypes as matrixMessageTypes } from '../plugins/matrix/index.js';
import { findUpSync } from '../support/fileUtil.js';
import { registerPluginOptions } from './pluginOptions.js';
const metricList = Object.keys(friendlynames);
const require = createRequire(import.meta.url);
@ -26,6 +26,17 @@ const version = require('../../package.json').version;
const configFiles = ['.sitespeed.io.json'];
const addedPlugins = yargs(hideBin(process.argv))
.option('plugins.add', { type: 'array' })
.help(false)
.version(false)
.parse();
const globalPluginsToAdd = addedPlugins.plugins?.add || [];
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]);
@ -53,7 +64,7 @@ try {
function validateInput(argv) {
// Check NodeJS major version
const fullVersion = process.versions.node;
const minVersion = 14;
const minVersion = 20;
const majorVersion = fullVersion.split('.')[0];
if (majorVersion < minVersion) {
return (
@ -98,6 +109,11 @@ function validateInput(argv) {
return 'Error: Getting CrUx data do not work running in multi mode.';
}
/*
if (argv.browsertime.cpu && argv.browsertime.enableProfileRun) {
return 'Error: Use either --cpu or --enableProfileRun. Profile run will run one extra iteration to collect cpu/trace data.';
}*/
if (
argv.urlAlias &&
argv._ &&
@ -210,12 +226,9 @@ function validateInput(argv) {
}
export async function parseCommandLine() {
let argvFix = process.argv.map(arg =>
arg === '--android' ? '--android.enabled' : arg
);
let yargsInstance = yargs(hideBin(argvFix));
let parsed = yargsInstance
const fixedArgs = fixAndroidArgs(hideBin(process.argv));
const yargsInstance = yargs(fixedArgs);
yargsInstance
.parserConfiguration({
'camel-case-expansion': false,
'deep-merge-config': true
@ -416,7 +429,7 @@ export async function parseCommandLine() {
})
.option('browsertime.script', {
describe:
'Add custom Javascript that collect metrics and run after the page has finished loading. Note that --script can be passed multiple times if you want to collect multiple metrics. The metrics will automatically be pushed to the summary/detailed summary and each individual page + sent to Graphite/InfluxDB.',
'Add custom Javascript that collect metrics and run after the page has finished loading. Note that --script can be passed multiple times if you want to collect multiple metrics. The metrics will automatically be pushed to the summary/detailed summary and each individual page + sent to Graphite',
alias: ['script'],
group: 'Browser'
})
@ -492,12 +505,6 @@ export async function parseCommandLine() {
describe: 'Collect Contentful Speed Index when you run --visualMetrics.',
group: 'Browser'
})
.option('browsertime.visualMetricsPortable', {
type: 'boolean',
default: true,
describe:
'Use the portable visual-metrics processing script (no ImageMagick dependencies).'
})
.option('browsertime.visualElements', {
type: 'boolean',
alias: ['visualElements'],
@ -508,7 +515,7 @@ export async function parseCommandLine() {
.option('browsertime.scriptInput.visualElements', {
alias: ['scriptInput.visualElements'],
describe:
'Include specific elements in visual elements. Give the element a name and select it with document.body.querySelector. Use like this: --scriptInput.visualElements name:domSelector . Add multiple instances to measure multiple elements. Visual Metrics will use these elements and calculate when they are visible and fully rendered.',
'Include specific elements in visual elements. Give the element a name and select it with document.body.querySelector. Use like this: --scriptInput.visualElements name:domSelector . If you want to measure multiple elements, use a configuration file with an array for the input. Visual Metrics will use these elements and calculate when they are visible and fully rendered.',
group: 'Browser'
})
.option('browsertime.scriptInput.longTask', {
@ -573,13 +580,13 @@ export async function parseCommandLine() {
alias: 'enableProfileRun',
type: 'boolean',
describe:
'Make one extra run that collects the profiling trace log (no other metrics is collected). For Chrome it will collect the timeline trace, for Firefox it will get the Geckoprofiler trace. This means you do not need to get the trace for all runs and can skip the overhead it produces.'
'Make one extra run that collects the profiling trace log (no other metrics is collected). For Chrome it will collect the timeline trace, for Firefox it will get the Geckoprofiler trace. This means you do not need to get the trace for all runs and can skip the overhead it produces. You should not run this together with --cpu since that will get a trace for every iteration.'
})
.option('browsertime.enableVideoRun', {
alias: 'enableVideoRun',
type: 'boolean',
describe:
'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 trace.'
'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.'
})
.option('browsertime.videoParams.filmstripFullSize', {
alias: 'videoParams.filmstripFullSize',
@ -616,10 +623,10 @@ export async function parseCommandLine() {
'Show all screenshots in the filmstrip, independent if they have changed or not.',
group: 'Filmstrip'
})
.option('browsertime.userTimingWhitelist', {
alias: 'userTimingWhitelist',
.option('browsertime.userTimingAllowList', {
alias: 'userTimingAllowList',
describe:
'This option takes a regex that will whitelist which userTimings to capture in the results. All userTimings are captured by default. T',
'This option takes a regex that will whitelist which userTimings to capture in the results. All userTimings are captured by default.',
group: 'Browser'
})
.option('axe.enable', {
@ -644,10 +651,9 @@ export async function parseCommandLine() {
})
.option('browsertime.firefox.includeResponseBodies', {
alias: 'firefox.includeResponseBodies',
describe:
'Warning: This do not work at the moment, see https://github.com/sitespeedio/sitespeed.io/issues/4295',
describe: 'Collect response bodies in the HAR',
default: 'none',
choices: ['none', 'all', 'html'],
choices: ['none', 'all'],
group: 'Firefox'
})
.option('browsertime.firefox.nightly', {
@ -856,8 +862,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:
@ -1155,7 +1161,6 @@ export async function parseCommandLine() {
describe: 'Ignore robots.txt rules of the crawled domain.',
group: 'Crawler'
})
.option('scp.host', {
describe: 'The host.',
group: 'scp'
@ -1342,80 +1347,6 @@ export async function parseCommandLine() {
'Define which messages to send to Graphite. By default we do not send data per run, but you can change that by adding run as one of the options',
group: 'Graphite'
})
.option('influxdb.protocol', {
describe: 'The protocol used to store connect to the InfluxDB host.',
default: 'http',
group: 'InfluxDB'
})
.option('influxdb.host', {
describe: 'The InfluxDB host used to store captured metrics.',
group: 'InfluxDB'
})
.option('influxdb.port', {
default: 8086,
describe: 'The InfluxDB port used to store captured metrics.',
group: 'InfluxDB'
})
.option('influxdb.username', {
describe:
'The InfluxDB username for your InfluxDB instance (only for InfluxDB v1)',
group: 'InfluxDB'
})
.option('influxdb.password', {
describe:
'The InfluxDB password for your InfluxDB instance (only for InfluxDB v1).',
group: 'InfluxDB'
})
.option('influxdb.organisation', {
describe:
'The InfluxDB organisation for your InfluxDB instance (only for InfluxDB v2)',
group: 'InfluxDB'
})
.option('influxdb.token', {
describe:
'The InfluxDB token for your InfluxDB instance (only for InfluxDB v2)',
group: 'InfluxDB'
})
.option('influxdb.version', {
default: 1,
describe: 'The InfluxDB version of your InfluxDB instance.',
type: 'integer',
group: 'InfluxDB'
})
.option('influxdb.database', {
default: 'sitespeed',
describe: 'The database name used to store captured metrics.',
group: 'InfluxDB'
})
.option('influxdb.tags', {
default: 'category=default',
describe:
'A comma separated list of tags and values added to each metric',
group: 'InfluxDB'
})
.option('influxdb.includeQueryParams', {
default: false,
describe:
'Whether to include query parameters from the URL in the InfluxDB keys or not',
type: 'boolean',
group: 'InfluxDB'
})
.option('influxdb.groupSeparator', {
default: '_',
describe:
'Choose which character that will separate a group/domain. Default is underscore, set it to a dot if you wanna keep the original domain name.',
group: 'InfluxDB'
})
.option('influxdb.annotationScreenshot', {
default: false,
type: 'boolean',
describe:
'Include screenshot (from Browsertime) in the annotation. You need to specify a --resultBaseURL for this to work.',
group: 'InfluxDB'
});
parsed
/** Plugins */
.option('plugins.list', {
describe: 'List all configured plugins in the log.',
@ -1504,12 +1435,6 @@ export async function parseCommandLine() {
default: browsertimeConfig.screenshotParams.type,
group: 'Screenshot'
})
.option('browsertime.screenshotParams.png.compressionLevel', {
alias: 'screenshot.png.compressionLevel',
describe: 'zlib compression level',
default: browsertimeConfig.screenshotParams.png.compressionLevel,
group: 'Screenshot'
})
.option('browsertime.screenshotParams.jpg.quality', {
alias: 'screenshot.jpg.quality',
describe: 'Quality of the JPEG screenshot. 1-100',
@ -1521,13 +1446,7 @@ export async function parseCommandLine() {
describe: 'The max size of the screenshot (width and height).',
default: browsertimeConfig.screenshotParams.maxSize,
group: 'Screenshot'
});
/**
InfluxDB cli option
*/
parsed
// Metrics
})
.option('metrics.list', {
describe: 'List all possible metrics in the data folder (metrics.txt).',
type: 'boolean',
@ -1831,7 +1750,7 @@ export async function parseCommandLine() {
type: 'boolean',
group: 'Text'
})
.option('summary-detail', {
.option('summaryDetail', {
describe: 'Show longer text summary to stdout',
default: false,
type: 'boolean',
@ -1872,9 +1791,7 @@ export async function parseCommandLine() {
describe:
'Instead of using the local copy of the hosting database, you can use the latest version through the Green Web Foundation API. This means sitespeed.io will make HTTP GET to the the hosting info.',
group: 'Sustainable'
});
parsed
})
.option('api.key', {
describe: 'The API key to use.',
group: 'API'
@ -1925,9 +1842,7 @@ export async function parseCommandLine() {
.option('api.json', {
describe: 'Output the result as JSON.',
group: 'API'
});
parsed
})
.option('compare.id', {
type: 'string',
describe:
@ -1988,8 +1903,7 @@ export async function parseCommandLine() {
'Selects the method for calculating the Mann-Whitney U test. auto automatically selects between exact and asymptotic based on sample size, exact uses the exact distribution of U, and symptotic uses a normal approximation.',
default: 'auto',
group: 'compare'
});
parsed
})
.option('mobile', {
describe:
'Access pages as mobile a fake mobile device. Set UA and width/height. For Chrome it will use device Moto G4.',
@ -2023,12 +1937,12 @@ export async function parseCommandLine() {
})
.option('urlAlias', {
describe:
'Use an alias for the URL (if you feed URLs from a file you can instead have the alias in the file). You need to pass on the same amount of alias as URLs. The alias is used as the name of the URL on the HTML report and in Graphite/InfluxDB. Pass on multiple --urlAlias for multiple alias/URLs. This will override alias in a file.',
'Use an alias for the URL (if you feed URLs from a file you can instead have the alias in the file). You need to pass on the same amount of alias as URLs. The alias is used as the name of the URL on the HTML report and in Graphite. Pass on multiple --urlAlias for multiple alias/URLs. This will override alias in a file.',
type: 'string'
})
.option('groupAlias', {
describe:
'Use an alias for the group/domain. You need to pass on the same amount of alias as URLs. The alias is used as the name of the group in Graphite/InfluxDB. Pass on multiple --groupAlias for multiple alias/groups. This do not work for scripting at the moment.',
'Use an alias for the group/domain. You need to pass on the same amount of alias as URLs. The alias is used as the name of the group in Graphite. Pass on multiple --groupAlias for multiple alias/groups. This do not work for scripting at the moment.',
type: 'string'
})
.option('utc', {
@ -2036,12 +1950,6 @@ export async function parseCommandLine() {
default: false,
type: 'boolean'
})
.option('logToFile', {
describe:
'Store the log for your run into a file in logs/sitespeed.io.log',
default: false,
type: 'boolean'
})
.option('useHash', {
describe:
'If your site uses # for URLs and # give you unique URLs you need to turn on useHash. By default is it turned off, meaning URLs with hash and without hash are treated as the same URL',
@ -2057,6 +1965,11 @@ export async function parseCommandLine() {
.option('name', {
describe: 'Give your test a name.'
})
.option('logLevel', {
type: 'string',
choices: ['trace', 'verbose', 'debug', 'info', 'warning', 'error'],
describe: 'Manually set the min log level'
})
.option('open', {
alias: ['o', 'view'],
describe:
@ -2125,8 +2038,12 @@ export async function parseCommandLine() {
}
return plugins;
}
})
// .describe('browser', 'Specify browser')
});
// .describe('browser', 'Specify browser')
await registerPluginOptions(yargsInstance, globalPluginsToAdd);
let parsed = yargsInstance
.wrap(yargsInstance.terminalWidth())
// .check(validateInput)
.epilog(
@ -2138,14 +2055,10 @@ export async function parseCommandLine() {
argv = parsed.argv;
// aliases are long options -> short option
const aliasLookup = reduce(
aliases,
(lookup, value, key) => {
lookup.set(value[0], key);
return lookup;
},
new Map()
);
const aliasLookup = new Map();
for (const [key, value] of Object.entries(aliases)) {
aliasLookup.set(value[0], key);
}
let explicitOptions = yargs(hideBin(process.argv)).argv;
@ -2154,9 +2067,8 @@ export async function parseCommandLine() {
yargsInstance.getOptions().configObjects[0]
);
explicitOptions = reduce(
explicitOptions,
(result, value, key) => {
explicitOptions = Object.entries(explicitOptions).reduce(
(result, [key, value]) => {
if (aliasLookup.has(key)) {
const fullKey = aliasLookup.get(key);
result = set(result, fullKey, value);
@ -2201,7 +2113,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,
@ -2236,6 +2148,11 @@ export async function parseCommandLine() {
set(argv, 'browsertime.useHash', true);
}
// Pass on webpagereplay setup to browsertime
if (argv.webpagereplay) {
set(argv, 'browsertime.webpagereplay', true);
}
if (argv.browsertime.docker) {
set(argv, 'browsertime.video', get(argv, 'browsertime.video', true));
set(
@ -2271,7 +2188,9 @@ export async function parseCommandLine() {
);
}
let urlsMetaData = getAliases(argv._, argv.urlAlias, argv.groupAlias);
let urlsMetaData = argv.multi
? {}
: getAliases(argv._, argv.urlAlias, argv.groupAlias);
// Copy the alias so it is also used by Browsertime
if (argv.urlAlias) {
// Browsertime has it own way of handling alias

42
lib/cli/pluginOptions.js Normal file
View File

@ -0,0 +1,42 @@
import { importGlobalSilent } from 'import-global';
/**
* Dynamically load and register CLI options from plugins.
*
* @param {import('yargs').Argv} yargsInstance - The yargs instance to extend.
* @param {string[]} plugins - Array of plugin module names.
* @returns {Promise<void>}
*/
export async function registerPluginOptions(yargsInstance, plugins) {
for (const pluginName of plugins) {
try {
// Dynamically import the plugin
let plugin = await importGlobalSilent(pluginName);
// If the plugin exports a function to get CLI options, merge them
if (
plugin &&
plugin.default &&
typeof plugin.default.getCliOptions === 'function'
) {
const options = plugin.default.getCliOptions();
yargsInstance.options(options);
} else {
try {
const plugin = await import(pluginName);
if (
plugin &&
plugin.default &&
typeof plugin.default.getCliOptions === 'function'
) {
const options = plugin.default.getCliOptions();
yargsInstance.options(options);
}
} catch {
// Swallow this silent
}
}
} catch {
// Swallow this silent
}
}
}

View File

@ -1,100 +1,9 @@
import intel from 'intel';
import { createWriteStream } from 'node:fs';
import { inherits } from 'node:util';
const {
INFO,
DEBUG,
VERBOSE,
TRACE,
NONE,
basicConfig,
Logger,
Handler,
Formatter
} = intel;
import { configureLog } from '@sitespeed.io/log';
// FileHandler isn't exposed in Intel when we moved to ESM.
// To fix that for now we just use the same code as Intel.
function StreamHandler(options) {
options = options || {};
if (!options.stream) {
options = { stream: options };
}
Handler.call(this, options);
this._stream = options.stream;
}
inherits(StreamHandler, Handler);
StreamHandler.prototype.emit = function streamEmit(record) {
this._stream.write(this.format(record) + '\n');
};
function FileHandler(options) {
if (typeof options === 'string') {
options = { file: options };
}
this._file = options.file;
options.stream = this._open();
StreamHandler.call(this, options);
}
inherits(FileHandler, StreamHandler);
FileHandler.prototype._open = function open() {
return createWriteStream(this._file, { flags: 'a' });
};
export function configure(options, logDir) {
options = options || {};
let level = INFO;
switch (options.verbose) {
case 1: {
level = DEBUG;
break;
}
case 2: {
level = VERBOSE;
break;
}
case 3: {
level = TRACE;
break;
}
default: {
break;
}
}
if (options.silent) {
level = NONE;
}
if (level === INFO) {
basicConfig({
format: '[%(date)s] %(levelname)s: %(message)s',
level: level
});
} else {
basicConfig({
format: '[%(date)s] %(levelname)s: [%(name)s] %(message)s',
level: level
});
}
if (options.logToFile) {
let logger = new Logger();
logger.addHandler(
new FileHandler({
file: logDir + '/sitespeed.io.log',
formatter: new Formatter({
format: '[%(date)s] %(levelname)s: [%(name)s] %(message)s',
level: level
})
})
);
}
export function configure(options = {}) {
configureLog({
level: options.logLevel ?? undefined,
verbose: options.verbose ?? 0,
silent: options.silent ?? false
});
}

View File

@ -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_) {
@ -79,12 +81,18 @@ export async function loadPlugins(pluginNames, options, context, queue) {
plugins.push(p);
} catch (error) {
// try global
let { default: plugin } = await importGlobalSilent(name);
if (plugin) {
let p = new plugin(options, context, queue);
plugins.push(p);
} else {
console.error("Couldn't load plugin %s: %s", name, error_);
try {
const plugin = await importGlobalSilent(name);
if (plugin) {
let p = new plugin.default(options, context, queue);
plugins.push(p);
} else {
console.error("Couldn't load plugin %s: %s", name, error_);
// if it fails here, let it fail hard
throw error;
}
} catch {
console.error("Couldn't find/load plugin %s", name);
// if it fails here, let it fail hard
throw error;
}

112
lib/core/queue.js Normal file
View File

@ -0,0 +1,112 @@
// Simplified implementation of concurrent-queue
// https://www.npmjs.com/package/concurrent-queue
export function createQueue() {
let concurrency = Number.POSITIVE_INFINITY;
let processor;
const tasks = [];
let runningCount = 0;
const enqueuedCallbacks = [];
const processingStartedCallbacks = [];
const processingEndedCallbacks = [];
const drainedCallbacks = [];
/**
* We will trigger drained callbacks when:
* tasks.length === 0 and runningCount === 0
*/
function checkDrained() {
if (tasks.length === 0 && runningCount === 0) {
for (const cb of drainedCallbacks) {
cb();
}
}
}
/**
* Attempt to start processing more tasks if we have
* capacity (runningCount < concurrency).
*/
function tryProcessNext() {
while (tasks.length > 0 && runningCount < concurrency) {
const item = tasks.shift();
runningCount++;
for (const cb of processingStartedCallbacks) {
cb({ item });
}
const promise = Promise.resolve(processor(item));
promise
.then(() => {
// Fire processingEnded callbacks
for (const cb of processingEndedCallbacks) {
cb({ item, err: undefined });
}
})
.catch(error => {
// Fire processingEnded callbacks with an error
for (const cb of processingEndedCallbacks) {
cb({ item, err: error });
}
})
.finally(() => {
runningCount--;
checkDrained();
tryProcessNext();
});
}
}
const queue = function enqueue(item) {
for (const cb of enqueuedCallbacks) {
cb({ item });
}
tasks.push(item);
tryProcessNext();
};
queue.limit = options => {
if (options && typeof options.concurrency === 'number') {
concurrency = options.concurrency;
}
return queue;
};
queue.process = fn => {
processor = fn;
return queue;
};
queue.enqueued = callback => {
enqueuedCallbacks.push(callback);
return queue;
};
queue.processingStarted = callback => {
processingStartedCallbacks.push(callback);
return queue;
};
queue.processingEnded = callback => {
processingEndedCallbacks.push(callback);
return queue;
};
queue.drained = callback => {
drainedCallbacks.push(callback);
return queue;
};
Object.defineProperty(queue, 'isDrained', {
get() {
return tasks.length === 0 && runningCount === 0;
}
});
return queue;
}

View File

@ -1,17 +1,14 @@
/* eslint no-console:0 */
import cq from 'concurrent-queue';
import intel from 'intel';
import { getLogger } from '@sitespeed.io/log';
import { messageMaker } from '../support/messageMaker.js';
import {
registerQueueTime,
registerProcessingTime,
generateStatistics
} from './queueStatistics.js';
import { createQueue } from './queue.js';
const make = messageMaker('queueHandler').make;
const log = intel.getLogger('sitespeedio.queuehandler');
const log = getLogger('sitespeedio.queuehandler');
function shortenData(key, value) {
if (key === 'data') {
@ -103,36 +100,32 @@ export class QueueHandler {
this.queues = plugins
.filter(plugin => plugin.processMessage)
.map(plugin => {
const concurrency = plugin.concurrency || Number.POSITIVE_INFINITY;
const queue = cq().limit({ concurrency });
const concurrency = plugin.concurrency ?? Number.POSITIVE_INFINITY;
// Create a queue with that concurrency
const queue = createQueue().limit({ concurrency });
queue.plugin = plugin;
const messageWaitingStart = {},
messageProcessingStart = {};
const messageWaitingStart = {};
const messageProcessingStart = {};
queue.enqueued(object => {
const message = object.item;
const { item: message } = object;
messageWaitingStart[message.uuid] = process.hrtime();
});
queue.processingStarted(object => {
const message = object.item;
const { item: message } = object;
const waitingDuration = process.hrtime(
messageWaitingStart[message.uuid]
),
waitingNanos = waitingDuration[0] * 1e9 + waitingDuration[1];
messageWaitingStart[message.uuid]
);
const waitingNanos = waitingDuration[0] * 1e9 + waitingDuration[1];
registerQueueTime(message, queue.plugin, waitingNanos);
messageProcessingStart[message.uuid] = process.hrtime();
});
// FIXME handle rejections (i.e. failures while processing messages) properly
queue.processingEnded(object => {
const message = object.item;
const error = object.err;
const { item: message, err: error } = object;
if (error) {
let rejectionMessage =
'Rejected ' +
@ -140,9 +133,9 @@ export class QueueHandler {
' for plugin: ' +
plugin.getName();
if (message && message.url)
rejectionMessage += ', url: ' + message.url;
if (message?.url) {
rejectionMessage += `, url: ${message.url}`;
}
if (error.stack) {
log.error(error.stack);
}
@ -154,7 +147,6 @@ export class QueueHandler {
);
const processingNanos =
processingDuration[0] * 1e9 + processingDuration[1];
registerProcessingTime(message, queue.plugin, processingNanos);
});
@ -221,9 +213,9 @@ export class QueueHandler {
}
async startProcessingQueues() {
for (let item of this.queues) {
const queue = item.queue,
plugin = item.plugin;
for (const item of this.queues) {
const { queue, plugin } = item;
// For each queue, set up the processor that handles messages
queue.process(message =>
Promise.resolve(plugin.processMessage(message, this))
);

View File

@ -1,15 +1,15 @@
import { parse, format } from 'node:url';
import path from 'node:path';
import { resultUrls } from './resultUrls.js';
import { storageManager } from './storageManager.js';
function getDomainOrFileName(input) {
let domainOrFile = input;
domainOrFile = domainOrFile.startsWith('http')
? parse(domainOrFile).hostname
: path.basename(domainOrFile).replaceAll('.', '_');
return domainOrFile;
if (input.startsWith('http')) {
const url = new URL(input);
return url.hostname;
}
return path.basename(input).replaceAll('.', '_');
}
export function resultsStorage(input, timestamp, options) {
@ -34,10 +34,19 @@ export function resultsStorage(input, timestamp, options) {
storagePathPrefix = path.join(...resultsSubFolders);
if (resultBaseURL) {
const url = parse(resultBaseURL);
resultsSubFolders.unshift(url.pathname.slice(1));
url.pathname = resultsSubFolders.join('/');
resultUrl = format(url);
const url = new URL(resultBaseURL);
const basePath = url.pathname.slice(1); // drop leading '/'
if (basePath) {
resultsSubFolders.unshift(basePath);
}
const newPath = resultsSubFolders.join('/');
// Ensure leading slash for pathname
url.pathname = newPath.startsWith('/') ? newPath : `/${newPath}`;
resultUrl = url.toString();
}
return {

View File

@ -1,51 +1,77 @@
import { parse } from 'node:url';
import { createHash } from 'node:crypto';
import path from 'node:path';
import { getLogger } from '@sitespeed.io/log';
import { isEmpty } from '../../support/util.js';
import isEmpty from 'lodash.isempty';
import intel from 'intel';
const log = getLogger('sitespeedio.file');
const log = intel.getLogger('sitespeedio.file');
function toSafeKey(key) {
// U+2013 : EN DASH as used on https://en.wikipedia.org/wiki/201920_coronavirus_pandemic
return key.replaceAll(/[ %&()+,./:?|~]|%7C/g, '-');
function isHttpLikeUrl(s) {
if (typeof s !== 'string' || s.length === 0) return false;
if (s.startsWith('//')) return true;
return /^https?:\/\//iu.test(s);
}
export function pathToFolder(url, options, alias) {
const useHash = options.useHash;
const parsedUrl = parse(decodeURIComponent(url));
function toSafeKey(key) {
return key.replaceAll(/[ %&()+,./:?|~]|%7C/gu, '-');
}
const pathSegments = [];
function md5Hex8(s) {
return createHash('md5').update(s).digest('hex').slice(0, 8);
}
function normalizeFsPath(input) {
let n = path.normalize(input);
if (n.startsWith(`.${path.sep}`)) n = n.slice(2);
return n;
}
export function pathToFolder(input, options, alias) {
if (options.useSameDir) return '';
let hostname = '';
let pathname = '';
let search = '';
let hash = '';
const isUrl = isHttpLikeUrl(input);
if (isUrl) {
const raw = input.startsWith('//') ? `http:${input}` : input;
const u = new URL(raw);
hostname = u.hostname;
pathname = u.pathname; // '/'-separated
search = u.search; // includes '?'
hash = u.hash; // includes '#'
} else {
hostname = 'file';
const fsNormalized = normalizeFsPath(input);
pathname = `${path.sep}${fsNormalized}`;
}
const pathSegments = ['pages', hostname.split('.').join('_')];
const urlSegments = [];
pathSegments.push('pages', parsedUrl.hostname.split('.').join('_'));
if (options.urlMetaData && options.urlMetaData[url]) {
pathSegments.push(options.urlMetaData[url]);
if (options.urlMetaData && options.urlMetaData[input]) {
pathSegments.push(options.urlMetaData[input]);
} else if (alias) {
pathSegments.push(alias);
} else {
if (!isEmpty(parsedUrl.pathname)) {
urlSegments.push(...parsedUrl.pathname.split('/').filter(Boolean));
const parts = isUrl
? pathname.split('/').filter(Boolean)
: pathname.split(/[\\/]/u).filter(Boolean);
if (!isEmpty(parts)) urlSegments.push(...parts);
if (isUrl) {
if (options.useHash && !isEmpty(hash))
urlSegments.push(`hash-${md5Hex8(hash)}`);
if (!isEmpty(search)) urlSegments.push(`query-${md5Hex8(search)}`);
}
if (useHash && !isEmpty(parsedUrl.hash)) {
const md5 = createHash('md5'),
hash = md5.update(parsedUrl.hash).digest('hex').slice(0, 8);
urlSegments.push('hash-' + hash);
}
if (!isEmpty(parsedUrl.search)) {
const md5 = createHash('md5'),
hash = md5.update(parsedUrl.search).digest('hex').slice(0, 8);
urlSegments.push('query-' + hash);
}
// This is used from sitespeed.io to match URLs on Graphite
if (options.storeURLsAsFlatPageOnDisk) {
const folder = toSafeKey(urlSegments.join('_').concat('_'));
const folder = toSafeKey(`${urlSegments.join('_')}_`);
if (folder.length > 255) {
log.info(
`The URL ${url} hit the 255 character limit used when stored on disk, you may want to give your URL an alias to make sure it will not collide with other URLs.`
`The URL ${input} hit the 255 character limit used when stored on disk, you may want to give your URL an alias to make sure it will not collide with other URLs.`
);
pathSegments.push(folder.slice(0, 254));
} else {
@ -58,11 +84,9 @@ export function pathToFolder(url, options, alias) {
// pathSegments.push('data');
for (const [index, segment] of pathSegments.entries()) {
if (segment) {
pathSegments[index] = segment.replaceAll(/[^\w.\u0621-\u064A-]/gi, '-');
}
for (const [i, seg] of pathSegments.entries()) {
if (seg) pathSegments[i] = seg.replaceAll(/[^\w.\u0621-\u064A-]/giu, '-');
}
return pathSegments.join('/').concat('/');
return `${path.join(...pathSegments)}${path.sep}`;
}

View File

@ -9,12 +9,12 @@ import {
writeFile as _writeFile
} from 'node:fs';
import { copy } from 'fs-extra/esm';
import intel from 'intel';
import { cp } from 'node:fs/promises';
import { getLogger } from '@sitespeed.io/log';
import { pathToFolder } from './pathToFolder.js';
const log = intel.getLogger('sitespeedio.storageManager');
const log = getLogger('sitespeedio.storageManager');
const mkdir = promisify(_mkdir);
const readdir = promisify(_readdir);
const lstat = promisify(_lstat);
@ -69,10 +69,12 @@ export function storageManager(baseDir, storagePathPrefix, options) {
return storagePathPrefix;
},
copyToResultDir(filename) {
return this.createDirectory().then(dir => copy(filename, dir));
return this.createDirectory().then(dir =>
cp(filename, dir, { recursive: true })
);
},
copyFileToDir(filename, dir) {
return copy(filename, dir);
return cp(filename, dir, { recursive: true });
},
// TODO is missing alias
removeDataForUrl(url) {

View File

@ -1,4 +1,3 @@
import { parse } from 'node:url';
import { messageMaker } from '../support/messageMaker.js';
const make = messageMaker('url-reader').make;
@ -15,7 +14,7 @@ export function findUrls(queue, options) {
options.urlsMetaData[url] &&
options.urlsMetaData[url].groupAlias
? options.urlsMetaData[url].groupAlias
: parse(url).hostname
: new URL(url).hostname
}
)
);

View File

@ -1,6 +1,6 @@
import isEmpty from 'lodash.isempty';
import { SitespeedioPlugin } from '@sitespeed.io/plugin';
import { AssetsAggregator } from './aggregator.js';
import { isEmpty } from '../../support/util.js';
const DEFAULT_METRICS_LARGEST_ASSETS = ['image.0.transferSize'];
export default class AssetsPlugin extends SitespeedioPlugin {

View File

@ -1,21 +1,19 @@
const axe = require('axe-core').source;
const clone = require('lodash.clonedeep');
const log = require('intel').getLogger('sitespeedio.plugin.axe');
module.exports = async function runAxe(context) {
// Insert the axe source
await context.selenium.driver.executeScript(axe);
const runOptions = context.options.axe.run
? clone(context.options.axe.run)
? structuredClone(context.options.axe.run)
: {};
const configureOptions = context.options.axe
? clone(context.options.axe)
? structuredClone(context.options.axe)
: {};
delete configureOptions.run;
if (Object.keys(configureOptions).length > 0) {
log.info('Configure AXE with %j', configureOptions);
context.log.info('Configure AXE with %j', configureOptions);
}
await context.selenium.driver.executeScript(
`axe.configure(${JSON.stringify(configureOptions)});`,
@ -23,7 +21,7 @@ module.exports = async function runAxe(context) {
);
if (runOptions) {
log.info('Run AXE with run options %j', runOptions);
context.log.info('Run AXE with run options %j', runOptions);
}
// Get the result from axe

View File

@ -1,11 +1,11 @@
import path from 'node:path';
import { readFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import intel from 'intel';
import { getLogger } from '@sitespeed.io/log';
import axe from 'axe-core';
const { version: axeVersion } = axe;
import { SitespeedioPlugin } from '@sitespeed.io/plugin';
const log = intel.getLogger('sitespeedio.plugin.axe');
const log = getLogger('sitespeedio.plugin.axe');
const __dirname = fileURLToPath(new URL('.', import.meta.url));
export default class AxePlugin extends SitespeedioPlugin {

View File

@ -1,13 +1,12 @@
import path from 'node:path';
import merge from 'lodash.merge';
import forEach from 'lodash.foreach';
import set from 'lodash.set';
import get from 'lodash.get';
import coach from 'coach-core';
import { BrowsertimeEngine, browserScripts } from 'browsertime';
const { getDomAdvice } = coach;
import intel from 'intel';
const log = intel.getLogger('plugin.browsertime');
import { getLogger } from '@sitespeed.io/log';
const log = getLogger('plugin.browsertime');
const defaultBrowsertimeOptions = {
statistics: true
@ -141,9 +140,9 @@ function addExtraScripts(scriptsByCategory, pluginScripts) {
// For all different script in the array
for (let scripts of pluginScripts) {
// and then for all scripts in that category
forEach(scripts.scripts, function (script, name) {
for (const [name, script] of Object.entries(scripts.scripts)) {
set(scriptsByCategory, scripts.category + '.' + name, script);
});
}
}
return scriptsByCategory;
}
@ -153,9 +152,9 @@ function setupAsynScripts(asyncScripts) {
// For all different script in the array
for (let scripts of asyncScripts) {
// and then for all scripts in that category
forEach(scripts.scripts, function (script, name) {
for (const [name, script] of Object.entries(scripts.scripts)) {
set(allAsyncScripts, scripts.category + '.' + name, script);
});
}
}
return allAsyncScripts;
}

View File

@ -1,4 +1,3 @@
import forEach from 'lodash.foreach';
import { pushGroupStats, setStatsSummary } from '../../support/statsHelpers.js';
const timings = ['firstPaint', 'timeToDomContentFlushed'];
@ -62,7 +61,7 @@ export class BrowsertimeAggregator {
);
}
forEach(timings, timing => {
for (const timing of timings) {
if (browsertimeRunData.timings[timing]) {
pushGroupStats(
this.statsPerType,
@ -71,9 +70,11 @@ export class BrowsertimeAggregator {
browsertimeRunData.timings[timing]
);
}
});
}
forEach(browsertimeRunData.timings.navigationTiming, (value, name) => {
for (const [name, value] of Object.entries(
browsertimeRunData.timings.navigationTiming
)) {
if (value) {
pushGroupStats(
this.statsPerType,
@ -82,43 +83,47 @@ export class BrowsertimeAggregator {
value
);
}
});
}
forEach(browsertimeRunData.timings.pageTimings, (value, name) => {
for (const [name, value] of Object.entries(
browsertimeRunData.timings.pageTimings
)) {
pushGroupStats(
this.statsPerType,
this.groups[group],
['pageTimings', name],
value
);
});
}
forEach(browsertimeRunData.timings.paintTiming, (value, name) => {
for (const [name, value] of Object.entries(
browsertimeRunData.timings.paintTiming
)) {
pushGroupStats(
this.statsPerType,
this.groups[group],
['paintTiming', name],
value
);
});
}
forEach(browsertimeRunData.timings.userTimings.marks, timing => {
for (const timing of browsertimeRunData.timings.userTimings.marks) {
pushGroupStats(
this.statsPerType,
this.groups[group],
['userTimings', 'marks', timing.name],
timing.startTime
);
});
}
forEach(browsertimeRunData.timings.userTimings.measures, timing => {
for (const timing of browsertimeRunData.timings.userTimings.measures) {
pushGroupStats(
this.statsPerType,
this.groups[group],
['userTimings', 'measures', timing.name],
timing.duration
);
});
}
}
if (
@ -134,28 +139,31 @@ export class BrowsertimeAggregator {
}
// pick up one level of custom metrics
forEach(browsertimeRunData.custom, (value, name) => {
pushGroupStats(
this.statsPerType,
this.groups[group],
['custom', name],
value
);
});
forEach(browsertimeRunData.visualMetrics, (value, name) => {
// Sometimes visual elements fails and gives us null values
// And skip VisualProgress, ContentfulSpeedIndexProgress and others
if (!name.includes('Progress') && value !== null) {
if (browsertimeRunData.custom) {
for (const [name, value] of Object.entries(browsertimeRunData.custom)) {
pushGroupStats(
this.statsPerType,
this.groups[group],
['visualMetrics', name],
['custom', name],
value
);
}
});
}
if (browsertimeRunData.visualMetrics) {
for (const [name, value] of Object.entries(
browsertimeRunData.visualMetrics
)) {
if (!name.includes('Progress') && value !== null) {
pushGroupStats(
this.statsPerType,
this.groups[group],
['visualMetrics', name],
value
);
}
}
}
if (browsertimeRunData.cpu) {
if (browsertimeRunData.cpu.longTasks) {
pushGroupStats(
@ -226,12 +234,22 @@ export class BrowsertimeAggregator {
summary.userTimings = {};
const marksData = {},
measuresData = {};
forEach(object.userTimings.marks, (stats, timingName) => {
setStatsSummary(marksData, timingName, stats);
});
forEach(object.userTimings.measures, (stats, timingName) => {
setStatsSummary(measuresData, timingName, stats);
});
if (object.userTimings.marks) {
for (const [timingName, stats] of Object.entries(
object.userTimings.marks
)) {
setStatsSummary(marksData, timingName, stats);
}
}
if (object.userTimings.measures) {
for (const [timingName, stats] of Object.entries(
object.userTimings.measures
)) {
setStatsSummary(measuresData, timingName, stats);
}
}
summary.userTimings.marks = marksData;
summary.userTimings.measures = measuresData;
} else if ('cpu'.includes(name)) {
@ -239,13 +257,17 @@ export class BrowsertimeAggregator {
const categories = {};
summary.cpu = {};
forEach(object.cpu.longTasks, (stats, name) => {
setStatsSummary(longTasks, name, stats);
});
if (object.cpu.longTasks) {
for (const [name, stats] of Object.entries(object.cpu.longTasks)) {
setStatsSummary(longTasks, name, stats);
}
}
forEach(object.cpu.categories, (stats, name) => {
setStatsSummary(categories, name, stats);
});
if (object.cpu.categories) {
for (const [name, stats] of Object.entries(object.cpu.categories)) {
setStatsSummary(categories, name, stats);
}
}
summary.cpu.longTasks = longTasks;
summary.cpu.categories = categories;
@ -255,9 +277,9 @@ export class BrowsertimeAggregator {
summary.memory = memory.memory;
} else {
const categoryData = {};
forEach(object[name], (stats, timingName) => {
for (const [timingName, stats] of Object.entries(object[name])) {
setStatsSummary(categoryData, timingName, stats);
});
}
summary[name] = categoryData;
}
return summary;

View File

@ -2,8 +2,8 @@ import { readdir as _readdir } from 'node:fs';
import { promisify } from 'node:util';
import path from 'node:path';
const readdir = promisify(_readdir);
import intel from 'intel';
const log = intel.getLogger('sitespeedio.plugin.browsertime');
import { getLogger } from '@sitespeed.io/log';
const log = getLogger('sitespeedio.plugin.browsertime');
function findFrame(videoFrames, time) {
let frame = videoFrames[0];

View File

@ -1,12 +1,12 @@
import { parse } from 'node:url';
// eslint-disable-next-line unicorn/no-named-default
import { default as _merge } from 'lodash.merge';
import intel from 'intel';
const log = intel.getLogger('plugin.browsertime');
import { getLogger } from '@sitespeed.io/log';
import { configureLogging } from 'browsertime';
const log = getLogger('plugin.browsertime');
import dayjs from 'dayjs';
import isEmpty from 'lodash.isempty';
import get from 'lodash.get';
import { Stats } from 'fast-stats';
import coach from 'coach-core';
@ -21,6 +21,7 @@ import { SitespeedioPlugin } from '@sitespeed.io/plugin';
import { summarizeStats } from '../../support/statsHelpers.js';
import { analyzeUrl } from './analyzer.js';
import { isEmpty } from '../../support/util.js';
import { BrowsertimeAggregator } from './browsertimeAggregator.js';
import { metricsPageSummary as DEFAULT_METRICS_PAGE_SUMMARY } from './default/metricsPageSummary.js';
@ -88,13 +89,13 @@ export default class BrowsertimePlugin extends SitespeedioPlugin {
'browsertime.run'
);
this.axeAggregatorTotal = new AxeAggregator(this.options);
configureLogging(options);
}
async processMessage(message) {
const { configureLogging } = await import('browsertime');
configureLogging(this.options);
const options = this.options;
switch (message.type) {
// When sistespeed.io starts, a setup messages is posted on the queue
// When sitespeed.io starts, a setup messages is posted on the queue
// and all plugins can tell other plugins that they are alive and are ready
// to receive configuration
case 'sitespeedio.setup': {
@ -104,12 +105,18 @@ export default class BrowsertimePlugin extends SitespeedioPlugin {
if (this.options.urlMetaData) {
for (let url of Object.keys(this.options.urlMetaData)) {
const alias = this.options.urlMetaData[url];
const group = parse(url).hostname;
this.allAlias[alias] = url;
super.sendMessage('browsertime.alias', alias, {
url,
group
});
try {
const group = new URL(url).hostname;
this.allAlias[alias] = url;
super.sendMessage('browsertime.alias', alias, {
url,
group
});
} catch (error) {
log.error(
'Could not get group for URL:' + url + ' with error' + error
);
}
}
}
@ -183,11 +190,11 @@ export default class BrowsertimePlugin extends SitespeedioPlugin {
// https://github.com/sitespeedio/sitespeed.io/issues/2341
for (const element of result) {
// Browsertime supports alias for URLS in a script
const alias = element.info.alias;
const alias = element.info?.alias;
if (alias) {
if (this.scriptOrMultiple) {
url = element.info.url;
group = parse(url).hostname;
group = new URL(url).hostname;
}
this.allAlias[url] = alias;
super.sendMessage('browsertime.alias', alias, {
@ -205,14 +212,32 @@ export default class BrowsertimePlugin extends SitespeedioPlugin {
resultIndex++
) {
axeAggregatorPerURL = new AxeAggregator(this.options);
// Send errors from Browsertime as early as possible
// Check for errors. Browsertime errors is an array of all iterations
// [[],[],[]] where one iteration can have multiple errors
for (let errorsForOneIteration of result[resultIndex].errors) {
if (Array.isArray(errorsForOneIteration)) {
for (let error of errorsForOneIteration) {
super.sendMessage('error', error, _merge({ url }));
}
} else {
super.sendMessage(
'error',
`${errorsForOneIteration} ${result[resultIndex].failureMessages}`,
_merge({ url })
);
}
}
// If we use scripts or multiple, use the URL from the tested page
// so that we can handle click on links etc
// see https://github.com/sitespeedio/sitespeed.io/issues/2260
// we could change the plugins but since they do not work with
// multiple/scripting lets do it like this for now
if (this.scriptOrMultiple) {
url = result[resultIndex].info.url;
group = parse(url).hostname;
url = result[resultIndex].info?.url;
if (url) {
group = new URL(url).hostname;
}
}
let runIndex = 0;
for (let browserScriptsData of result[resultIndex].browserScripts) {
@ -595,14 +620,6 @@ export default class BrowsertimePlugin extends SitespeedioPlugin {
group
});
}
// Check for errors. Browsertime errors is an array of all iterations
// [[],[],[]] where one iteration can have multiple errors
for (let errorsForOneIteration of result[resultIndex].errors) {
for (let error of errorsForOneIteration) {
super.sendMessage('error', error, _merge({ url }));
}
}
}
break;
} catch (error) {

View File

@ -3,8 +3,8 @@
*/
import get from 'lodash.get';
import { noop, size } from '../../support/helpers/index.js';
import intel from 'intel';
const log = intel.getLogger('sitespeedio.plugin.budget');
import { getLogger } from '@sitespeed.io/log';
const log = getLogger('sitespeedio.plugin.budget');
function getItem(url, type, metric, value, limit, limitType) {
return {

View File

@ -1,4 +1,4 @@
import intel from 'intel';
import { getLogger } from '@sitespeed.io/log';
import { SitespeedioPlugin } from '@sitespeed.io/plugin';
import { verify as deprecatedVerify } from './deprecatedVerify.js';
import { verify } from './verify.js';
@ -6,7 +6,7 @@ import { writeTap } from './tap.js';
import { writeJunit } from './junit.js';
import { writeJson } from './json.js';
const log = intel.getLogger('sitespeedio.plugin.budget');
const log = getLogger('sitespeedio.plugin.budget');
export default class BudgetPlugin extends SitespeedioPlugin {
constructor(options, context, queue) {

Some files were not shown because too many files have changed in this diff Show More