This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new c5eb6bdde4 Fix BrowserWebVitalsPerfData `clsTime` to `cls` and make it
double type. (#13597)
c5eb6bdde4 is described below
commit c5eb6bdde4205a7474361598a5402d1b6efa60f7
Author: Wan Kai <[email protected]>
AuthorDate: Wed Dec 3 16:43:02 2025 +0800
Fix BrowserWebVitalsPerfData `clsTime` to `cls` and make it double type.
(#13597)
---
apm-protocol/apm-network/src/main/proto | 2 +-
docs/en/api/browser-protocol.md | 2 +-
docs/en/changes/changes.md | 1 +
.../browser/source/BrowserAppWebVitalsPerf.java | 2 +-
.../BrowserWebVitalsPerfDataDecorator.java | 4 +-
.../BrowserWebVitalsPerfDataAnalysisListener.java | 4 +-
.../src/main/resources/oal/browser.oal | 2 +-
.../browser/browser-page.json | 4 +-
test/e2e-v2/cases/browser/browser-cases.yaml | 6 +-
.../e2e-v2/cases/browser/docker/Dockerfile.test-ui | 1 +
test/e2e-v2/cases/browser/expected/dependency.yml | 10 +--
.../expected/metrics-has-value-percentile.yml | 77 +++++-----------------
.../cases/browser/expected/metrics-has-value.yml | 2 +-
.../e2e-v2/cases/browser/expected/trace-detail.yml | 2 +-
.../cases/browser/expected/trace-v2-detail.yml | 2 +-
test/e2e-v2/script/env | 2 +-
16 files changed, 44 insertions(+), 79 deletions(-)
diff --git a/apm-protocol/apm-network/src/main/proto
b/apm-protocol/apm-network/src/main/proto
index 055d64b104..050b6eb294 160000
--- a/apm-protocol/apm-network/src/main/proto
+++ b/apm-protocol/apm-network/src/main/proto
@@ -1 +1 @@
-Subproject commit 055d64b104b5d84e15e27b74f5cbe712e7f9b0df
+Subproject commit 050b6eb2941e197e9aed118263f2fa23d44265f8
diff --git a/docs/en/api/browser-protocol.md b/docs/en/api/browser-protocol.md
index 3fb3d71e7f..4f7f515c28 100644
--- a/docs/en/api/browser-protocol.md
+++ b/docs/en/api/browser-protocol.md
@@ -55,7 +55,7 @@ Input:
"pagePath": "/index.html",
"fmpTime": 10, // Deprecated since skywalking-client-js 1.0. This is no
longer recommended. Please use the `useWebVitals` instead.
/* NOTE, Safari does not support all core web vitals, and Firefox does not
support `CLS`. */
- "clsTime": 10,
+ "cls": 0.1,
"lcpTime": 10,
}
```
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index f4b4ae9ba5..b2ef569462 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -6,6 +6,7 @@
* KubernetesCoordinator: make self instance return real pod IP address instead
of `127.0.0.1`.
* Enhance the alarm kernel with recovered status notification capability
+* Fix BrowserWebVitalsPerfData `clsTime` to `cls` and make it double type.
#### UI
* Fix the missing icon in new native trace view.
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/source/BrowserAppWebVitalsPerf.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/source/BrowserAppWebVitalsPerf.java
index c7df9271ad..874e163fae 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/source/BrowserAppWebVitalsPerf.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/source/BrowserAppWebVitalsPerf.java
@@ -50,7 +50,7 @@ public class BrowserAppWebVitalsPerf extends Source {
private String serviceName;
private String path;
private int fmpTime;
- private int clsTime;
+ private int cls;
private int lcpTime;
@Override
diff --git
a/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
b/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
index 7d4ede1f23..33712fb199 100644
---
a/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
+++
b/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
@@ -69,7 +69,7 @@ public class BrowserWebVitalsPerfDataDecorator implements
BrowserPerfDecorator {
return builder.getLcpTime();
}
- public int getClsTime() {
- return builder.getClsTime();
+ public double getCls() {
+ return builder.getCls();
}
}
diff --git
a/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
b/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
index db7c6cd19a..f457925fe2 100644
---
a/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
+++
b/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
@@ -49,7 +49,9 @@ public class BrowserWebVitalsPerfDataAnalysisListener
implements PerfDataAnalysi
browserAppWebVitalsPerf.setServiceName(namingControl.formatServiceName(decorator.getService()));
browserAppWebVitalsPerf.setPath(namingControl.formatEndpointName(browserAppWebVitalsPerf.getServiceName(),
decorator.getPagePath()));
browserAppWebVitalsPerf.setFmpTime(decorator.getFmpTime());
- browserAppWebVitalsPerf.setClsTime(decorator.getClsTime());
+ // CLS values are typically between 0 and 1. Multiplying by 1000
allows storage as an integer
+ // while preserving 3 decimal places of precision. When querying,
divide by 1000 to restore the original value.
+ browserAppWebVitalsPerf.setCls((int) Math.round(decorator.getCls() *
1000));
browserAppWebVitalsPerf.setLcpTime(decorator.getLcpTime());
}
diff --git a/oap-server/server-starter/src/main/resources/oal/browser.oal
b/oap-server/server-starter/src/main/resources/oal/browser.oal
index b7b3a37deb..995dcf09b0 100644
--- a/oap-server/server-starter/src/main/resources/oal/browser.oal
+++ b/oap-server/server-starter/src/main/resources/oal/browser.oal
@@ -65,7 +65,7 @@ browser_app_resource_protocol_count =
from(BrowserAppResourcePerf.*).labelCount(
browser_app_resource_type_count =
from(BrowserAppResourcePerf.*).labelCount(type);
browser_app_web_vitals_fmp_avg =
from(BrowserAppWebVitalsPerf.fmpTime).filter(fmpTime >= 0).longAvg();
-browser_app_web_vitals_cls_avg =
from(BrowserAppWebVitalsPerf.clsTime).filter(clsTime >= 0).longAvg();
+browser_app_web_vitals_cls_avg = from(BrowserAppWebVitalsPerf.cls).filter(cls
>= 0).longAvg();
browser_app_web_vitals_lcp_avg =
from(BrowserAppWebVitalsPerf.lcpTime).filter(lcpTime >= 0).longAvg();
browser_app_web_interaction_inp_percentile =
from(BrowserAppWebInteractionPerf.inpTime).filter(inpTime >= 0).percentile2(10);
diff --git
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json
index c25500e6a5..ed25669d5e 100644
---
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json
+++
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json
@@ -741,7 +741,7 @@
"i": "12",
"type": "Widget",
"expressions": [
- "browser_app_web_vitals_cls_avg"
+ "browser_app_web_vitals_cls_avg / 1000"
],
"graph": {
"type": "Line",
@@ -752,7 +752,7 @@
"showYAxis": true
},
"widget": {
- "title": "Web Vitals Cumulative Layout Shift Latency(ms)"
+ "title": "Web Vitals Cumulative Layout Shift Score"
},
"associate": [
{
diff --git a/test/e2e-v2/cases/browser/browser-cases.yaml
b/test/e2e-v2/cases/browser/browser-cases.yaml
index 403e1ced04..6a6291917d 100644
--- a/test/e2e-v2/cases/browser/browser-cases.yaml
+++ b/test/e2e-v2/cases/browser/browser-cases.yaml
@@ -70,6 +70,10 @@ cases:
query: |
swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql
metrics exec \
--expression=browser_app_page_load_page_avg --service-id
dGVzdC11aQ==.1 --endpoint-name index.html
+ - expected: expected/metrics-has-value.yml
+ query: |
+ swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql
metrics exec \
+ --expression=browser_app_web_vitals_cls_avg --service-id
dGVzdC11aQ==.1 --endpoint-name index.html
- expected: expected/metrics-has-value.yml
query: |
swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql
metrics exec \
@@ -84,4 +88,4 @@ cases:
--expression=browser_app_page_load_page_percentile --service-id
dGVzdC11aQ==.1 --endpoint-name index.html
# dependency service
- expected: expected/dependency.yml
- query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql dependency service
--service-id dGVzdC11aTxicm93c2VyPg==.1
\ No newline at end of file
+ query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql dependency service
--service-name test-ui
\ No newline at end of file
diff --git a/test/e2e-v2/cases/browser/docker/Dockerfile.test-ui
b/test/e2e-v2/cases/browser/docker/Dockerfile.test-ui
index da43d5dae8..57a7e5c424 100644
--- a/test/e2e-v2/cases/browser/docker/Dockerfile.test-ui
+++ b/test/e2e-v2/cases/browser/docker/Dockerfile.test-ui
@@ -23,6 +23,7 @@ ARG
CLIENT_JS_CODE_URL=https://github.com/apache/skywalking-client-js/archive/${
WORKDIR /skywalking-client-js
ADD ${CLIENT_JS_CODE_URL} .
RUN tar -xf ${CLIENT_JS_CODE} --strip 1 && rm ${CLIENT_JS_CODE}
+ENV NPM_TOKEN=""
RUN npm run rebuild \
&& npm link
diff --git a/test/e2e-v2/cases/browser/expected/dependency.yml
b/test/e2e-v2/cases/browser/expected/dependency.yml
index a3a791efc7..93ab0b700f 100644
--- a/test/e2e-v2/cases/browser/expected/dependency.yml
+++ b/test/e2e-v2/cases/browser/expected/dependency.yml
@@ -22,22 +22,22 @@ nodes:
isreal: true
layers:
- GENERAL
-- id: {{ b64enc "test-ui<browser>"}}.1
- name: test-ui<browser>
+- id: {{ b64enc "test-ui"}}.1
+ name: test-ui
type: null
isreal: true
layers:
- - UNDEFINED
+ - BROWSER
{{- end }}
calls:
{{- contains .calls }}
-- source: {{ b64enc "test-ui<browser>"}}.1
+- source: {{ b64enc "test-ui"}}.1
sourcecomponents:
- ajax
target: {{ b64enc "provider-py"}}.1
targetcomponents:
- Python
- id: {{ b64enc "test-ui<browser>"}}.1-{{ b64enc "provider-py"}}.1
+ id: {{ b64enc "test-ui"}}.1-{{ b64enc "provider-py"}}.1
detectpoints:
- CLIENT
- SERVER
diff --git
a/test/e2e-v2/cases/browser/expected/metrics-has-value-percentile.yml
b/test/e2e-v2/cases/browser/expected/metrics-has-value-percentile.yml
index 69e12a134e..469e8ed4a9 100644
--- a/test/e2e-v2/cases/browser/expected/metrics-has-value-percentile.yml
+++ b/test/e2e-v2/cases/browser/expected/metrics-has-value-percentile.yml
@@ -17,65 +17,22 @@ debuggingtrace: null
type: TIME_SERIES_VALUES
results:
{{- contains .results }}
-- metric:
- labels:
- - key: p
- value: "50"
- values:
- {{- contains .values }}
- - id: {{ notEmpty .id }}
- value: {{ .value }}
- owner: null
- traceid: null
- - id: {{ notEmpty .id }}
- owner: null
- value: null
- traceid: null
- {{- end}}
-- metric:
- labels:
- - key: p
- value: "75"
- values:
- {{- contains .values }}
- - id: {{ notEmpty .id }}
- value: {{ .value }}
- owner: null
- traceid: null
- - id: {{ notEmpty .id }}
- owner: null
- value: null
- traceid: null
- {{- end}}
-- metric:
- labels:
- - key: p
- value: "90"
- values:
- {{- contains .values }}
- - id: {{ notEmpty .id }}
- value: {{ .value }}
- owner: null
- traceid: null
- - id: {{ notEmpty .id }}
- owner: null
- value: null
- traceid: null
- {{- end}}
-- metric:
- labels:
- - key: p
- value: "99"
- values:
- {{- contains .values }}
- - id: {{ notEmpty .id }}
- value: {{ .value }}
- owner: null
- traceid: null
- - id: {{ notEmpty .id }}
- value: null
- owner: null
- traceid: null
- {{- end}}
+ - metric:
+ labels:
+ {{- contains .metric.labels }}
+ - key: p
+ value: {{ .value }}
+ {{- end}}
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ notEmpty .value }}
+ owner: null
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ owner: null
+ traceid: null
+ {{- end}}
{{- end}}
error: null
diff --git a/test/e2e-v2/cases/browser/expected/metrics-has-value.yml
b/test/e2e-v2/cases/browser/expected/metrics-has-value.yml
index 37b19de246..cae6688aec 100644
--- a/test/e2e-v2/cases/browser/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/browser/expected/metrics-has-value.yml
@@ -22,7 +22,7 @@ results:
values:
{{- contains .values }}
- id: {{ notEmpty .id }}
- value: {{ .value }}
+ value: {{ notEmpty .value }}
owner: null
traceid: null
- id: {{ notEmpty .id }}
diff --git a/test/e2e-v2/cases/browser/expected/trace-detail.yml
b/test/e2e-v2/cases/browser/expected/trace-detail.yml
index eab62c70f3..2350d844a4 100644
--- a/test/e2e-v2/cases/browser/expected/trace-detail.yml
+++ b/test/e2e-v2/cases/browser/expected/trace-detail.yml
@@ -21,7 +21,7 @@ spans:
spanid: 0
parentspanid: -1
refs: []
- servicecode: test-ui<browser>
+ servicecode: test-ui
serviceinstancename: "v1.0.0"
starttime: {{ gt .starttime 0 }}
endtime: {{ gt .endtime 0 }}
diff --git a/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml
b/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml
index fee293ca30..f3c263b25e 100644
--- a/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml
+++ b/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml
@@ -28,7 +28,7 @@ traces:
spanid: 0
parentspanid: -1
refs: []
- servicecode: test-ui<browser>
+ servicecode: test-ui
serviceinstancename: "v1.0.0"
starttime: {{ gt .starttime 0 }}
endtime: {{ gt .endtime 0 }}
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env
index 343737522f..3fa61bc3d1 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/script/env
@@ -19,7 +19,7 @@
SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
SW_AGENT_NODEJS_COMMIT=4f9a91dad3dfd8cfe5ba8f7bd06b39e11eb5e65e
SW_AGENT_GO_COMMIT=afa75a3cc8c31f142102443af6164b825d63d8fc
SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
-SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
+SW_AGENT_CLIENT_JS_COMMIT=f08776d909eb1d9bc79c600e493030651b97e491
SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
SW_KUBERNETES_COMMIT_SHA=6fe5e6f0d3b7686c6be0457733e825ee68cb9b35
SW_ROVER_COMMIT=79292fe07f17f98f486e0c4471213e1961fb2d1d