From f6e620ebfbd6e169ec572192fea15dbb0bbf0363 Mon Sep 17 00:00:00 2001 From: soulgalore Date: Sun, 20 Feb 2022 14:05:29 +0100 Subject: [PATCH] Browsertime 15.0.0 --- CHANGELOG.md | 3 + docs/_includes/version/browsertime.txt | 2 +- .../browsertime/configuration/config.md | 5 +- docs/documentation/browsertime/index.md | 4 +- .../sitespeed.io/connectivity/index.md | 14 +--- .../index.md | 2 +- lib/cli/cli.js | 4 +- npm-shrinkwrap.json | 81 +++++-------------- package.json | 2 +- 9 files changed, 33 insertions(+), 84 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63568c1ad..b95d3ba52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ ## UNRELEASED ### Fixed * Fix broken JUnit output. Thank you [rghetu](https://github.com/rghetu) for finding it [#3569](https://github.com/sitespeedio/sitespeed.io/pull/3569). + +### Added +* Use Browsertime 15.0.0. ## 22.1.2 - 2022-02-09 ### Fixed * Updated to Browsertime 14.21.1 that disables the new Chrome splash screen by default. diff --git a/docs/_includes/version/browsertime.txt b/docs/_includes/version/browsertime.txt index 1c8f85910..791fc94d8 100644 --- a/docs/_includes/version/browsertime.txt +++ b/docs/_includes/version/browsertime.txt @@ -1 +1 @@ -14.21.1 \ No newline at end of file +15.0.0 \ No newline at end of file diff --git a/docs/documentation/browsertime/configuration/config.md b/docs/documentation/browsertime/configuration/config.md index ebbcb48c4..0d61ac1a0 100644 --- a/docs/documentation/browsertime/configuration/config.md +++ b/docs/documentation/browsertime/configuration/config.md @@ -24,8 +24,7 @@ chrome --chrome.enableTraceScreenshots, --enableTraceScreenshots Include screenshots in the trace log (enabling the trace category disabled-by-default-devtools.screenshot). [boolean] --chrome.enableChromeDriverLog Log Chromedriver communication to a log file. [boolean] --chrome.enableVerboseChromeDriverLog Log verboose Chromedriver communication to a log file. [boolean] - --chrome.visualMetricsUsingTrace Collect Visual Metrics using Chrome trace log. You need enable trace screenshots --chrome.enableTraceScreenshots and --cpu metrics for this to work. [boolean] [default: false] - --chrome.timeline Collect the timeline data. Drag and drop the JSON in your Chrome detvools timeline panel or check out the CPU metrics in the Browsertime.json [boolean] + --chrome.timeline, --chrome.trace Collect the timeline data. Drag and drop the JSON in your Chrome detvools timeline panel or check out the CPU metrics in the Browsertime.json [boolean] --chrome.collectPerfLog Collect performance log from Chrome with Page and Network events and save to disk. [boolean] --chrome.collectNetLog Collect network log from Chrome and save to disk. [boolean] --chrome.netLogCaptureMode Choose capture mode for Chromes netlog. [choices: "Default", "IncludeSensitive", "Everything"] [default: "IncludeSensitive"] @@ -125,7 +124,7 @@ connectivity --connectivity.rtt, --connectivity.latency This option requires --connectivity.profile be set to "custom". --connectivity.variance This option requires --connectivity.engine be set to "throttle". It will add a variance to the rtt between each run. --connectivity.variance 2 means it will run with a random variance of max 2% between runs. --connectivity.alias Give your connectivity profile a custom name - --connectivity.engine The engine for connectivity. Throttle works on Mac and tc based Linux. For mobile you can use Humble if you have a Humble setup. Use external if you set the connectivity outside of Browsertime. The best way do to this is described in https://github.com/sitespeedio/browsertime#connectivity. [choices: "external", "throttle", "tsproxy", "humble"] [default: "external"] + --connectivity.engine The engine for connectivity. Throttle works on Mac and tc based Linux. For mobile you can use Humble if you have a Humble setup. Use external if you set the connectivity outside of Browsertime. The best way do to this is described in https://github.com/sitespeedio/browsertime#connectivity. [choices: "external", "throttle", "humble"] [default: "external"] --connectivity.throttle.localhost Add latency/delay on localhost. Perfect for testing with WebPageReplay [boolean] [default: false] --connectivity.humble.url The path to your Humble instance. For example http://raspberrypi:3000 [string] diff --git a/docs/documentation/browsertime/index.md b/docs/documentation/browsertime/index.md index e2358a722..a2e241090 100644 --- a/docs/documentation/browsertime/index.md +++ b/docs/documentation/browsertime/index.md @@ -1,6 +1,6 @@ --- layout: default -title: Documentation Browsertime 14 +title: Documentation Browsertime 15 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 v14 +# Documentation v15 Browsertime logo diff --git a/docs/documentation/sitespeed.io/connectivity/index.md b/docs/documentation/sitespeed.io/connectivity/index.md index 00b98b498..e80d5df2d 100644 --- a/docs/documentation/sitespeed.io/connectivity/index.md +++ b/docs/documentation/sitespeed.io/connectivity/index.md @@ -1,7 +1,7 @@ --- layout: default title: Set the connectivity type before you start your tests. -description: You can throttle the connection to make the connectivity slower to make it easier to catch regressions. The best way to do that is to setup a network bridge in Docker or use our connectivity engine Throttle. If you use Kubernetes you should use TSProxy. +description: You can throttle the connection to make the connectivity slower to make it easier to catch regressions. The best way to do that is to setup a network bridge in Docker or use our connectivity engine Throttle. keywords: connectivity, throttle, emulate, users nav: documentation category: sitespeed.io @@ -19,8 +19,7 @@ twitterdescription: ## Change/set connectivity You can and should throttle the connection to make the connectivity slower to make it easier to catch regressions. If you don’t do it, you can run your tests with different connectivity profiles and regressions/improvements that you see is caused by your servers flaky internet connection -The best way to do that is to use our connectivity engine [Throttle](https://github.com/sitespeedio/throttle), setup a network bridge in Docker, use [Humble](https://github.com/sitespeedio/humble) the Raspberry Pi WiFi network link conditionerif you test with mobile phones or if you use Kubernetes you can use [TSProxy](https://github.com/WPO-Foundation/tsproxy). - +The best way to do that is to use our connectivity engine [Throttle](https://github.com/sitespeedio/throttle), setup a network bridge in Docker, use [Humble](https://github.com/sitespeedio/humble) the Raspberry Pi WiFi network link conditioner if you test with mobile phones. ### Throttle [Throttle](https://github.com/sitespeedio/throttle) uses *tc* on Linux and *pfctl* on Mac to change the connectivity. Throttle will need sudo rights for the user running sitespeed.io to work. @@ -124,12 +123,3 @@ docker network rm 3gslow docker network rm cable ~~~ -### TSProxy -[TSProxy](https://github.com/WPO-Foundation/tsproxy) is a Traffic-shaping SOCKS5 proxy built by [Patrick Meenan](https://twitter.com/patmeenan). You need Python 2.7 for it to work. When you run it through Browsertime/sitespeed.io configures Firefox and Chrome to automatically use the proxy. - -If use Kubernetes you can not use Docker networks or tc, but you can use TSProxy. However there has been [many issues](https://github.com/WPO-Foundation/tsproxy/issues?q=is%3Aissue+is%3Aclosed) with TSProxy through the years, so if you can avoid using it, please do. - -~~~bash -sitespeed.io --browsertime.connectivity.engine tsproxy -c cable https://www.sitespeed.io/ -~~~ - diff --git a/docs/documentation/sitespeed.io/web-performance-testing-in-practice/index.md b/docs/documentation/sitespeed.io/web-performance-testing-in-practice/index.md index ae9723b02..e625e2320 100644 --- a/docs/documentation/sitespeed.io/web-performance-testing-in-practice/index.md +++ b/docs/documentation/sitespeed.io/web-performance-testing-in-practice/index.md @@ -128,7 +128,7 @@ Another good thing is to make sure you monitor your server to keep track of memo Running on bare metal servers helps you to avoid the noisy neighbour effect. However it doesn't automatically fixes your problem. You still need to configure/tune your OS to get stable metrics. We hope to include some examples to help you when we get our hands on a bare metal server :) #### Running on Kubernetes -The problem running on Kubernetes is to get stable connectivity. On Kubernetes you cannot use TC or Docker networks to set the connectivity but you can use [TSProxy](https://github.com/WPO-Foundation/tsproxy). It's bundled in Browsertime and enable it with --browsertime.connectivity.engine tsproxy. For other synthetic tools I haven't seen a solution fixing the network connectivity problem (yet). +The problem running on Kubernetes is to get stable connectivity. On Kubernetes you cannot use TC or Docker networks to set the connectivity. ### Mobile diff --git a/lib/cli/cli.js b/lib/cli/cli.js index d36ca4493..9f482cada 100644 --- a/lib/cli/cli.js +++ b/lib/cli/cli.js @@ -303,9 +303,9 @@ module.exports.parseCommandLine = function parseCommandLine() { .option('browsertime.connectivity.engine', { alias: 'connectivity.engine', default: 'external', - choices: ['external', 'throttle', 'tsproxy', 'humble'], + choices: ['external', 'throttle', 'humble'], describe: - 'The engine for connectivity. Throttle works on Mac and tc based Linux. For mobile you can use Humble if you have a Humble setup. Use external if you set the connectivity outside of Browsertime. Use tsproxy if you are using Kubernetes. More documentation at https://www.sitespeed.io/documentation/sitespeed.io/connectivity/.', + 'The engine for connectivity. Throttle works on Mac and tc based Linux. For mobile you can use Humble if you have a Humble setup. Use external if you set the connectivity outside of Browsertime. More documentation at https://www.sitespeed.io/documentation/sitespeed.io/connectivity/.', type: 'string', group: 'Browser' }) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 8b2fcd6ff..5d1694033 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -13,7 +13,7 @@ "@tgwf/co2": "0.8.0", "aws-sdk": "2.882.0", "axe-core": "4.3.5", - "browsertime": "14.21.1", + "browsertime": "15.0.0", "cli-color": "2.0.0", "coach-core": "7.1.0", "concurrent-queue": "7.0.2", @@ -1059,11 +1059,6 @@ "@types/babel-types": "*" } }, - "node_modules/@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1465,9 +1460,9 @@ } }, "node_modules/browsertime": { - "version": "14.21.1", - "resolved": "https://registry.npmjs.org/browsertime/-/browsertime-14.21.1.tgz", - "integrity": "sha512-vcLSurIaxk7Qe3k1EtNRGFQzMZwQlzbdpN3n8VsE24g+bDhVcJ2M+EN6L+pZpbwlR6hJtIEntSA9oWugyHyD8A==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/browsertime/-/browsertime-15.0.0.tgz", + "integrity": "sha512-2Ysyzf+UCjgNeEpIU2+6xiqzaNhwe5ABu1UHPLXpZJVDFUCrub+bzr71sw2IeGuFaKtEtOLbZgRZVB74/CS8oA==", "dependencies": { "@cypress/xvfb": "1.2.4", "@devicefarmer/adbkit": "2.11.3", @@ -1492,8 +1487,7 @@ "lodash.merge": "4.6.2", "lodash.pick": "4.4.0", "lodash.set": "4.3.2", - "selenium-webdriver": "4.1.0", - "speedline-core": "1.4.3", + "selenium-webdriver": "4.1.1", "yargs": "17.2.1" }, "bin": { @@ -3743,11 +3737,6 @@ "node": ">=0.9.0" } }, - "node_modules/image-ssim": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", - "integrity": "sha1-g7Qsei5uS4VQVHf+aRf128VkIOU=" - }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -4069,7 +4058,8 @@ "node_modules/jpeg-js": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", - "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==" + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", + "optional": true }, "node_modules/js-stringify": { "version": "1.0.2", @@ -6167,9 +6157,9 @@ "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" }, "node_modules/selenium-webdriver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.1.0.tgz", - "integrity": "sha512-kUDH4N8WruYprTzvug4Pl73Th+WKb5YiLz8z/anOpHyUNUdM3UzrdTOxmSNaf9AczzBeY+qXihzku8D1lMaKOg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.1.1.tgz", + "integrity": "sha512-Fr9e9LC6zvD6/j7NO8M1M/NVxFX67abHcxDJoP5w2KN/Xb1SyYLjMVPGgD14U2TOiKe4XKHf42OmFw9g2JgCBQ==", "dependencies": { "jszip": "^3.6.0", "tmp": "^0.2.1", @@ -6374,19 +6364,6 @@ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, - "node_modules/speedline-core": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz", - "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==", - "dependencies": { - "@types/node": "*", - "image-ssim": "^0.2.0", - "jpeg-js": "^0.4.1" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", @@ -8300,11 +8277,6 @@ "@types/babel-types": "*" } }, - "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -8631,9 +8603,9 @@ } }, "browsertime": { - "version": "14.21.1", - "resolved": "https://registry.npmjs.org/browsertime/-/browsertime-14.21.1.tgz", - "integrity": "sha512-vcLSurIaxk7Qe3k1EtNRGFQzMZwQlzbdpN3n8VsE24g+bDhVcJ2M+EN6L+pZpbwlR6hJtIEntSA9oWugyHyD8A==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/browsertime/-/browsertime-15.0.0.tgz", + "integrity": "sha512-2Ysyzf+UCjgNeEpIU2+6xiqzaNhwe5ABu1UHPLXpZJVDFUCrub+bzr71sw2IeGuFaKtEtOLbZgRZVB74/CS8oA==", "requires": { "@cypress/xvfb": "1.2.4", "@devicefarmer/adbkit": "2.11.3", @@ -8659,8 +8631,7 @@ "lodash.merge": "4.6.2", "lodash.pick": "4.4.0", "lodash.set": "4.3.2", - "selenium-webdriver": "4.1.0", - "speedline-core": "1.4.3", + "selenium-webdriver": "4.1.1", "yargs": "17.2.1" }, "dependencies": { @@ -10446,11 +10417,6 @@ "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=", "optional": true }, - "image-ssim": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", - "integrity": "sha1-g7Qsei5uS4VQVHf+aRf128VkIOU=" - }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -10696,7 +10662,8 @@ "jpeg-js": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", - "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==" + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", + "optional": true }, "js-stringify": { "version": "1.0.2", @@ -12432,9 +12399,9 @@ "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" }, "selenium-webdriver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.1.0.tgz", - "integrity": "sha512-kUDH4N8WruYprTzvug4Pl73Th+WKb5YiLz8z/anOpHyUNUdM3UzrdTOxmSNaf9AczzBeY+qXihzku8D1lMaKOg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.1.1.tgz", + "integrity": "sha512-Fr9e9LC6zvD6/j7NO8M1M/NVxFX67abHcxDJoP5w2KN/Xb1SyYLjMVPGgD14U2TOiKe4XKHf42OmFw9g2JgCBQ==", "requires": { "jszip": "^3.6.0", "tmp": "^0.2.1", @@ -12616,16 +12583,6 @@ } } }, - "speedline-core": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz", - "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==", - "requires": { - "@types/node": "*", - "image-ssim": "^0.2.0", - "jpeg-js": "^0.4.1" - } - }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", diff --git a/package.json b/package.json index 2759259a3..7db16c5ea 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@tgwf/co2": "0.8.0", "aws-sdk": "2.882.0", "axe-core": "4.3.5", - "browsertime": "14.21.1", + "browsertime": "15.0.0", "coach-core": "7.1.0", "cli-color": "2.0.0", "concurrent-queue": "7.0.2",