browsertime 24.6.0 → 24.8.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,24 @@
1
1
  # Browsertime changelog (we do [semantic versioning](https://semver.org))
2
2
 
3
+ ## 24.8.0 - 2025-05-30
4
+ ### Added
5
+ * Updated to Chrome/Chromedriver 137 and Firefox 139 in the Docker container [#2284](https://github.com/sitespeedio/browsertime/pull/2284).
6
+ * Updated to Edge/Edgedriver 137 in the Docker container [#2289](https://github.com/sitespeedio/browsertime/pull/2289).
7
+ * New command: `wait.byXpathAndVisible(...)` - thank you [Pavel Bairov](https://github.com/Amerousful) for PR [#2286](https://github.com/sitespeedio/browsertime/pull/2286).
8
+ * New command: `wait.bySelectorAndVisible(...)` PR [#2288](https://github.com/sitespeedio/browsertime/pull/2288).
9
+
10
+ ### Fixed
11
+ * Updated dependencies: selenium, usb-power-profiling, execa and dev dependencies [#2290](https://github.com/sitespeedio/browsertime/pull/2290), [#2291](https://github.com/sitespeedio/browsertime/pull/2291), [#2294](https://github.com/sitespeedio/browsertime/pull/2294) and [#2295](https://github.com/sitespeedio/browsertime/pull/2295).
12
+
13
+ ## 24.7.0 - 2025-05-13
14
+ ### Added
15
+ * Added Edge and Edgedriver 136 [#2282](https://github.com/sitespeedio/browsertime/pull/2282).
16
+ * Add commands to start/stop and collect PerfStats performance counters for Firefox, thank you [Denis Palmeiro](https://github.com/dpalmeiro) for PR [#2279](https://github.com/sitespeedio/browsertime/pull/2279).
17
+
18
+ ### Fixed
19
+ * Selenium 4.32.0 [#2281](https://github.com/sitespeedio/browsertime/pull/2281).
20
+ * Chromedriver 136 [#2280](https://github.com/sitespeedio/browsertime/pull/2280).
21
+
3
22
  ## 24.6.0 - 2025-05-05
4
23
  ### Added
5
24
  * Updated the Docker container to use Chrome 136.0, Firefox 138 and Edge 135.0 [#2277](https://github.com/sitespeedio/browsertime/pull/2277).
@@ -0,0 +1,67 @@
1
+ import { PerfStats } from '../../../firefox/perfStats.js';
2
+ /**
3
+ * Manages the PerfStats interface used for collecting Firefox performance counters.
4
+ *
5
+ * @class
6
+ * @hideconstructor
7
+ */
8
+
9
+ export class PerfStatsInterface {
10
+ constructor(browser, options) {
11
+ /**
12
+ * @private
13
+ */
14
+ this.PerfStats = new PerfStats(browser);
15
+ /**
16
+ * @private
17
+ */
18
+ this.options = options;
19
+ }
20
+
21
+ /**
22
+ * Starts PerfStats collection based on the given feature mask.
23
+ *
24
+ * @async
25
+ * @returns {Promise<void>} A promise that resolves when collection has started.
26
+ * @throws {Error} Throws an error if not running Firefox.
27
+ */
28
+ // eslint-disable-next-line prettier/prettier
29
+ async start(featureMask = 0xFF_FF_FF_FF) {
30
+ if (this.options.browser === 'firefox') {
31
+ return this.PerfStats.start(featureMask);
32
+ } else {
33
+ throw new Error('PerfStats only works in Firefox');
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Stops PerfStats collection.
39
+ *
40
+ * @async
41
+ * @returns {Promise<void>} A promise that resolves when collection has stopped.
42
+ * @throws {Error} Throws an error if not running Firefox.
43
+ */
44
+ async stop() {
45
+ if (this.options.browser === 'firefox') {
46
+ return this.PerfStats.stop();
47
+ } else {
48
+ throw new Error('PerfStats only works in Firefox');
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Returns an object that has cumulative perfstats statistics across each
54
+ * process for the features that were enabled. Should be called before stop().
55
+ *
56
+ * @async
57
+ * @returns {Object} Returns an object with cumulative results.
58
+ * @throws {Error} Throws an error if not running Firefox.
59
+ */
60
+ async collect() {
61
+ if (this.options.browser === 'firefox') {
62
+ return this.PerfStats.collect();
63
+ } else {
64
+ throw new Error('PerfStats only works in Firefox');
65
+ }
66
+ }
67
+ }
@@ -100,6 +100,35 @@ export class Wait {
100
100
  }
101
101
  }
102
102
 
103
+ /**
104
+ * Waits for an element located by XPath to appear and visible within a maximum time.
105
+ *
106
+ * @async
107
+ * @param {string} xpath - The XPath of the element to wait for.
108
+ * @param {number} maxTime - Maximum time to wait in milliseconds.
109
+ * @returns {Promise<void>} A promise that resolves when the element is found or the time times out.
110
+ * @throws {Error} Throws an error if the element is not found within the specified time.
111
+ */
112
+ async byXpathAndVisible(xpath, maxTime = 6000) {
113
+ const driver = this.browser.getDriver();
114
+ await this.byXpath(xpath, maxTime);
115
+ try {
116
+ driver.findElement;
117
+ await driver.wait(
118
+ webdriver.until.elementIsVisible(
119
+ driver.findElement(webdriver.By.xpath(xpath))
120
+ ),
121
+ maxTime
122
+ );
123
+ } catch (error) {
124
+ log.error('Element by xpath %s was not visible in %s ms', xpath, maxTime);
125
+ log.verbose(error);
126
+ throw new Error(
127
+ `Element by xpath ${xpath} was not located in ${maxTime} ms`
128
+ );
129
+ }
130
+ }
131
+
103
132
  /**
104
133
  * Waits for an element located by a CSS selector to appear within a maximum time.
105
134
  *
@@ -131,6 +160,38 @@ export class Wait {
131
160
  }
132
161
  }
133
162
 
163
+ /**
164
+ * Waits for an element located by a CSS selector to be visible within a maximum time.
165
+ *
166
+ * @async
167
+ * @param {string} selector - The CSS selector of the element to wait for.
168
+ * @param {number} maxTime - Maximum time to wait in milliseconds.
169
+ * @returns {Promise<void>} A promise that resolves when the element is found or the time times out.
170
+ * @throws {Error} Throws an error if the element is not found within the specified time.
171
+ */
172
+ async bySelectorAndVisible(selector, maxTime = 6000) {
173
+ const driver = this.browser.getDriver();
174
+
175
+ try {
176
+ await driver.wait(
177
+ webdriver.until.elementIsVisible(
178
+ driver.findElement(webdriver.By.css(selector))
179
+ ),
180
+ maxTime
181
+ );
182
+ } catch (error) {
183
+ log.error(
184
+ 'Element by selector %s was not visible in %s ms',
185
+ selector,
186
+ maxTime
187
+ );
188
+ log.verbose(error);
189
+ throw new Error(
190
+ `Element by selector ${selector} was not visible in ${maxTime} ms`
191
+ );
192
+ }
193
+ }
194
+
134
195
  /**
135
196
  * Waits for a specified amount of time.
136
197
  *
@@ -28,6 +28,7 @@ import { Scroll } from './command/scroll.js';
28
28
  import { Navigation } from './command/navigation.js';
29
29
  import { GeckoProfiler } from '../../firefox/geckoProfiler.js';
30
30
  import { GeckoProfiler as GeckoProfilerCommand } from './command/geckoProfiler.js';
31
+ import { PerfStatsInterface } from './command/perfStats.js';
31
32
  /**
32
33
  * Represents the set of commands available in a Browsertime script.
33
34
  * @hideconstructor
@@ -64,6 +65,10 @@ export class Commands {
64
65
  options
65
66
  );
66
67
 
68
+ /**
69
+ * Manages GeckoProfiler functionality to collect performance profiles.
70
+ * @type {GeckoProfiler}
71
+ */
67
72
  const browserProfiler = new GeckoProfiler(browser, storageManager, options);
68
73
  // Profiler
69
74
  this.profiler = new GeckoProfilerCommand(
@@ -73,6 +78,14 @@ export class Commands {
73
78
  options,
74
79
  result
75
80
  );
81
+
82
+ /**
83
+ * Manages PerfStats functionality to collect performance counters.
84
+ * @type {PerfStatsInterface}
85
+ */
86
+ const perfStats = new PerfStatsInterface(browser, options);
87
+ this.perfStats = perfStats;
88
+
76
89
  const cdp = new ChromeDevelopmentToolsProtocol(
77
90
  engineDelegate,
78
91
  options.browser
@@ -2,14 +2,12 @@ import { getLogger } from '@sitespeed.io/log';
2
2
  const log = getLogger('browsertime.firefox');
3
3
 
4
4
  export class PerfStats {
5
- constructor(runner, firefoxConfig) {
5
+ constructor(runner) {
6
6
  this.runner = runner;
7
- this.firefoxConfig = firefoxConfig;
8
7
  }
9
8
 
10
- async start() {
9
+ async start(featureMask) {
11
10
  const runner = this.runner;
12
- const featureMask = this.firefoxConfig.perfStatsParams.mask;
13
11
  const script = `ChromeUtils.setPerfStatsCollectionMask(${featureMask});`;
14
12
  return runner.runPrivilegedScript(script, 'Start PerfStats Measurement');
15
13
  }
@@ -176,8 +176,8 @@ export class Firefox {
176
176
  }
177
177
 
178
178
  if (this.firefoxConfig.perfStats) {
179
- this.perfStats = new PerfStats(runner, this.firefoxConfig);
180
- return this.perfStats.start();
179
+ this.perfStats = new PerfStats(runner);
180
+ return this.perfStats.start(this.firefoxConfig.perfStatsParams.mask);
181
181
  }
182
182
 
183
183
  this.testStartTime = Date.now();
package/package.json CHANGED
@@ -1,25 +1,25 @@
1
1
  {
2
2
  "name": "browsertime",
3
3
  "description": "Get performance metrics from your web page using Browsertime.",
4
- "version": "24.6.0",
4
+ "version": "24.8.0",
5
5
  "bin": "./bin/browsertime.js",
6
6
  "type": "module",
7
7
  "types": "./types/scripting.d.ts",
8
8
  "dependencies": {
9
9
  "@devicefarmer/adbkit": "3.3.8",
10
- "@sitespeed.io/chromedriver": "134.0.6998-35",
11
- "@sitespeed.io/edgedriver": "134.0.3124-51",
10
+ "@sitespeed.io/chromedriver": "137.0.7151-55",
11
+ "@sitespeed.io/edgedriver": "137.0.3296-52",
12
12
  "@sitespeed.io/geckodriver": "0.36.0",
13
13
  "@sitespeed.io/log": "0.2.6",
14
14
  "@sitespeed.io/throttle": "5.0.1",
15
15
  "@sitespeed.io/tracium": "0.3.3",
16
16
  "chrome-har": "1.0.1",
17
17
  "chrome-remote-interface": "0.33.3",
18
- "execa": "9.5.2",
18
+ "execa": "9.6.0",
19
19
  "fast-stats": "0.0.7",
20
20
  "ff-test-bidi-har-export": "0.0.17",
21
21
  "lodash.merge": "4.6.2",
22
- "selenium-webdriver": "4.29.0",
22
+ "selenium-webdriver": "4.33.0",
23
23
  "yargs": "17.7.2"
24
24
  },
25
25
  "optionalDependencies": {
@@ -28,18 +28,18 @@
28
28
  "@jimp/jpeg": "0.22.12",
29
29
  "@jimp/plugin-resize": "0.22.12",
30
30
  "@jimp/plugin-scale": "0.22.12",
31
- "usb-power-profiling": "1.5.0"
31
+ "usb-power-profiling": "1.6.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/selenium-webdriver": "4.1.25",
35
- "ava": "6.2.0",
35
+ "ava": "6.3.0",
36
36
  "clean-jsdoc-theme": "4.3.0",
37
- "eslint": "9.17.0",
38
- "eslint-config-prettier": "9.1.0",
39
- "eslint-plugin-prettier": "5.2.1",
37
+ "eslint": "9.27.0",
38
+ "eslint-config-prettier": "10.1.5",
39
+ "eslint-plugin-prettier": "5.4.1",
40
40
  "eslint-plugin-unicorn": "56.0.1",
41
41
  "jsdoc": "4.0.4",
42
- "prettier": "3.4.2",
42
+ "prettier": "3.5.3",
43
43
  "serve": "14.2.4",
44
44
  "serve-handler": "6.1.6",
45
45
  "typescript": "5.7.2"
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Manages the PerfStats interface used for collecting Firefox performance counters.
3
+ *
4
+ * @class
5
+ * @hideconstructor
6
+ */
7
+ export class PerfStatsInterface {
8
+ constructor(browser: any, options: any);
9
+ /**
10
+ * @private
11
+ */
12
+ private PerfStats;
13
+ /**
14
+ * @private
15
+ */
16
+ private options;
17
+ /**
18
+ * Starts PerfStats collection based on the given feature mask.
19
+ *
20
+ * @async
21
+ * @returns {Promise<void>} A promise that resolves when collection has started.
22
+ * @throws {Error} Throws an error if not running Firefox.
23
+ */
24
+ start(featureMask?: number): Promise<void>;
25
+ /**
26
+ * Stops PerfStats collection.
27
+ *
28
+ * @async
29
+ * @returns {Promise<void>} A promise that resolves when collection has stopped.
30
+ * @throws {Error} Throws an error if not running Firefox.
31
+ */
32
+ stop(): Promise<void>;
33
+ /**
34
+ * Returns an object that has cumulative perfstats statistics across each
35
+ * process for the features that were enabled. Should be called before stop().
36
+ *
37
+ * @async
38
+ * @returns {Object} Returns an object with cumulative results.
39
+ * @throws {Error} Throws an error if not running Firefox.
40
+ */
41
+ collect(): any;
42
+ }
43
+ //# sourceMappingURL=perfStats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perfStats.d.ts","sourceRoot":"","sources":["../../../../lib/core/engine/command/perfStats.js"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH;IACE,wCASC;IARC;;OAEG;IACH,kBAAuC;IACvC;;OAEG;IACH,gBAAsB;IAGxB;;;;;;OAMG;IAEH,6BAJa,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;;;;OAMG;IACH,QAHa,OAAO,CAAC,IAAI,CAAC,CASzB;IAED;;;;;;;OAOG;IACH,eAMC;CACF"}
@@ -44,6 +44,16 @@ export class Wait {
44
44
  * @throws {Error} Throws an error if the element is not found within the specified time.
45
45
  */
46
46
  byXpath(xpath: string, maxTime: number): Promise<void>;
47
+ /**
48
+ * Waits for an element located by XPath to appear and visible within a maximum time.
49
+ *
50
+ * @async
51
+ * @param {string} xpath - The XPath of the element to wait for.
52
+ * @param {number} maxTime - Maximum time to wait in milliseconds.
53
+ * @returns {Promise<void>} A promise that resolves when the element is found or the time times out.
54
+ * @throws {Error} Throws an error if the element is not found within the specified time.
55
+ */
56
+ byXpathAndVisible(xpath: string, maxTime?: number): Promise<void>;
47
57
  /**
48
58
  * Waits for an element located by a CSS selector to appear within a maximum time.
49
59
  *
@@ -54,6 +64,16 @@ export class Wait {
54
64
  * @throws {Error} Throws an error if the element is not found within the specified time.
55
65
  */
56
66
  bySelector(selector: string, maxTime: number): Promise<void>;
67
+ /**
68
+ * Waits for an element located by a CSS selector to be visible within a maximum time.
69
+ *
70
+ * @async
71
+ * @param {string} selector - The CSS selector of the element to wait for.
72
+ * @param {number} maxTime - Maximum time to wait in milliseconds.
73
+ * @returns {Promise<void>} A promise that resolves when the element is found or the time times out.
74
+ * @throws {Error} Throws an error if the element is not found within the specified time.
75
+ */
76
+ bySelectorAndVisible(selector: string, maxTime?: number): Promise<void>;
57
77
  /**
58
78
  * Waits for a specified amount of time.
59
79
  *
@@ -1 +1 @@
1
- {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../../lib/core/engine/command/wait.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH;IACE,kDASC;IARC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,0BAA0C;IAG5C;;;;;;;;OAQG;IACH,SALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAiBzB;IAED;;;;;;;;OAQG;IACH,mBALW,MAAM,YACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;;;;;;OAQG;IACH,eALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;;;;;;OAQG;IACH,qBALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAED;;;;;;;OAOG;IACH,WAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;;OAKG;IACH,oBAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;;;;;OAQG;IACH,0BALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAiBzB;CACF"}
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../../lib/core/engine/command/wait.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH;IACE,kDASC;IARC;;OAEG;IACH,gBAAsB;IACtB;;OAEG;IACH,0BAA0C;IAG5C;;;;;;;;OAQG;IACH,SALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAiBzB;IAED;;;;;;;;OAQG;IACH,mBALW,MAAM,YACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;;;;;;OAQG;IACH,eALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;;;;;;OAQG;IACH,yBALW,MAAM,YACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAqBzB;IAED;;;;;;;;OAQG;IACH,qBALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAED;;;;;;;;OAQG;IACH,+BALW,MAAM,YACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAwBzB;IAED;;;;;;;OAOG;IACH,WAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;;OAKG;IACH,oBAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;;;;;OAQG;IACH,0BALW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAiBzB;CACF"}
@@ -5,6 +5,7 @@
5
5
  export class Commands {
6
6
  constructor(browser: any, engineDelegate: any, index: any, result: any, storageManager: any, pageCompleteCheck: any, context: any, videos: any, screenshotManager: any, scriptsByCategory: any, asyncScriptsByCategory: any, postURLScripts: any, options: any);
7
7
  profiler: GeckoProfilerCommand;
8
+ perfStats: PerfStatsInterface;
8
9
  /**
9
10
  * Manages Chrome trace functionality, enabling custom profiling and trace collection in Chrome.
10
11
  * @type {ChromeTrace}
@@ -144,6 +145,7 @@ export class Commands {
144
145
  element: Element;
145
146
  }
146
147
  import { GeckoProfiler as GeckoProfilerCommand } from './command/geckoProfiler.js';
148
+ import { PerfStatsInterface } from './command/perfStats.js';
147
149
  import { ChromeTrace } from './command/chromeTrace.js';
148
150
  import { Click } from './command/click.js';
149
151
  import { Scroll } from './command/scroll.js';
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../lib/core/engine/commands.js"],"names":[],"mappings":"AA8BA;;;GAGG;AACH;IACE,gQA4OC;IA3MC,+BAMC;IAMD;;;OAGG;IACH,OAFU,WAAW,CAE+C;IAEpE;;;OAGG;IACH,OAFU,KAAK,CAEmC;IAElD;;;OAGG;IACH,QAFU,MAAM,CAE0B;IAE1C;;;OAGG;IACH,SAFU,OAAO,CAEkB;IAEnC;;;OAGG;IACH,MAFU,IAAI,CAEkC;IAEhD;;;OAGG;IACH,SAFU,OAAO,CAEK;IAEtB;;;;;;;;OAQG;IACH,mBAA+C;IAE/C;;;OAGG;IACH,YAFU,UAAU,CAEwC;IAE5D;;;;;OAKG;IACH,gBAAyC;IAEzC;;;;;OAKG;IACH,wBAAmD;IAEnD;;;OAGG;IACH,IAFU,UAAU,CAEgC;IAEpD;;;OAGG;IACH,QAFU,MAAM,CAMf;IAED;;;OAGG;IACH,KAFU,GAAG,CAEc;IAE3B;;;OAGG;IACH,WAFU,SAAS,CAEoB;IAEvC;;;OAGG;IACH,OAFU,KAAK,CAEsC;IAErD;;;OAGG;IACH,MAFU,IAAI,CAEQ;IAEtB;;;OAGG;IACH,YAFU,UAAU,CAE+C;IAEnE;;;OAGG;IACH,KAFU,8BAA8B,CAE1B;IAEd;;;;OAIG;IACH,MAFU,IAAI,CAEuC;IAErD;;;OAGG;IACH,SAFU,cAAc,CAEkB;IAE1C;;;;OAIG;IACH,OAFW,KAAK,CAEwB;IAExC;;;OAGG;IACH,WA0BC;IAED;;;OAGG;IACH,QAFU,MAAM,CAEiB;IAEjC;;;;OAIG;IACH,QAHU,OAAO,CAGiB;IAElC;;;OAGG;IACH,SAFU,OAAO,CAEkB;CAEtC;sDAnPqD,4BAA4B;4BAXtD,0BAA0B;sBAhBhC,oBAAoB;uBAwBnB,qBAAqB;wBAzBpB,sBAAsB;qBAGzB,mBAAmB;wBAChB,sBAAsB;2BAsBnB,yBAAyB;2BArBzB,yBAAyB;uBAC7B,qBAAqB;oBAExB,kBAAkB;mCAGH,wBAAwB;sBAFrC,oBAAoB;qBACrB,mBAAmB;2BAHb,yBAAyB;+CASL,qCAAqC;qBAF/D,mBAAmB;+BACT,sBAAsB;sBAF/B,oBAAoB;uBADnB,qBAAqB;wBAbpB,sBAAsB;wBAGtB,sBAAsB"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../lib/core/engine/commands.js"],"names":[],"mappings":"AA+BA;;;GAGG;AACH;IACE,gQAwPC;IAnNC,+BAMC;IAOD,8BAA0B;IAO1B;;;OAGG;IACH,OAFU,WAAW,CAE+C;IAEpE;;;OAGG;IACH,OAFU,KAAK,CAEmC;IAElD;;;OAGG;IACH,QAFU,MAAM,CAE0B;IAE1C;;;OAGG;IACH,SAFU,OAAO,CAEkB;IAEnC;;;OAGG;IACH,MAFU,IAAI,CAEkC;IAEhD;;;OAGG;IACH,SAFU,OAAO,CAEK;IAEtB;;;;;;;;OAQG;IACH,mBAA+C;IAE/C;;;OAGG;IACH,YAFU,UAAU,CAEwC;IAE5D;;;;;OAKG;IACH,gBAAyC;IAEzC;;;;;OAKG;IACH,wBAAmD;IAEnD;;;OAGG;IACH,IAFU,UAAU,CAEgC;IAEpD;;;OAGG;IACH,QAFU,MAAM,CAMf;IAED;;;OAGG;IACH,KAFU,GAAG,CAEc;IAE3B;;;OAGG;IACH,WAFU,SAAS,CAEoB;IAEvC;;;OAGG;IACH,OAFU,KAAK,CAEsC;IAErD;;;OAGG;IACH,MAFU,IAAI,CAEQ;IAEtB;;;OAGG;IACH,YAFU,UAAU,CAE+C;IAEnE;;;OAGG;IACH,KAFU,8BAA8B,CAE1B;IAEd;;;;OAIG;IACH,MAFU,IAAI,CAEuC;IAErD;;;OAGG;IACH,SAFU,cAAc,CAEkB;IAE1C;;;;OAIG;IACH,OAFW,KAAK,CAEwB;IAExC;;;OAGG;IACH,WA0BC;IAED;;;OAGG;IACH,QAFU,MAAM,CAEiB;IAEjC;;;;OAIG;IACH,QAHU,OAAO,CAGiB;IAElC;;;OAGG;IACH,SAFU,OAAO,CAEkB;CAEtC;sDAhQqD,4BAA4B;mCAC/C,wBAAwB;4BAZ/B,0BAA0B;sBAhBhC,oBAAoB;uBAwBnB,qBAAqB;wBAzBpB,sBAAsB;qBAGzB,mBAAmB;wBAChB,sBAAsB;2BAsBnB,yBAAyB;2BArBzB,yBAAyB;uBAC7B,qBAAqB;oBAExB,kBAAkB;mCAGH,wBAAwB;sBAFrC,oBAAoB;qBACrB,mBAAmB;2BAHb,yBAAyB;+CASL,qCAAqC;qBAF/D,mBAAmB;+BACT,sBAAsB;sBAF/B,oBAAoB;uBADnB,qBAAqB;wBAbpB,sBAAsB;wBAGtB,sBAAsB"}
@@ -0,0 +1,8 @@
1
+ export class PerfStats {
2
+ constructor(runner: any);
3
+ runner: any;
4
+ start(featureMask: any): Promise<any>;
5
+ stop(): Promise<any>;
6
+ collect(): Promise<{}>;
7
+ }
8
+ //# sourceMappingURL=perfStats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perfStats.d.ts","sourceRoot":"","sources":["../../lib/firefox/perfStats.js"],"names":[],"mappings":"AAGA;IACE,yBAEC;IADC,YAAoB;IAGtB,sCAIC;IAED,qBAIC;IAED,uBAuCC;CACF"}