browsertime 23.4.4 → 23.5.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Browsertime changelog (we do [semantic versioning](https://semver.org))
2
2
 
3
+ ## 23.5.0 - 2024-12-23
4
+ ### Added
5
+ * Added `--userTimingBlockList` [#2227](https://github.com/sitespeedio/browsertime/pull/2227).
6
+
7
+ ### Fixed
8
+ * Updated to webdriver 4.28 [#2226](https://github.com/sitespeedio/browsertime/pull/2226).
9
+ * Updated dev dependencies [#2228](https://github.com/sitespeedio/browsertime/pull/2228).
10
+ * Fix so the check for gnirehtet always use --android.gnirehtet to fix problens setting it in sitespeed.io [#2229](https://github.com/sitespeedio/browsertime/pull/2229).
11
+ * Update to execa 9.5.2 [#2231](https://github.com/sitespeedio/browsertime/pull/2231).
12
+ * Update to adbkit 3.3.8 [#2232](https://github.com/sitespeedio/browsertime/pull/2232).
13
+ * Fix so you cannot use gnirehtet with webpagereplay [#2230](https://github.com/sitespeedio/browsertime/pull/2230).
14
+
15
+
16
+ ## 23.4.5 - 2024-12-20
17
+ ### Fixed
18
+ * Change bottom margin from 10 to 14 pixel when recoring a video on mobile, se bug [#2224](https://github.com/sitespeedio/browsertime/issues/2224) and PR [#2225](https://github.com/sitespeedio/browsertime/pull/2225).
19
+
3
20
  ## 23.4.4 - 2024-12-18
4
21
  ### Fixed
5
22
  * A more robust gnirehtet check when you run your Android test [#2223](https://github.com/sitespeedio/browsertime/pull/2223).
@@ -6,7 +6,10 @@ import { timestamp as _timestamp } from '../../../support/engineUtils.js';
6
6
  import { Video } from '../../../video/video.js';
7
7
  import { pathToFolder } from '../../../support/pathToFolder.js';
8
8
  import { setOrangeBackground } from '../../../video/screenRecording/setOrangeBackground.js';
9
- import { filterAllowlisted } from '../../../support/userTiming.js';
9
+ import {
10
+ filterAllowlisted,
11
+ filterBlocklisted
12
+ } from '../../../support/userTiming.js';
10
13
  import { isAndroidConfigured, Android } from '../../../android/index.js';
11
14
  import { TCPDump } from '../../../support/tcpdump.js';
12
15
  import { lcpHighlightScript as highlightLargestContentfulPaint } from './util/lcpHighlightScript.js';
@@ -643,6 +646,14 @@ export class Measure {
643
646
  );
644
647
  }
645
648
 
649
+ if (this.options.userTimingBlockList) {
650
+ filterBlocklisted(
651
+ this.result[this.numberOfMeasuredPages].browserScripts.timings
652
+ .userTimings,
653
+ this.options.userTimingAllowList
654
+ );
655
+ }
656
+
646
657
  if (isAndroidConfigured(this.options) && this.options.processStartTime) {
647
658
  const packageName =
648
659
  this.options.browser === 'firefox'
@@ -93,7 +93,7 @@ export class Engine {
93
93
  await android._init();
94
94
  this.android = android;
95
95
 
96
- if (options.gnirehtet === true) {
96
+ if (options.android.gnirehtet === true && !options.webpagereplay) {
97
97
  this.gnirehtet = new Gnirehtet(options);
98
98
  await this.gnirehtet.start();
99
99
  }
@@ -520,7 +520,12 @@ export class Engine {
520
520
  }
521
521
  }
522
522
 
523
- if (options.gnirehtet === true && this.gnirehtet) {
523
+ if (
524
+ !options.webpagereplay &&
525
+ options.android &&
526
+ options.android.gnirehtet === true &&
527
+ this.gnirehtet
528
+ ) {
524
529
  await this.gnirehtet.stop();
525
530
  }
526
531
 
@@ -1255,6 +1255,10 @@ export function parseCommandLine() {
1255
1255
  describe:
1256
1256
  'All userTimings are captured by default this option takes a regex that will allow which userTimings to capture in the results.'
1257
1257
  })
1258
+ .option('userTimingBlockList', {
1259
+ describe:
1260
+ 'All userTimings are captured by default this option takes a regex that will block some usertimings in the results.'
1261
+ })
1258
1262
  .option('headless', {
1259
1263
  type: 'boolean',
1260
1264
  default: false,
@@ -5,3 +5,13 @@ export function filterAllowlisted(userTimings, allowlistRegex) {
5
5
  allowed.test(measure.name)
6
6
  );
7
7
  }
8
+
9
+ export function filterBlocklisted(userTimings, blocklistRegex) {
10
+ const blocked = new RegExp(blocklistRegex);
11
+ userTimings.marks = userTimings.marks.filter(
12
+ mark => !blocked.test(mark.name)
13
+ );
14
+ userTimings.measures = userTimings.measures.filter(
15
+ measure => !blocked.test(measure.name)
16
+ );
17
+ }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "browsertime",
3
3
  "description": "Get performance metrics from your web page using Browsertime.",
4
- "version": "23.4.4",
4
+ "version": "23.5.0",
5
5
  "bin": "./bin/browsertime.js",
6
6
  "type": "module",
7
7
  "types": "./types/scripting.d.ts",
8
8
  "dependencies": {
9
9
  "@cypress/xvfb": "1.2.4",
10
- "@devicefarmer/adbkit": "3.2.6",
10
+ "@devicefarmer/adbkit": "3.3.8",
11
11
  "@sitespeed.io/chromedriver": "131.0.6778-69",
12
12
  "@sitespeed.io/edgedriver": "126.0.2592-102",
13
13
  "@sitespeed.io/geckodriver": "0.35.0-1",
@@ -17,7 +17,7 @@
17
17
  "chrome-har": "1.0.1",
18
18
  "chrome-remote-interface": "0.33.2",
19
19
  "dayjs": "1.11.13",
20
- "execa": "9.3.1",
20
+ "execa": "9.5.2",
21
21
  "fast-stats": "0.0.7",
22
22
  "ff-test-bidi-har-export": "0.0.17",
23
23
  "find-up": "7.0.0",
@@ -30,7 +30,7 @@
30
30
  "lodash.merge": "4.6.2",
31
31
  "lodash.pick": "4.4.0",
32
32
  "lodash.set": "4.3.2",
33
- "selenium-webdriver": "4.26.0",
33
+ "selenium-webdriver": "4.27.0",
34
34
  "usb-power-profiling": "1.5.0",
35
35
  "yargs": "17.7.2"
36
36
  },
@@ -39,17 +39,17 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/selenium-webdriver": "4.1.25",
42
- "ava": "6.1.3",
42
+ "ava": "6.2.0",
43
43
  "clean-jsdoc-theme": "4.3.0",
44
- "eslint": "9.8.0",
44
+ "eslint": "9.17.0",
45
45
  "eslint-config-prettier": "9.1.0",
46
46
  "eslint-plugin-prettier": "5.2.1",
47
- "eslint-plugin-unicorn": "55.0.0",
48
- "jsdoc": "4.0.3",
49
- "prettier": "3.3.3",
50
- "serve": "14.2.3",
51
- "serve-handler": "6.1.5",
52
- "typescript": "5.5.4"
47
+ "eslint-plugin-unicorn": "56.0.1",
48
+ "jsdoc": "4.0.4",
49
+ "prettier": "3.4.2",
50
+ "serve": "14.2.4",
51
+ "serve-handler": "6.1.6",
52
+ "typescript": "5.7.2"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=18.0.0"
@@ -1 +1 @@
1
- {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../../../lib/core/engine/command/measure.js"],"names":[],"mappings":"AA6BA;;;;;;GAMG;AACH;IACE,gQAuGC;IAxFC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,0BAA0C;IAC1C;;OAEG;IACH,cAAkB;IAClB;;OAEG;IACH,eAAoB;IACpB;;OAEG;IACH,uBAAoC;IACpC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,0BAA0C;IAC1C;;OAEG;IACH,uBAAoC;IACpC;;OAEG;IACH,oBAAyD;IACzD;;OAEG;IACH,eAAoB;IACpB;;OAEG;IACH,0BAA0C;IAC1C;;OAEG;IACH,+BAAoD;IACpD;;OAEG;IACH,uBAAoC;IACpC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,8BAA8B;IAC9B;;OAEG;IACH,6BAA6B;IAC7B;;OAEG;IACH,uBAA2B;IAC3B;;OAEG;IACH,mBAAoB;IACpB;;OAEG;IACH,gBAA6D;IAC7D;;OAEG;IACH,2BAAsE;IACtE;;OAEG;IACH,uBAA8D;IAC9D;;OAEG;IACH,2BAAqE;IAGvE;;;OAGG;IACH,oBAsBC;IArBC,aAAuE;IAuBzE;;;OAGG;IACH,mBAKC;IAED;;;OAGG;IACH,eAyBC;IAED;;;OAGG;IACH,iBAQC;IAED;;;;;;;;;;;;OAYG;IACH,kBAmBC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,kBALW,MAAM,kBACN,MAAM,GAEJ,OAAO,CAAC,IAAI,CAAC,CAmFzB;IAED;;;;;;;;OAQG;IACH,0BAJW,MAAM,gBAiBhB;IACD;;;;;;;;;OASG;IACH,qBAJW,MAAM,gBAyEhB;IAED;;;;;;;OAOG;IACH,UAJW,MAAM,SACN,GAAC,QAWX;IAED;;;;;;;OAOG;IACH,6BAOC;IAED;;;OAGG;IACH,gBA4KC;CACF;sBAlqBqB,yBAAyB"}
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../../../lib/core/engine/command/measure.js"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH;IACE,gQAuGC;IAxFC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,0BAA0C;IAC1C;;OAEG;IACH,cAAkB;IAClB;;OAEG;IACH,eAAoB;IACpB;;OAEG;IACH,uBAAoC;IACpC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,0BAA0C;IAC1C;;OAEG;IACH,uBAAoC;IACpC;;OAEG;IACH,oBAAyD;IACzD;;OAEG;IACH,eAAoB;IACpB;;OAEG;IACH,0BAA0C;IAC1C;;OAEG;IACH,+BAAoD;IACpD;;OAEG;IACH,uBAAoC;IACpC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,8BAA8B;IAC9B;;OAEG;IACH,6BAA6B;IAC7B;;OAEG;IACH,uBAA2B;IAC3B;;OAEG;IACH,mBAAoB;IACpB;;OAEG;IACH,gBAA6D;IAC7D;;OAEG;IACH,2BAAsE;IACtE;;OAEG;IACH,uBAA8D;IAC9D;;OAEG;IACH,2BAAqE;IAGvE;;;OAGG;IACH,oBAsBC;IArBC,aAAuE;IAuBzE;;;OAGG;IACH,mBAKC;IAED;;;OAGG;IACH,eAyBC;IAED;;;OAGG;IACH,iBAQC;IAED;;;;;;;;;;;;OAYG;IACH,kBAmBC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,kBALW,MAAM,kBACN,MAAM,GAEJ,OAAO,CAAC,IAAI,CAAC,CAmFzB;IAED;;;;;;;;OAQG;IACH,0BAJW,MAAM,gBAiBhB;IACD;;;;;;;;;OASG;IACH,qBAJW,MAAM,gBAyEhB;IAED;;;;;;;OAOG;IACH,UAJW,MAAM,SACN,GAAC,QAWX;IAED;;;;;;;OAOG;IACH,6BAOC;IAED;;;OAGG;IACH,gBAoLC;CACF;sBA7qBqB,yBAAyB"}
@@ -1,6 +1,5 @@
1
1
  export class StorageManager {
2
2
  constructor(url: any, { resultDir, prettyPrint }?: {
3
- resultDir: any;
4
3
  prettyPrint?: boolean;
5
4
  });
6
5
  baseDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"storageManager.d.ts","sourceRoot":"","sources":["../../lib/support/storageManager.js"],"names":[],"mappings":"AAmDA;IACE;;;OAKC;IAJC,gBAE6D;IAC7D,wBAA0C;IAG5C,iCAGC;IAED,kDAIC;IAED,iCAEC;IAED,kEASC;IAED,sEAQC;IAED,+DAcC;IAED,sEAmBC;IAED,wBAEC;CACF"}
1
+ {"version":3,"file":"storageManager.d.ts","sourceRoot":"","sources":["../../lib/support/storageManager.js"],"names":[],"mappings":"AAmDA;IACE;;OAKC;IAJC,gBAE6D;IAC7D,wBAA0C;IAG5C,iCAGC;IAED,kDAIC;IAED,iCAEC;IAED,kEASC;IAED,sEAQC;IAED,+DAcC;IAED,sEAmBC;IAED,wBAEC;CACF"}
@@ -1,2 +1,3 @@
1
1
  export function filterAllowlisted(userTimings: any, allowlistRegex: any): void;
2
+ export function filterBlocklisted(userTimings: any, blocklistRegex: any): void;
2
3
  //# sourceMappingURL=userTiming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"userTiming.d.ts","sourceRoot":"","sources":["../../lib/support/userTiming.js"],"names":[],"mappings":"AAAA,+EAMC"}
1
+ {"version":3,"file":"userTiming.d.ts","sourceRoot":"","sources":["../../lib/support/userTiming.js"],"names":[],"mappings":"AAAA,+EAMC;AAED,+EAQC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../lib/video/defaults.js"],"names":[],"mappings":"AAAA,2BAA4B;AAC5B,qBAAsB;AACtB,6BAA8B;AAC9B,4BAA6B;AAC7B,2BAA4B;AAC5B,wBAAyB"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../lib/video/defaults.js"],"names":[],"mappings":"AAAA,wBAAyB,EAAE,CAAC;AAC5B,kBAAmB,EAAE,CAAC;AACtB,0BAA2B,EAAE,CAAC;AAC9B,uBAAwB,IAAI,CAAC;AAC7B,sBAAuB,IAAI,CAAC;AAC5B,sBAAuB,CAAC,CAAC"}
@@ -622,7 +622,7 @@ def find_image_viewport(file, is_mobile):
622
622
  # On mobile we need to ignore the top ~10 pixels because
623
623
  # there is a visible progress bar there on some browsers.
624
624
  viewport["y"] += 10
625
- viewport["height"] -= 10
625
+ viewport["height"] -= 14
626
626
 
627
627
  except Exception:
628
628
  viewport = None