Skip to content

Commit c5eb6bd

Browse files
authored
Fix BrowserWebVitalsPerfData clsTime to cls and make it double type. (#13597)
1 parent 9dffe13 commit c5eb6bd

File tree

16 files changed

+44
-79
lines changed

16 files changed

+44
-79
lines changed

docs/en/api/browser-protocol.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Input:
5555
"pagePath": "/index.html",
5656
"fmpTime": 10, // Deprecated since skywalking-client-js 1.0. This is no longer recommended. Please use the `useWebVitals` instead.
5757
/* NOTE, Safari does not support all core web vitals, and Firefox does not support `CLS`. */
58-
"clsTime": 10,
58+
"cls": 0.1,
5959
"lcpTime": 10,
6060
}
6161
```

docs/en/changes/changes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
* KubernetesCoordinator: make self instance return real pod IP address instead of `127.0.0.1`.
88
* Enhance the alarm kernel with recovered status notification capability
9+
* Fix BrowserWebVitalsPerfData `clsTime` to `cls` and make it double type.
910

1011
#### UI
1112
* Fix the missing icon in new native trace view.

oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/source/BrowserAppWebVitalsPerf.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public String getEntityId() {
5050
private String serviceName;
5151
private String path;
5252
private int fmpTime;
53-
private int clsTime;
53+
private int cls;
5454
private int lcpTime;
5555

5656
@Override

oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/decorators/BrowserWebVitalsPerfDataDecorator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public int getLcpTime() {
6969
return builder.getLcpTime();
7070
}
7171

72-
public int getClsTime() {
73-
return builder.getClsTime();
72+
public double getCls() {
73+
return builder.getCls();
7474
}
7575
}

oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/listener/BrowserWebVitalsPerfDataAnalysisListener.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ public void parse(BrowserWebVitalsPerfDataDecorator decorator) {
4949
browserAppWebVitalsPerf.setServiceName(namingControl.formatServiceName(decorator.getService()));
5050
browserAppWebVitalsPerf.setPath(namingControl.formatEndpointName(browserAppWebVitalsPerf.getServiceName(), decorator.getPagePath()));
5151
browserAppWebVitalsPerf.setFmpTime(decorator.getFmpTime());
52-
browserAppWebVitalsPerf.setClsTime(decorator.getClsTime());
52+
// CLS values are typically between 0 and 1. Multiplying by 1000 allows storage as an integer
53+
// while preserving 3 decimal places of precision. When querying, divide by 1000 to restore the original value.
54+
browserAppWebVitalsPerf.setCls((int) Math.round(decorator.getCls() * 1000));
5355
browserAppWebVitalsPerf.setLcpTime(decorator.getLcpTime());
5456
}
5557

oap-server/server-starter/src/main/resources/oal/browser.oal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ browser_app_resource_protocol_count = from(BrowserAppResourcePerf.*).labelCount(
6565
browser_app_resource_type_count = from(BrowserAppResourcePerf.*).labelCount(type);
6666

6767
browser_app_web_vitals_fmp_avg = from(BrowserAppWebVitalsPerf.fmpTime).filter(fmpTime >= 0).longAvg();
68-
browser_app_web_vitals_cls_avg = from(BrowserAppWebVitalsPerf.clsTime).filter(clsTime >= 0).longAvg();
68+
browser_app_web_vitals_cls_avg = from(BrowserAppWebVitalsPerf.cls).filter(cls >= 0).longAvg();
6969
browser_app_web_vitals_lcp_avg = from(BrowserAppWebVitalsPerf.lcpTime).filter(lcpTime >= 0).longAvg();
7070

7171
browser_app_web_interaction_inp_percentile = from(BrowserAppWebInteractionPerf.inpTime).filter(inpTime >= 0).percentile2(10);

oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@
741741
"i": "12",
742742
"type": "Widget",
743743
"expressions": [
744-
"browser_app_web_vitals_cls_avg"
744+
"browser_app_web_vitals_cls_avg / 1000"
745745
],
746746
"graph": {
747747
"type": "Line",
@@ -752,7 +752,7 @@
752752
"showYAxis": true
753753
},
754754
"widget": {
755-
"title": "Web Vitals Cumulative Layout Shift Latency(ms)"
755+
"title": "Web Vitals Cumulative Layout Shift Score"
756756
},
757757
"associate": [
758758
{

test/e2e-v2/cases/browser/browser-cases.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ cases:
7070
query: |
7171
swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
7272
--expression=browser_app_page_load_page_avg --service-id dGVzdC11aQ==.1 --endpoint-name index.html
73+
- expected: expected/metrics-has-value.yml
74+
query: |
75+
swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
76+
--expression=browser_app_web_vitals_cls_avg --service-id dGVzdC11aQ==.1 --endpoint-name index.html
7377
- expected: expected/metrics-has-value.yml
7478
query: |
7579
swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
@@ -84,4 +88,4 @@ cases:
8488
--expression=browser_app_page_load_page_percentile --service-id dGVzdC11aQ==.1 --endpoint-name index.html
8589
# dependency service
8690
- expected: expected/dependency.yml
87-
query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-id dGVzdC11aTxicm93c2VyPg==.1
91+
query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name test-ui

test/e2e-v2/cases/browser/docker/Dockerfile.test-ui

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ ARG CLIENT_JS_CODE_URL=https://github.com/apache/skywalking-client-js/archive/${
2323
WORKDIR /skywalking-client-js
2424
ADD ${CLIENT_JS_CODE_URL} .
2525
RUN tar -xf ${CLIENT_JS_CODE} --strip 1 && rm ${CLIENT_JS_CODE}
26+
ENV NPM_TOKEN=""
2627
RUN npm run rebuild \
2728
&& npm link
2829

0 commit comments

Comments
 (0)