sitespeed.io 21.5.0 → 22.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,65 @@
1
+ name: Bug Report
2
+ description: File a bug report
3
+ labels: [bug]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: Thanks for reporting issues back to sitespeed.io!
8
+ - type: checkboxes
9
+ id: Reproducable
10
+ attributes:
11
+ label: Have you read the documentation?
12
+ description: Please double check that this question hasn't already answered in the [documentation](https://www.sitespeed.io/documentation/sitespeed.io/) (use the `Search`). Also please read [how to make a good bug report](https://www.sitespeed.io/documentation/sitespeed.io/bug-report/) and check [how to debug your script](https://www.sitespeed.io/documentation/sitespeed.io/scripting/#debug).
13
+ options:
14
+ - label: Yes, I've read the [how to make a reproducable bug guide](https://www.sitespeed.io/documentation/sitespeed.io/bug-report/)
15
+ required: true
16
+ - label: Yes, I've read the [how to debug my script guide](https://www.sitespeed.io/documentation/sitespeed.io/scripting/#debug)
17
+ required: false
18
+ - type: input
19
+ id: url
20
+ attributes:
21
+ label: URL
22
+ description: What URL did you run sitespeed.io on? If you can't share your URL please make a minimial repro to a public location (e.g. https://glitch.com/, http://jsbin.com/, etc)
23
+ placeholder: https://example.com
24
+ validations:
25
+ required: true
26
+ - type: textarea
27
+ id: whaw
28
+ attributes:
29
+ label: What are you trying to accomplish
30
+ description: A brief description of what you tried to do and what went wrong.
31
+ validations:
32
+ required: true
33
+ - type: dropdown
34
+ id: browser
35
+ attributes:
36
+ label: What browser did you use?
37
+ description: Extra bonus if you try the issue in multiple browsers
38
+ multiple: true
39
+ options:
40
+ - Chrome
41
+ - Firefox
42
+ - Edge
43
+ - Safari Mac OS
44
+ - Safari iOS
45
+ - Chrome Android
46
+ - Firefox Android
47
+ - Other
48
+ validations:
49
+ required: true
50
+ - type: textarea
51
+ id: how-to-reproduce
52
+ attributes:
53
+ label: How to reproduce
54
+ description: Please copy and paste how you run so we can reproduce. This will be automatically formatted into code, so no need for backticks. Remember to follow the [how to make a good bug report guide](https://www.sitespeed.io/documentation/sitespeed.io/bug-report/)!
55
+ render: shell
56
+ validations:
57
+ required: true
58
+ - type: textarea
59
+ id: logs
60
+ attributes:
61
+ label: Relevant log output
62
+ description: Please copy and paste any relevant log output (please DO NOT take a screenshot of the log output). This will be automatically formatted into code, so no need for backticks.
63
+ render: shell
64
+ validations:
65
+ required: false
@@ -0,0 +1,15 @@
1
+ name: Question
2
+ description: Ask a question about sitespeed.io
3
+ labels: [question]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Ask a question about sitespeed.io
9
+ - type: textarea
10
+ id: your-question
11
+ attributes:
12
+ label: Your question
13
+ description: Please double check that this question hasn't already answered in the [documentation](https://www.sitespeed.io/documentation/sitespeed.io/) (use the `Search`) or [old GitHub issues](https://github.com/sitespeedio/sitespeed.io/issues?q=is%3Aissue+is%3Aclosed). You can also ask questions in the [sitespeed.io Slack channel](https://sitespeedio.herokuapp.com/). And if your question is more like a bug, please [use the bug report form](https://github.com/sitespeedio/sitespeed.io/issues/new?assignees=&labels=bug&template=BUG_REPORT.yml)
14
+ validations:
15
+ required: true
@@ -0,0 +1,28 @@
1
+ name: Build autobuild container that runs tests on dashboard.sitespeed.io
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ jobs:
7
+ docker:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ -
11
+ name: Set up QEMU
12
+ uses: docker/setup-qemu-action@v1
13
+ -
14
+ name: Set up Docker Buildx
15
+ uses: docker/setup-buildx-action@v1
16
+ -
17
+ name: Login to DockerHub
18
+ uses: docker/login-action@v1
19
+ with:
20
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
21
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
22
+ -
23
+ name: Build and push sitespeed.io
24
+ uses: docker/build-push-action@v2
25
+ with:
26
+ platforms: linux/amd64
27
+ push: true
28
+ tags: sitespeedio/sitespeed.io-autobuild:main
@@ -0,0 +1,61 @@
1
+ name: Build Docker containers on new tag
2
+ on:
3
+ push:
4
+ tags:
5
+ - 'v*.*.*'
6
+ jobs:
7
+ docker:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ -
11
+ name: Set up QEMU
12
+ uses: docker/setup-qemu-action@v1
13
+ -
14
+ name: Set up Docker Buildx
15
+ uses: docker/setup-buildx-action@v1
16
+ -
17
+ name: Login to DockerHub
18
+ uses: docker/login-action@v1
19
+ with:
20
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
21
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
22
+ -
23
+ name: Get the tag
24
+ id: tag
25
+ uses: dawidd6/action-get-tag@v1
26
+ with:
27
+ strip_v: true
28
+ -
29
+ name: Build and push sitespeed.io
30
+ uses: docker/build-push-action@v2
31
+ with:
32
+ platforms: linux/amd64,linux/arm64
33
+ push: true
34
+ tags: sitespeedio/sitespeed.io:${{steps.tag.outputs.tag}},sitespeedio/sitespeed.io:latest
35
+ -
36
+ name: Build and push sitespeed.io-slim
37
+ uses: docker/build-push-action@v2
38
+ with:
39
+ platforms: linux/amd64,linux/arm64
40
+ file: ./Dockerfile-slim
41
+ build-args: version=${{steps.tag.outputs.tag}}
42
+ push: true
43
+ tags: sitespeedio/sitespeed.io:${{steps.tag.outputs.tag}}-slim
44
+ -
45
+ name: Build and push sitespeed.io+1
46
+ uses: docker/build-push-action@v2
47
+ with:
48
+ platforms: linux/amd64,linux/arm64
49
+ file: ./docker/Dockerfile-plus1
50
+ build-args: version=${{steps.tag.outputs.tag}}
51
+ push: true
52
+ tags: sitespeedio/sitespeed.io:${{steps.tag.outputs.tag}}-plus1
53
+ -
54
+ name: Build and push sitespeed.io+wpt
55
+ uses: docker/build-push-action@v2
56
+ with:
57
+ platforms: linux/amd64,linux/arm64
58
+ file: ./docker/Dockerfile-webpagetest
59
+ build-args: version=${{steps.tag.outputs.tag}}
60
+ push: true
61
+ tags: sitespeedio/sitespeed.io:${{steps.tag.outputs.tag}}-webpagetest
@@ -14,7 +14,8 @@ jobs:
14
14
 
15
15
  - name: Build an image from Dockerfile
16
16
  run: |
17
- docker build -t docker.io/sitespeedio/sitespeed.io:${{ github.sha }} .
17
+ docker buildx install
18
+ docker buildx build --load --platform linux/amd64 -t docker.io/sitespeedio/sitespeed.io:${{ github.sha }} .
18
19
 
19
20
  - name: Run Trivy vulnerability scanner
20
21
  uses: aquasecurity/trivy-action@master
@@ -24,4 +25,4 @@ jobs:
24
25
  exit-code: '1'
25
26
  ignore-unfixed: true
26
27
  vuln-type: 'os,library'
27
- severity: 'CRITICAL,HIGH'
28
+ severity: 'CRITICAL'
@@ -13,8 +13,9 @@ jobs:
13
13
  - uses: actions/checkout@v2
14
14
  - name: Build Docker containers
15
15
  run: |
16
- docker build -t sitespeedio/sitespeed.io .
17
- docker build -t sitespeedio/sitespeed.io:slim --file Dockerfile-slim .
16
+ docker buildx install
17
+ docker buildx build --load --platform linux/amd64 -t sitespeedio/sitespeed.io .
18
+ docker buildx build --load --platform linux/amd64 -t sitespeedio/sitespeed.io:slim --file Dockerfile-slim .
18
19
  - name: Run test on default container for Chrome
19
20
  run: docker run --rm sitespeedio/sitespeed.io https://www.sitespeed.io -n 1 -b chrome
20
21
  - name: Run test on default container for Firefox
@@ -14,7 +14,7 @@ jobs:
14
14
  - name: Use Node.js
15
15
  uses: actions/setup-node@v1
16
16
  with:
17
- node-version: '14.x'
17
+ node-version: '16.x'
18
18
  - name: Install sitespeed.io
19
19
  run: npm ci
20
20
  - name: Install Chrome
@@ -14,7 +14,7 @@ jobs:
14
14
  - name: Use Node.js
15
15
  uses: actions/setup-node@v1
16
16
  with:
17
- node-version: '14.x'
17
+ node-version: '16.x'
18
18
  - name: Install dependencies
19
19
  run: |
20
20
  sudo safaridriver --enable
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- node-version: [12.x, 14.x, 16.x]
14
+ node-version: [14.x, 16.x]
15
15
  steps:
16
16
  - uses: actions/checkout@v2
17
17
  - name: Use Node.js ${{ matrix.node-version }}
@@ -14,7 +14,7 @@ jobs:
14
14
  - name: Use Node.js
15
15
  uses: actions/setup-node@v1
16
16
  with:
17
- node-version: '14.x'
17
+ node-version: '16.x'
18
18
  - name: Install sitespeed.io
19
19
  run: npm ci
20
20
  env:
package/CHANGELOG.md CHANGED
@@ -1,8 +1,53 @@
1
1
  # CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org))
2
2
 
3
+ ## 22.1.0 - 2022-02-08
4
+ ### Added
5
+ * Upgraded to latest Browsertime with Egdedriver 98.
6
+ * Upgraded to Edge 98 and Firefox 97 in the (amd64) Docker containers.
7
+ ## 22.0.0 - 2022-02-07
8
+
9
+ ### Breaking changes
10
+ * If you use the Lightouse plugin there's breaking changes:
11
+
12
+ In the new version we drop support for the following:
13
+ * Running multiple runs with Lighthouse.
14
+ * Using scripts to login the user (or whatever you need before you run your tests)
15
+ It's a couple of reasons why I remove those features:
16
+ * 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.
17
+ * I deeply regret merging the PR for adding multiple runs for Lighthouse. That PR goes against everything I know about measuring performance. Lighthouse is not built for getting correct performance metrics, it's built to help (Chrome) developers to get insights how they make the page "faster". Lets stick to the basics and keep it possible to get those recommendations from Lighthouse.
18
+ * Maybe someday Lighthouse will have support for user journeys, lets wait until that is officially supported and then I can check if it could be used in the plugin.
19
+
20
+ With the new release we also break how you configure Lighthouse. People has had problem with that since day 1. With the new version we support two new ways to configure Lighthouse:
21
+ - By configuration JSON file. `--lighthouse.config config.js`
22
+ - By Lightouse flags file. `--lighthouse.flags flag.json`
23
+
24
+ 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.
25
+
26
+ ### Added
27
+ * 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).
28
+ * When plugins is loaded, there's a new extra last step where we try to load the plugin as a globally installed npm module [#3546](https://github.com/sitespeedio/sitespeed.io/pull/3546).
29
+
30
+ ### Fixed
31
+ * Fix so that we do not display the same 3rd party cookie multiple times [#3545](https://github.com/sitespeedio/sitespeed.io/pull/3545).
32
+ * Updated Coach Core that includes the latest version of third party web and PageXray that find more fonts without mime type.
33
+
34
+ ## 21.6.1 - 2022-01-24
35
+ ### Fixed
36
+ * Updated to [Browsertime 14.18.1](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#14181---2022-01-24) that makes the summary metric log message use median (instead of mean) and change a log message level to debug.
37
+ ## 21.6.0 - 2022-01-24
38
+ ### Added
39
+ * Updated to Edge stable release in the Docker container.
40
+ * Remove Crux distribution table and use pie charts instead [#3537](https://github.com/sitespeedio/sitespeed.io/pull/3537)
41
+ * Add extra sleep time between Crux calls to make sure to not overload the API limit [#3536](https://github.com/sitespeedio/sitespeed.io/pull/3536).
42
+ * Added extra Crux enable command line `--crux.enable` to enable Crux [#3538](https://github.com/sitespeedio/sitespeed.io/pull/3538). Its default value is `true` and you also need to supply the Crux key to run Crux. The reason for the new parameter is that you can now configure the key in your configuration JSON and set the enable to false and then you enable it with the CLI parameter when you actually need to run Crux.
43
+ * Show Crux-metrics on the Summary page [#3540](https://github.com/sitespeedio/sitespeed.io/pull/3540).
44
+ * Updated summary metrics tables with headings to make it easier to read [#3541](https://github.com/sitespeedio/sitespeed.io/pull/3541).
45
+ * Added [Browsertime 14.17.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#14170---2022-01-23) with new Select and click.byName commands. With that Browsertime version you also need to have ffprobe installed when you run Visual Metrics but that should already be installed.
46
+ * Added [Browsertime 14.18.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#14180---2022-01-24) with a fix for Firefox [#1698](https://github.com/sitespeedio/browsertime/issues/1698)
47
+
3
48
  ## 21.5.0 - 2022-01-14
4
49
  ### Added
5
- * Upgraded to [Browsertime 14.15.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#14150---2022-01-12) that adds support for `--appendToUserAgent` for Chrome/Edge/Firefox. Amd then Browsertime 14.16.0 that supports Geckodriver for Raspberry Pi.
50
+ * Upgraded to [Browsertime 14.15.0](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#14150---2022-01-12) that adds support for `--appendToUserAgent` for Chrome/Edge/Firefox. And then Browsertime 14.16.0 that supports Geckodriver for Raspberry Pi.
6
51
  ## 21.4.0 - 2022-01-12
7
52
  ### Added
8
53
  * Updated to a new build of WebPageReplay in the Docker container
package/Dockerfile CHANGED
@@ -1,9 +1,11 @@
1
- FROM sitespeedio/webbrowsers:chrome-97.0-firefox-94.0-edge-97.0-dev-2
1
+ FROM sitespeedio/webbrowsers:chrome-98.0-firefox-97.0-edge-98.0
2
+
3
+ ARG TARGETPLATFORM=linux/amd64
2
4
 
3
5
  ENV SITESPEED_IO_BROWSERTIME__XVFB true
4
6
  ENV SITESPEED_IO_BROWSERTIME__DOCKER true
5
7
 
6
- COPY docker/webpagereplay/wpr /usr/local/bin/
8
+ COPY docker/webpagereplay/$TARGETPLATFORM/wpr /usr/local/bin/
7
9
  COPY docker/webpagereplay/wpr_cert.pem /webpagereplay/certs/
8
10
  COPY docker/webpagereplay/wpr_key.pem /webpagereplay/certs/
9
11
  COPY docker/webpagereplay/deterministic.js /webpagereplay/scripts/deterministic.js
package/Dockerfile-slim CHANGED
@@ -1,4 +1,6 @@
1
- FROM node:14.17.6-buster-slim
1
+ FROM node:16.13.2-bullseye-slim
2
+
3
+ ARG TARGETPLATFORM=linux/amd64
2
4
 
3
5
  ENV SITESPEED_IO_BROWSERTIME__DOCKER true
4
6
  ENV SITESPEED_IO_BROWSERTIME__VIDEO false
@@ -6,22 +8,30 @@ ENV SITESPEED_IO_BROWSERTIME__BROWSER firefox
6
8
  ENV SITESPEED_IO_BROWSERTIME__VISUAL_METRICS false
7
9
  ENV SITESPEED_IO_BROWSERTIME__HEADLESS true
8
10
 
9
- ENV FIREFOX_VERSION 94.0
11
+ ENV FIREFOX_VERSION 97.0
10
12
 
11
13
  ENV PATH="/usr/local/bin:${PATH}"
12
14
 
13
15
  RUN buildDeps='wget bzip2' && apt-get update && apt -y install $buildDeps && \
14
16
  # Download and unpack the correct Firefox version
15
- wget https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2 && \
16
- tar -xjf firefox-${FIREFOX_VERSION}.tar.bz2 && \
17
- rm firefox-${FIREFOX_VERSION}.tar.bz2 && \
18
- mv firefox /opt/ && \
19
- ln -s /opt/firefox/firefox /usr/local/bin/firefox && \
20
- # Install dependencies for Firefox
21
- apt-get install -y --no-install-recommends --no-install-suggests libxt6 \
22
- `apt-cache depends firefox-esr | awk '/Depends:/{print$2}'` && \
17
+ if [ "$TARGETPLATFORM" = "linux/amd64" ] ; \
18
+ then \
19
+ wget https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2 && \
20
+ tar -xjf firefox-${FIREFOX_VERSION}.tar.bz2 && \
21
+ rm firefox-${FIREFOX_VERSION}.tar.bz2 && \
22
+ mv firefox /opt/ && \
23
+ ln -s /opt/firefox/firefox /usr/local/bin/firefox && \
24
+ # Install dependencies for Firefox
25
+ apt-get install -y --no-install-recommends --no-install-suggests libxt6 \
26
+ `apt-cache depends firefox-esr | awk '/Depends:/{print$2}'`; \
27
+ elif [ "$TARGETPLATFORM" = "linux/arm64" ] ; \
28
+ then \
29
+ apt-get update && \
30
+ apt-get install -y firefox-esr; \
31
+ fi
32
+
23
33
  # iproute2 = tc
24
- apt -y install tcpdump iproute2 ca-certificates sudo --no-install-recommends --no-install-suggests && \
34
+ RUN apt -y install tcpdump iproute2 ca-certificates sudo --no-install-recommends --no-install-suggests && \
25
35
  # Cleanup
26
36
  apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $toolDeps \
27
37
  && rm -rf /var/lib/apt/lists/* /tmp/*
package/README.md CHANGED
@@ -21,13 +21,13 @@
21
21
  Before we start telling you all about sitespeed.io you should just try it out:
22
22
 
23
23
  ```bash
24
- $ docker run --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io https://www.sitespeed.io/
24
+ docker run --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io https://www.sitespeed.io/
25
25
  ```
26
26
 
27
27
  Or using npm (you need Chrome, Firefox, Edge or Safari installed or Chrome/Firefox on Android)
28
28
 
29
29
  ```bash
30
- $ npm i -g sitespeed.io && sitespeed.io https://www.sitespeed.io/
30
+ npm i -g sitespeed.io && sitespeed.io https://www.sitespeed.io/
31
31
  ```
32
32
 
33
33
  Ok, now you have tried it, let us tell you more about sitespeed.io. We think of a complete web performance tool as having three key capabilities:
@@ -74,23 +74,23 @@ When you as user choose to test a URL, this is what happens on a high level:
74
74
  Using Docker (use latest Docker):
75
75
 
76
76
  ```bash
77
- $ docker run --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io https://www.sitespeed.io/
77
+ docker run --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io https://www.sitespeed.io/
78
78
  ```
79
79
 
80
80
  Or install using npm:
81
81
 
82
82
  ```bash
83
- $ npm i -g sitespeed.io
83
+ npm i -g sitespeed.io
84
84
  ```
85
85
 
86
86
  Or clone the repo and test the latest changes:
87
87
 
88
88
  ```bash
89
- $ git clone https://github.com/sitespeedio/sitespeed.io.git
90
- $ cd sitespeed.io
91
- $ npm install
92
- $ bin/sitespeed.js --help
93
- $ bin/sitespeed.js https://www.sitespeed.io/
89
+ git clone https://github.com/sitespeedio/sitespeed.io.git
90
+ cd sitespeed.io
91
+ npm install
92
+ bin/sitespeed.js --help
93
+ bin/sitespeed.js https://www.sitespeed.io/
94
94
  ```
95
95
 
96
96
  ## More details
@@ -66,9 +66,13 @@ module.exports = {
66
66
  try {
67
67
  plugins.push(require(path.resolve(process.cwd(), name)));
68
68
  } catch (error) {
69
- console.error("Couldn't load plugin %s: %s", name, err); // eslint-disable-line no-console
70
- // if it fails here, let it fail hard
71
- throw error;
69
+ try {
70
+ plugins.push(require(name));
71
+ } catch (error) {
72
+ console.error("Couldn't load plugin %s: %s", name, err); // eslint-disable-line no-console
73
+ // if it fails here, let it fail hard
74
+ throw error;
75
+ }
72
76
  }
73
77
  }
74
78
  }
@@ -4,6 +4,12 @@ module.exports = {
4
4
  'You need to use a key to get data from CrUx. Get the key from https://developers.google.com/web/tools/chrome-user-experience-report/api/guides/getting-started#APIKey',
5
5
  group: 'CrUx'
6
6
  },
7
+ enable: {
8
+ default: true,
9
+ describe:
10
+ 'Enable the CrUx plugin. This is on by defauly but you also need the Crux key. If you chose to disable it with this key, set this to false and you can still use the CrUx key in your configuration.',
11
+ group: 'CrUx'
12
+ },
7
13
  formFactor: {
8
14
  default: 'ALL',
9
15
  type: 'string',