browsertime 16.2.1 → 16.4.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,19 @@
1
1
  # Browsertime changelog (we do [semantic versioning](https://semver.org))
2
2
 
3
+ ## 16.4.0 - 2022-05-11
4
+ ### Added
5
+ * If we have the Largest Contentful Paint for the video, add that to the video text instead of DOMContentLoaded [#1783](https://github.com/sitespeedio/browsertime/pull/1783).
6
+
7
+ ### Fixed
8
+ * Only get LCP in Visual Metrics if the LCP API gives us a element [#1786](https://github.com/sitespeedio/browsertime/pull/1786).
9
+ ## 16.3.0 - 2022-05-07
10
+ ### Added
11
+ * If you use `--visualElements` and the browser supports the Largest Contentful API, we also record
12
+ the LCP from the video. This will help the Chrome team and other browser teams to get it right (see [https://bugs.chromium.org/p/chromium/issues/detail?id=1291502](https://bugs.chromium.org/p/chromium/issues/detail?id=1291502)) [#1782](https://github.com/sitespeedio/browsertime/pull/1782).
13
+
14
+ ## 16.2.2 - 2022-05-06
15
+ ### Fixed
16
+ * The Docker container uses Ubuntu 20 again (instead of 22) since there's been multiple problems (running on ARM and on some cloud services).
3
17
 
4
18
  ## 16.2.1 - 2022-05-04
5
19
 
@@ -125,6 +125,22 @@
125
125
  }
126
126
  });
127
127
 
128
+ // If the browser support largest contentful paint, get that element as well
129
+ const supported = PerformanceObserver.supportedEntryTypes;
130
+ if (supported && supported.indexOf('largest-contentful-paint') > -1) {
131
+ const observer = new PerformanceObserver(list => {});
132
+ observer.observe({ type: 'largest-contentful-paint', buffered: true });
133
+ const entries = observer.takeRecords();
134
+ if (entries.length > 0) {
135
+ const largestEntry = entries[entries.length - 1];
136
+ // It seems that the API do not alwayas have a elememt
137
+ if (largestEntry.element && isElementPartlyInViewportAndVisible(largestEntry.element)) {
138
+ keepLargestElementByType('LargestContentfulPaint', largestEntry.element);
139
+ }
140
+ }
141
+ }
142
+
143
+
128
144
  // We need to follow the standard for VisualMetrics
129
145
  return {
130
146
  viewport: {
@@ -52,7 +52,13 @@ module.exports = function (videoMetrics, timingMetrics, options) {
52
52
  value: vm.LastVisualChange
53
53
  });
54
54
  }
55
- if (timingMetrics) {
55
+
56
+ if (vm.LargestContentfulPaint) {
57
+ metricsAndValues.push({
58
+ name: 'LargestContentfulPaint',
59
+ value: vm.LargestContentfulPaint
60
+ });
61
+ } else if (timingMetrics) {
56
62
  const pt = timingMetrics;
57
63
  metricsAndValues.push({
58
64
  name: 'DOMContentLoaded',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "description": "Browsertime",
3
- "version": "16.2.1",
3
+ "version": "16.4.0",
4
4
  "bin": "./bin/browsertime.js",
5
5
  "dependencies": {
6
6
  "@cypress/xvfb": "1.2.4",