sitespeed.io 33.6.0 → 34.0.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.
Files changed (38) hide show
  1. package/.github/workflows/building-docker-release.yml +0 -11
  2. package/CHANGELOG.md +26 -0
  3. package/Dockerfile +1 -1
  4. package/bin/sitespeed.js +8 -0
  5. package/lib/cli/cli.js +10 -33
  6. package/lib/core/pluginLoader.js +1 -1
  7. package/lib/plugins/analysisstorer/index.js +0 -2
  8. package/lib/plugins/budget/index.js +0 -1
  9. package/lib/plugins/domains/index.js +0 -8
  10. package/lib/plugins/grafana/index.js +1 -17
  11. package/lib/plugins/grafana/send-annotation.js +1 -7
  12. package/lib/plugins/graphite/data-generator.js +0 -7
  13. package/lib/plugins/graphite/index.js +2 -23
  14. package/lib/plugins/graphite/send-annotation.js +1 -6
  15. package/lib/plugins/harstorer/index.js +1 -2
  16. package/lib/plugins/html/defaultConfig.js +0 -7
  17. package/lib/plugins/html/htmlBuilder.js +6 -5
  18. package/lib/plugins/html/index.js +0 -4
  19. package/lib/plugins/html/setup/detailed.js +0 -23
  20. package/lib/plugins/html/setup/summaryBoxesDefaultLimits.js +0 -8
  21. package/lib/plugins/html/templates/header.pug +1 -1
  22. package/lib/plugins/html/templates/runInfo.pug +0 -3
  23. package/lib/plugins/html/templates/settings.pug +4 -0
  24. package/lib/plugins/html/templates/url/includes/pageRunInfo.pug +0 -3
  25. package/lib/plugins/html/templates/url/iteration/index.pug +1 -23
  26. package/lib/plugins/html/templates/url/summary/index.pug +0 -21
  27. package/lib/plugins/influxdb/data-generator.js +0 -28
  28. package/lib/plugins/influxdb/index.js +0 -16
  29. package/lib/plugins/influxdb/send-annotation.js +1 -8
  30. package/lib/plugins/messagelogger/index.js +0 -1
  31. package/lib/plugins/pagexray/index.js +2 -10
  32. package/lib/plugins/s3/index.js +67 -87
  33. package/lib/sitespeed.js +2 -1
  34. package/lib/support/annotationsHelper.js +1 -8
  35. package/lib/support/friendlynames.js +0 -39
  36. package/npm-shrinkwrap.json +6604 -12650
  37. package/package.json +4 -4
  38. package/lib/plugins/tracestorer/index.js +0 -36
@@ -48,17 +48,6 @@ jobs:
48
48
  push: true
49
49
  provenance: false
50
50
  tags: sitespeedio/sitespeed.io:${{steps.tag.outputs.tag}}-plus1
51
- -
52
- name: Build and push sitespeed.io+wpt
53
- uses: docker/build-push-action@v5
54
- with:
55
- context: .
56
- platforms: linux/amd64,linux/arm64
57
- file: ./docker/Dockerfile-webpagetest
58
- build-args: version=${{steps.tag.outputs.tag}}
59
- push: true
60
- provenance: false
61
- tags: sitespeedio/sitespeed.io:${{steps.tag.outputs.tag}}-webpagetest
62
51
  -
63
52
  name: Build and push sitespeed.io-slim
64
53
  uses: docker/build-push-action@v5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org))
2
2
 
