sitespeed.io 12.0 and Browsertime 8.0

The changelog for the new Browsertime 8.0 is massive because we have many new contributions, mainly from the Mozilla performance team! Extra special thank you to all new contributors:

My main focus has been to minimize the impact from browsertime (and other tools) on the actual measurements and implementing more retry functionality if the navigation fails. With sitespeed.io we just adopted the new changes in Firefox and updated some dependencies.

Firefox #

Lets talk about the new things in Firefox.

CPU profiles #

You can collect CPU profiles from Firefox with --firefox.geckoProfiler and view them at https://profiler.firefox.com!

You can now collect a CPU profile using --firefox.geckoProfiler. You can also use: --firefox.geckoProfilerParams.features, --firefox.geckoProfilerParams.threads, --firefox.geckoProfilerParams.interval and --firefox.geckoProfilerParams.bufferSize to fine tune what to get.

Gecko profile

Firefox on Android #

Collect metrics using Firefox on Android! Enable using -b firefox --android and tune using: --firefox.android.package, --firefox.android.activity, --firefox.android.deviceSerial and --firefox.android.intentArgument.

Firefox on Android

Native video on Firefox #

Now the window recorder for Firefox works great. That means you can record a video of the loading of your page without using FFMPEG. Add --firefox.windowRecorder and -video to your run.

New default configuration #

We have adopted the Firefox performance teams default configurations to get as stable metrics as possible with Firefox. This removes --mozillaProPreferences since those configurations are used by default #1045.

Edge #

Support for running Edge for OS that supports it. Use -b edge and --edge.edgedriverPath with the path to the matching MSEdgeDriver. Edge use the same setup as Chrome, so you --chrome.* to configure Edge :) #1140.

Microsoft Edge

TCPDump support #

If your OS support, you can get TCPdumps (desktop only). A very special thanks to Martino Trevisan that started to add the support long time ago.

If you run sitespeed.io you can get the TCP dump and the SSL key log file by just running:

docker run --rm -v "$(pwd):/sitespeed.io" sitespeedio/sitespeed.io:33.6.0 https://www.sitespeed.io/ --tcpdump

If you use Browsertime you can choose where you want the key log file: SSLKEYLOGFILE=/path/to/file browsertime --tcpdump https://www.sitespeed.io or in Docker docker run --rm -v "$(pwd)":/browsertime -e SSLKEYLOGFILE=/browsertime/keylog.txt sitespeedio/browsertime:21.7.0 https://www.sitespeed.io/ -n 1 --tcpdump. Implemented in #1159.

TCP dump

Other changes worth mentioning #

Use pageLoadStrategy none as default #1151.

Increase wait time before next try when navigation fails. First 10s, then 20s then 30s #1086

You can now choose the Activity hosting the Chrome WebView on Android using --chrome.android.activity. You can also name the process of the Activity hosting the WebView using --chrome.android.process.

Make it easy to add trace categories on top of the default ones for Chrome. Use --chrome.traceCategory to add an category. Use it multiple times to add multiple categories #1090.

Convert the video from Android to 60 FPS and use a monospace font on OS X #1134 and #1136.

Fix the bug where a frame is missed after FFMPEG transformation #1122 - thank you Sean Feng for the PR

Fix for Contentful Speed Index that sometimes failed #1121 - thank you Tarek Ziade!

Take screenshots before we run the JS to collect the metrics #1071.

The Docker container now contains Firefox 72 and Chrome 80.

Tech #

Making Sharp an optional requirement as proposed by Nick Alexander. If you don’t install Sharp, screenshots will be stored as PNG as the current viewport size #1084.

Move visualmetrics.py to a python package #1148 - thank you Tarek Ziade!

Checkout the Browsertime changelog for the massive list of all things that have been fixed in latest 8.0 release.

/Peter