3
+ ## 34.0.0 - 2024-05-29
4
+
5
+ ### Breaking
6
+
7
+ * 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).
8
+
9
+ * 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).
10
+
11
+ * 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.
12
+
13
+ * The -plus1 Docker container now has plugin-lighthouse and plugin-gpsi installed from npm instead of the git repository. It will work as before, but if you want to disable one of them, that has changed. To not run the GPSI plugin add `--plugins.remove @sitespeed.io/plugin-gpsi` and to disble Lighthouse you add `--plugins.remove @sitespeed.io/plugin-lighthouse`.
14
+
15
+ * Updated to [Browsertime 22](https://github.com/sitespeedio/browsertime/blob/main/CHANGELOG.md#2200---2024-05-16). This version of Browsertime drops the Browsertime extension and start use the kind of new HAR exporter using Bidi as the default HAR exporter! If you add request headers to your Firefox test or clear the cache inside of your script using Firefox, this will stop to work for now until support is added in Firefox (request headers are coming soon!).
16
+
17
+ ### Added
18
+ * Updated to Chrome 125, Firefox 126 and Edge 124 in the Docker container [#4156](https://github.com/sitespeedio/sitespeed.io/pull/4156).
19
+
20
+ ### Fixed
21
+ * Fix loading globally installed plugins [#4167](https://github.com/sitespeedio/sitespeed.io/pull/4167).
22
+ * Fix configurations documentation for scp, thank you [Arash Hatam](https://github.com/hatamiarash7) for [#4166](https://github.com/sitespeedio/sitespeed.io/pull/4166).
23
+
24
+
25
+ ## 33.6.1 - 2024-05-13
26
+ ### Fixed
27
+ * 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.
28
+
3
29
  ## 33.6.0 - 2024-04-17
4
30
  ### Added
5
31
  * Updated to Chrome 124 and Firefox 125 in the Docker container [#4142](https://github.com/sitespeedio/sitespeed.io/pull/4142) and [#4142](https://github.com/sitespeedio/sitespeed.io/pull/4141).
package/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM sitespeedio/webbrowsers:chrome-124.0-firefox-125.0-edge-123.0
1
+ FROM sitespeedio/webbrowsers:chrome-125.0-firefox-126.0-edge-124.0
2
2
 
3
3
  ARG TARGETPLATFORM=linux/amd64
4
4
 
package/bin/sitespeed.js CHANGED
@@ -7,6 +7,7 @@ import { execSync } from 'node:child_process';
7
7
  import { platform } from 'node:os';
8
8
  import { resolve, basename } from 'node:path';
9
9
  import { readFileSync } from 'node:fs';
10
+ import { EventEmitter } from 'node:events';
10
11
 
11
12
  import merge from 'lodash.merge';
12
13
  import ora from 'ora';
@@ -15,6 +16,10 @@ import { parseCommandLine } from '../lib/cli/cli.js';
15
16
  import { run } from '../lib/sitespeed.js';
16
17
  import { addTest, waitAndGetResult, get } from '../lib/api/send.js';
17
18
 
19
+ // This is due to CDP do no have (or has it) a way to remove listeners
20
+ // and default 10 is quite small number.
21
+ EventEmitter.defaultMaxListeners = 30;
22
+
18
23
  async function api(options) {
19
24
  const action = options.api.action ?? 'addAndGetResult';
20
25
 
@@ -91,6 +96,9 @@ async function api(options) {
91
96
  }
92
97
  } else if (result.status === 'failed') {
93
98
  spinner.fail('Test failed');
99
+ if (options.api.json) {
100
+ console.log(JSON.stringify(result));
101
+ }
94
102
  process.exitCode = 1;
95
103
  process.exit();
96
104
  }
package/lib/cli/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { platform } from 'node:os';
3
3
  import { createRequire } from 'node:module';
4
- import { readFileSync, statSync, existsSync } from 'node:fs';
4
+ import { readFileSync, statSync } from 'node:fs';
5
5
 
6
6
  import yargs from 'yargs';
7
7
  import { hideBin } from 'yargs/helpers';
@@ -1145,7 +1145,7 @@ export async function parseCommandLine() {
1145
1145
  describe: 'The host.',
1146
1146
  group: 'scp'
1147
1147
  })
1148
- .option('scp. destinationPath', {
1148
+ .option('scp.destinationPath', {
1149
1149
  describe:
1150
1150
  'The destination path on the remote server where the files will be copied.',
1151
1151
  group: 'scp'
@@ -1213,7 +1213,7 @@ export async function parseCommandLine() {
1213
1213
  default: false,
1214
1214
  type: 'boolean',
1215
1215
  describe:
1216
- 'Include screenshot (from Browsertime/WebPageTest) in the annotation. You need to specify a --resultBaseURL for this to work.',
1216
+ 'Include screenshot (from Browsertime) in the annotation. You need to specify a --resultBaseURL for this to work.',
1217
1217
  group: 'Grafana'
1218
1218
  })
1219
1219
 
@@ -1280,7 +1280,7 @@ export async function parseCommandLine() {
1280
1280
  default: false,
1281
1281
  type: 'boolean',
1282
1282
  describe:
1283
- 'Include screenshot (from Browsertime/WebPageTest) in the annotation. You need to specify a --resultBaseURL for this to work.',
1283
+ 'Include screenshot (from Browsertime) in the annotation. You need to specify a --resultBaseURL for this to work.',
1284
1284
  group: 'Graphite'
1285
1285
  })
1286
1286
  .option('graphite.sendAnnotation', {
@@ -1622,7 +1622,7 @@ export async function parseCommandLine() {
1622
1622
  group: 's3'
1623
1623
  })
1624
1624
  .option('s3.region', {
1625
- describe: 'The S3 region. Optional depending on your settings.',
1625
+ describe: 'The S3 region.',
1626
1626
  group: 's3'
1627
1627
  })
1628
1628
  .option('s3.acl', {
@@ -1789,6 +1789,11 @@ export async function parseCommandLine() {
1789
1789
  default: false,
1790
1790
  type: 'boolean'
1791
1791
  })
1792
+ .option('html.homeurl', {
1793
+ default: 'https://www.sitespeed.io/',
1794
+ describe: 'The URL for the logo in the result',
1795
+ group: 'HTML'
1796
+ })
1792
1797
  .option('summary', {
1793
1798
  describe: 'Show brief text summary to stdout',
1794
1799
  default: false,
@@ -2076,28 +2081,6 @@ export async function parseCommandLine() {
2076
2081
  return plugins;
2077
2082
  }
2078
2083
  })
2079
- .coerce('webpagetest', function (argument) {
2080
- if (argument) {
2081
- // for backwards compatible reasons we check if the passed parameters is a path to a script, if so just us it (PR #1445)
2082
- if (argument.script && existsSync(argument.script)) {
2083
- argument.script = readFileSync(resolve(argument.script), 'utf8');
2084
- /* eslint no-console: off */
2085
- console.log(
2086
- '[WARNING] Since sitespeed.io 4.4 you should pass the path to the script file through the --webpagetest.file flag (https://github.com/sitespeedio/sitespeed.io/pull/1445).'
2087
- );
2088
- return argument;
2089
- }
2090
-
2091
- if (argument.file) {
2092
- argument.script = readFileSync(resolve(argument.file), 'utf8');
2093
- } else if (argument.script) {
2094
- // because the escaped characters are passed re-escaped from the console
2095
- argument.script = argument.script.split('\\t').join('\t');
2096
- argument.script = argument.script.split('\\n').join('\n');
2097
- }
2098
- return argument;
2099
- }
2100
- })
2101
2084
  // .describe('browser', 'Specify browser')
2102
2085
  .wrap(yargsInstance.terminalWidth())
2103
2086
  // .check(validateInput)
@@ -2153,12 +2136,6 @@ export async function parseCommandLine() {
2153
2136
  explicitOptions = merge(explicitOptions, config);
2154
2137
  }
2155
2138
 
2156
- if (argv.webpagetest && argv.webpagetest.custom) {
2157
- argv.webpagetest.custom = readFileSync(resolve(argv.webpagetest.custom), {
2158
- encoding: 'utf8'
2159
- });
2160
- }
2161
-
2162
2139
  if (argv.summaryDetail) argv.summary = true;
2163
2140
 
2164
2141
  if (
@@ -77,7 +77,7 @@ export async function loadPlugins(pluginNames, options, context, queue) {
77
77
  plugins.push(p);
78
78
  } catch (error) {
79
79
  // try global
80
- let plugin = await importGlobalSilent(name);
80
+ let { default: plugin } = await importGlobalSilent(name);
81
81
  if (plugin) {
82
82
  let p = new plugin(options, context, queue);
83
83
  plugins.push(p);
@@ -17,8 +17,6 @@ function shouldIgnoreMessage(message) {
17
17
  'browsertime.asyncscripts',
18
18
  'compare.setup',
19
19
  'sitespeedio.setup',
20
- 'webpagetest.har',
21
- 'webpagetest.setup',
22
20
  'aggregateassets.summary',
23
21
  'slowestassets.summary',
24
22
  'largestassets.summary',
@@ -22,7 +22,6 @@ export default class BudgetPlugin extends SitespeedioPlugin {
22
22
  this.make = context.messageMaker('budget').make;
23
23
  this.budgetTypes = [
24
24
  'browsertime.pageSummary',
25
- 'webpagetest.pageSummary',
26
25
  'pagexray.pageSummary',
27
26
  'coach.pageSummary',
28
27
  'axe.pageSummary'
@@ -27,14 +27,6 @@ export default class DomainsPlugin extends SitespeedioPlugin {
27
27
  break;
28
28
  }
29
29
 
30
- case 'webpagetest.har': {
31
- // Only collect WebPageTest data if we don't run Browsertime
32
- if (this.browsertime === false) {
33
- this.domainsAggregator.addToAggregate(message.data, message.url);
34
- }
35
- break;
36
- }
37
-
38
30
  case 'sitespeedio.summarize': {
39
31
  const summary = this.domainsAggregator.summarize();
40
32
  if (!isEmpty(summary)) {
@@ -3,7 +3,6 @@ import dayjs from 'dayjs';
3
3
  import { SitespeedioPlugin } from '@sitespeed.io/plugin';
4
4
 
5
5
  import { send } from './send-annotation.js';
6
- import { toSafeKey } from '../../support/tsdbUtil.js';
7
6
  import { throwIfMissing } from '../../support/util.js';
8
7
 
9
8
  export default class GrafanaPlugin extends SitespeedioPlugin {
@@ -25,13 +24,6 @@ export default class GrafanaPlugin extends SitespeedioPlugin {
25
24
  }
26
25
 
27
26
  processMessage(message, queue) {
28
- if (message.type === 'webpagetest.pageSummary') {
29
- this.wptExtras[message.url] = {};
30
- this.wptExtras[message.url].webPageTestResultURL =
31
- message.data.data.summary;
32
- this.wptExtras[message.url].connectivity = message.connectivity;
33
- this.wptExtras[message.url].location = toSafeKey(message.location);
34
- }
35
27
  if (this.messageTypesToFireAnnotations.includes(message.type)) {
36
28
  this.receivedTypesThatFireAnnotations[message.url]
37
29
  ? this.receivedTypesThatFireAnnotations[message.url]++
@@ -46,11 +38,6 @@ export default class GrafanaPlugin extends SitespeedioPlugin {
46
38
 
47
39
  break;
48
40
  }
49
- case 'webpagetest.setup': {
50
- this.messageTypesToFireAnnotations.push('webpagetest.pageSummary');
51
-
52
- break;
53
- }
54
41
  case 'sitespeedio.setup': {
55
42
  // Let other plugins know that the Grafana plugin is alive
56
43
  queue.postMessage(this.make('grafana.setup'));
@@ -77,10 +64,7 @@ export default class GrafanaPlugin extends SitespeedioPlugin {
77
64
  break;
78
65
  }
79
66
  default: {
80
- if (message.type === 'webpagetest.browser' && !this.usingBrowsertime) {
81
- // We are only interested in WebPageTest browser if we run it standalone
82
- this.browser = message.data.browser;
83
- } else if (message.type === 'browsertime.alias') {
67
+ if (message.type === 'browsertime.alias') {
84
68
  this.alias[message.url] = message.data;
85
69
  } else if (
86
70
  this.receivedTypesThatFireAnnotations[message.url] ===
@@ -65,19 +65,13 @@ export function send(
65
65
  tags.push(...extraTags);
66
66
  }
67
67
 
68
- if (webPageTestExtraData) {
69
- tags.push(webPageTestExtraData.connectivity, webPageTestExtraData.location);
70
- }
71
-
72
68
  const tagsArray = getTagsAsArray(tags);
73
69
 
74
70
  const message = getAnnotationMessage(
75
71
  absolutePagePath,
76
72
  screenShotsEnabledInBrowsertime,
77
73
  screenshotType,
78
- webPageTestExtraData
79
- ? webPageTestExtraData.webPageTestResultURL
80
- : undefined,
74
+ undefined,
81
75
  usingBrowsertime,
82
76
  options
83
77
  );
@@ -27,13 +27,6 @@ function keyPathFromMessage(message, options, includeQueryParameters, alias) {
27
27
 
28
28
  typeParts.splice(1, 0, connectivity);
29
29
  typeParts.splice(1, 0, options.browser);
30
- } else if (/(^webpagetest)/.test(message.type)) {
31
- if (message.connectivity) {
32
- typeParts.splice(2, 0, message.connectivity);
33
- }
34
- if (message.location) {
35
- typeParts.splice(2, 0, toSafeKey(message.location));
36
- }
37
30
  } else if (/(^gpsi)/.test(message.type)) {
38
31
  typeParts.splice(2, 0, options.mobile ? 'mobile' : 'desktop');
39
32
  }
@@ -7,7 +7,6 @@ import { SitespeedioPlugin } from '@sitespeed.io/plugin';
7
7
 
8
8
  import { send } from './send-annotation.js';
9
9
  import { GraphiteDataGenerator as DataGenerator } from './data-generator.js';
10
- import { toSafeKey } from '../../support/tsdbUtil.js';
11
10
  import { isStatsD } from './helpers/is-statsd.js';
12
11
  import { throwIfMissing } from '../../support/util.js';
13
12
  import { toArray } from '../../support/util.js';
@@ -67,7 +66,7 @@ export default class GraphitePlugin extends SitespeedioPlugin {
67
66
  }
68
67
 
69
68
  processMessage(message, queue) {
70
- // First catch if we are running Browsertime and/or WebPageTest
69
+ // First catch if we are running Browsertime
71
70
  switch (message.type) {
72
71
  case 'browsertime.setup': {
73
72
  this.messageTypesToFireAnnotations.push('browsertime.pageSummary');
@@ -75,11 +74,6 @@ export default class GraphitePlugin extends SitespeedioPlugin {
75
74
 
76
75
  break;
77
76
  }
78
- case 'webpagetest.setup': {
79
- this.messageTypesToFireAnnotations.push('webpagetest.pageSummary');
80
-
81
- break;
82
- }
83
77
  case 'browsertime.config': {
84
78
  if (message.data.screenshot) {
85
79
  this.useScreenshots = message.data.screenshot;
@@ -104,12 +98,6 @@ export default class GraphitePlugin extends SitespeedioPlugin {
104
98
 
105
99
  break;
106
100
  }
107
- default: {
108
- if (message.type === 'webpagetest.browser' && !this.usingBrowsertime) {
109
- // We are only interested in WebPageTest browser if we run it standalone
110
- this.browser = message.data.browser;
111
- }
112
- }
113
101
  }
114
102
 
115
103
  if (message.type === 'browsertime.alias') {
@@ -129,14 +117,6 @@ export default class GraphitePlugin extends SitespeedioPlugin {
129
117
  : (this.receivedTypesThatFireAnnotations[message.url] = 1);
130
118
  }
131
119
 
132
- if (message.type === 'webpagetest.pageSummary') {
133
- this.wptExtras[message.url] = {};
134
- this.wptExtras[message.url].webPageTestResultURL =
135
- message.data.data.summary;
136
- this.wptExtras[message.url].connectivity = message.connectivity;
137
- this.wptExtras[message.url].location = toSafeKey(message.location);
138
- }
139
-
140
120
  // we only sends individual groups to Graphite, not the
141
121
  // total of all groups (you can calculate that yourself)
142
122
  if (message.group === 'total') {
@@ -175,8 +155,7 @@ export default class GraphitePlugin extends SitespeedioPlugin {
175
155
  this.messageTypesToFireAnnotations.length &&
176
156
  this.resultUrls.hasBaseUrl() &&
177
157
  this.sendAnnotation &&
178
- (message.type === 'browsertime.pageSummary' ||
179
- message.type === 'webpagetest.pageSummary')
158
+ message.type === 'browsertime.pageSummary'
180
159
  ) {
181
160
  this.receivedTypesThatFireAnnotations[message.url] = 0;
182
161
  const absolutePagePath = this.resultUrls.absoluteSummaryPagePath(
@@ -59,9 +59,6 @@ export function send(
59
59
  if (extraTags.length > 0) {
60
60
  tags.push(...extraTags);
61
61
  }
62
- if (webPageTestExtraData) {
63
- tags.push(webPageTestExtraData.connectivity, webPageTestExtraData.location);
64
- }
65
62
  const theTags = options.graphite.arrayTags
66
63
  ? getTagsAsArray(tags)
67
64
  : getTagsAsString(tags);
@@ -70,9 +67,7 @@ export function send(
70
67
  absolutePagePath,
71
68
  screenShotsEnabledInBrowsertime,
72
69
  screenshotType,
73
- webPageTestExtraData
74
- ? webPageTestExtraData.webPageTestResultURL
75
- : undefined,
70
+ undefined,
76
71
  usingBrowsertime,
77
72
  options
78
73
  );
@@ -20,8 +20,7 @@ export default class HarstorerPlugin extends SitespeedioPlugin {
20
20
  this.alias[message.url] = message.data;
21
21
  break;
22
22
  }
23
- case 'browsertime.har':
24
- case 'webpagetest.har': {
23
+ case 'browsertime.har': {
25
24
  const json = JSON.stringify(message.data);
26
25
 
27
26
  return this.gzipHAR
@@ -42,13 +42,6 @@ export default {
42
42
  'transferSize.image',
43
43
  'thirdParty.transferSize',
44
44
  'thirdParty.requests',
45
- 'webpagetest.SpeedIndex',
46
- 'webpagetest.lastVisualChange',
47
- 'webpagetest.render',
48
- 'webpagetest.visualComplete',
49
- 'webpagetest.visualComplete95',
50
- 'webpagetest.TTFB',
51
- 'webpagetest.fullyLoaded',
52
45
  'axe.critical',
53
46
  'axe.serious',
54
47
  'axe.minor',
@@ -1,7 +1,7 @@
1
1
  import { join } from 'node:path';
2
2
  import osName from 'os-name';
3
3
  import { promisify } from 'node:util';
4
- import { platform } from 'node:os';
4
+ import { platform, hostname } from 'node:os';
5
5
  import { createRequire } from 'node:module';
6
6
  import { fileURLToPath } from 'node:url';
7
7
 
@@ -198,7 +198,6 @@ export class HTMLBuilder {
198
198
  let ios;
199
199
  let connectivity;
200
200
  let usingBrowsertime;
201
- let usingWebPageTest;
202
201
  let cpuBenchmark;
203
202
  let windowSize;
204
203
  const urlPageRenders = [];
@@ -215,7 +214,6 @@ export class HTMLBuilder {
215
214
  pageNumber++;
216
215
  // In the future we can fix so we just pickup the setup messages
217
216
  usingBrowsertime = pageInfo.data.browsertime;
218
- usingWebPageTest = pageInfo.data.webpagetest;
219
217
  // if we don't use Browsertime, we don't get the browser version
220
218
  browser = usingBrowsertime
221
219
  ? {
@@ -289,7 +287,6 @@ export class HTMLBuilder {
289
287
  options
290
288
  )
291
289
  : [];
292
-
293
290
  let rootPath = this.storageManager.rootPathFromUrl(url, daurlAlias);
294
291
  let data = {
295
292
  daurl: url,
@@ -315,6 +312,7 @@ export class HTMLBuilder {
315
312
  rootPath,
316
313
  resultUrls: this.context.resultUrls,
317
314
  assetsPath: assetsBaseURL || rootPath,
315
+ sitespeedioURL: options.html.homeurl,
318
316
  menu: 'pages',
319
317
  pageTitle: `Summary for ${helpers.plural(
320
318
  this.options.browsertime.iterations,
@@ -387,6 +385,7 @@ export class HTMLBuilder {
387
385
  rootPath,
388
386
  resultUrls: this.context.resultUrls,
389
387
  assetsPath: assetsBaseURL || rootPath,
388
+ sitespeedioURL: options.html.homeurl,
390
389
  menu: 'pages',
391
390
  pageTitle: `Run ${
392
391
  Number.parseInt(runIndex) + 1
@@ -452,10 +451,12 @@ export class HTMLBuilder {
452
451
  h: helpers,
453
452
  rootPath: '',
454
453
  assetsPath: assetsBaseURL || '',
454
+ sitespeedioURL: options.html.homeurl,
455
455
  menu: name,
456
456
  pageTitle: name,
457
457
  pageDescription: '',
458
458
  browser,
459
+ hostname: hostname(),
459
460
  cpuBenchmark,
460
461
  windowSize,
461
462
  os: osInfo,
@@ -463,7 +464,7 @@ export class HTMLBuilder {
463
464
  android,
464
465
  ios,
465
466
  usingBrowsertime,
466
- usingWebPageTest,
467
+ usingWebPageTest: false,
467
468
  headers: this.summary,
468
469
  version: version,
469
470
  browsertimeVersion: dependencies.browsertime,
@@ -34,8 +34,6 @@ export default class HTMLPlugin extends SitespeedioPlugin {
34
34
  'pagexray.pageSummary',
35
35
  'coach.run',
36
36
  'coach.pageSummary',
37
- 'webpagetest.run',
38
- 'webpagetest.pageSummary',
39
37
  'thirdparty.run',
40
38
  'thirdparty.pageSummary',
41
39
  'crux.pageSummary'
@@ -70,7 +68,6 @@ export default class HTMLPlugin extends SitespeedioPlugin {
70
68
  break;
71
69
  }
72
70
  // we always want to add data from our HARs
73
- case 'webpagetest.har':
74
71
  case 'browsertime.har': {
75
72
  dataCollector.addDataForUrl(
76
73
  message.url,
@@ -204,7 +201,6 @@ export default class HTMLPlugin extends SitespeedioPlugin {
204
201
  }
205
202
  break;
206
203
  }
207
- case 'webpagetest.summary':
208
204
  case 'coach.summary':
209
205
  case 'pagexray.summary':
210
206
  case 'browsertime.summary':
@@ -1,5 +1,4 @@
1
1
  import { noop, size, time } from '../../../support/helpers/index.js';
2
- import get from 'lodash.get';
3
2
 
4
3
  function row(stat, name, metricName, formatter) {
5
4
  if (stat === undefined) {
@@ -23,7 +22,6 @@ export default function (data) {
23
22
  const coach = data.coach;
24
23
  const pagexray = data.pagexray;
25
24
  const browsertime = data.browsertime;
26
- const webpagetest = data.webpagetest;
27
25
  const axe = data.axe;
28
26
  const sustainable = data.sustainable;
29
27
 
@@ -309,27 +307,6 @@ export default function (data) {
309
307
  }
310
308
  }
311
309
 
312
- if (webpagetest) {
313
- const firstView = get(webpagetest, 'summary.timing.firstView');
314
- if (firstView) {
315
- rows.push(
316
- row(firstView.render, 'WPT render (firstView)', 'render', time.ms),
317
- row(
318
- firstView.SpeedIndex,
319
- 'WPT SpeedIndex (firstView)',
320
- 'SpeedIndex',
321
- time.ms
322
- ),
323
- row(
324
- firstView.fullyLoaded,
325
- 'WPT Fully loaded (firstView)',
326
- 'fullyLoaded',
327
- time.ms
328
- )
329
- );
330
- }
331
- }
332
-
333
310
  if (axe) {
334
311
  rows.push(
335
312
  row(
@@ -75,13 +75,5 @@ export default {
75
75
  co2PerPageView: {},
76
76
  co2FirstParty: {},
77
77
  co2ThirdParty: {}
78
- },
79
- webpagetest: {
80
- SpeedIndex: {},
81
- lastVisualChange: {},
82
- render: {},
83
- visualComplete: {},
84
- visualComplete95: {},
85
- fullyLoaded: {}
86
78
  }
87
79
  };
@@ -7,7 +7,7 @@ mixin headerLink(id, name)
7
7
  .darkblue.nav
8
8
  .navgrid
9
9
  .logo
10
- a(href='https://www.sitespeed.io')
10
+ a(href=sitespeedioURL)
11
11
  img.navbar-brand(src= assetsPath + 'img/sitespeed.io-logo.png', width='162', height='50', alt='sitespeed.io logo')
12
12
  ul
13
13
  +headerLink('index', 'Summary')
@@ -12,6 +12,3 @@ if usingBrowsertime
12
12
 
13
13
  if options.browsertime.browser === 'safari'
14
14
  p At the moment we get limited metrics from Safari. Transfer sizes and number of requests are missing.
15
-
16
- else if usingWebPageTest
17
- p.small Tested #{timestamp} using WebPageTest #{options.webpagetest.location} using connectivity #{options.webpagetest.connectivity} for #{h.plural(options.webpagetest.runs, 'run')}.
@@ -26,6 +26,10 @@ block content
26
26
  tr
27
27
  td Emulated mobile
28
28
  td Yes
29
+ if hostname
30
+ tr
31
+ td Hostname
32
+ td #{hostname}
29
33
  if cpuBenchmark
30
34
  tr
31
35
  td CPU benchmark
@@ -7,6 +7,3 @@ if pageInfo.data.browsertime
7
7
  else if options.multi
8
8
  | .
9
9
  a(href= rootPath + 'settings.html')= '(runtime settings).'
10
-
11
- else if pageInfo.data.webpagetest
12
- p.small Tested #{timestamp} using WebPageTest #{options.webpagetest.location} using connectivity #{options.webpagetest.connectivity} for #{h.plural(options.webpagetest.runs, 'run')}.
@@ -175,31 +175,9 @@ block content
175
175
  tr
176
176
  td Last Visual Change
177
177
  td #{h.time.ms(lastVisualChange)}
178
- if !d.browsertime && d.webpagetest
179
- tr
180
- th(colspan='2') WebPageTest
181
- tr
182
- td Render (first view)
183
- td #{d.webpagetest.run.firstView.render}
184
- tr
185
- td Speed Index (first view)
186
- td #{d.webpagetest.run.firstView.SpeedIndex}
187
- tr
188
- td Visual Complete 85% (first view)
189
- td #{d.webpagetest.run.firstView.visualComplete85}
190
- tr
191
- td Last Visual Change (first view)
192
- td #{d.webpagetest.run.firstView.lastVisualChange}
193
- tr
194
- td Requests
195
- td #{d.webpagetest.run.firstView.requestsFull}
196
178
 
197
179
  .one-half.column
198
- if !d.browsertime && d.webpagetest
199
- - screenshotName = 'data/screenshots/wpt-' + iteration + '-firstView.png'
200
- a(href=screenshotName)
201
- img.screenshot(src=screenshotName, alt='Screenshot')
202
- else if hasScreenShots
180
+ if hasScreenShots
203
181
  - screenshotName = 'data/screenshots/' + iteration + '/afterPageCompleteCheck.' + screenShotType
204
182
  - const width = options.mobile ? 150 : '100%';
205
183
  a(href=screenshotName)