From 333157d0c5a875d09fb8091999caffc0bd0cc17f Mon Sep 17 00:00:00 2001 From: helen_yrofeeva Date: Thu, 5 Mar 2026 10:47:26 +0300 Subject: [PATCH 1/4] EPMHLM-503 pro release version --- .java-version | 1 + build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .java-version diff --git a/.java-version b/.java-version new file mode 100644 index 0000000..98d9bcb --- /dev/null +++ b/.java-version @@ -0,0 +1 @@ +17 diff --git a/build.gradle b/build.gradle index 3b3f3eb..0acefd3 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { } group 'com.epam.healenium' -version '3.5.0' +version '3.5.1' repositories { From 63ad86c956cd52cc41af2f307e90d82285b89072 Mon Sep 17 00:00:00 2001 From: helen_yrofeeva Date: Fri, 6 Mar 2026 10:28:53 +0300 Subject: [PATCH 2/4] EPMHLM-498 docker file for remote debug --- Dockerfile_debug | 21 +++++++++++++++++++++ run.sh | 17 +++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 Dockerfile_debug create mode 100644 run.sh diff --git a/Dockerfile_debug b/Dockerfile_debug new file mode 100644 index 0000000..a903974 --- /dev/null +++ b/Dockerfile_debug @@ -0,0 +1,21 @@ +FROM eclipse-temurin:23 +COPY /build/libs/healenium-backend-*.jar /healenium-backend.jar +CMD java -jar /healenium-backend.jar + + +LABEL maintainer="healenium" + +ENV JAR=healenium-backend.jar +ENV EXECUTABLE=run.sh + +WORKDIR / + +COPY /build/libs/healenium-backend-*.jar /${JAR} +COPY run.sh /${EXECUTABLE} + +RUN chmod +x /${EXECUTABLE} + +EXPOSE 7878 +EXPOSE 5005 + +CMD /${EXECUTABLE} \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..e20bad2 --- /dev/null +++ b/run.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +DEFAULT_JAVA_OPTIONS="-XX:+UseG1GC -XX:MaxRAMPercentage=75" +DEBUG_OPTIONS="" + +if [ -n "${JAVA_DEBUG_ENABLE:-}" ] || [ -n "${JAVA_DEBUG:-}" ]; then + debug_port="${JAVA_DEBUG_PORT:-5005}" + DEBUG_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:${debug_port}" +fi + +echo -e "run.sh configuration:" +echo -e "\tDEFAULT_JAVA_OPTIONS: ${DEFAULT_JAVA_OPTIONS:-}" +echo -e "\tJAVA_OPTIONS: ${JAVA_OPTIONS:-}" +echo -e "\tDEBUG_OPTIONS: ${DEBUG_OPTIONS:-}" + +java $DEFAULT_JAVA_OPTIONS $JAVA_OPTIONS $DEBUG_OPTIONS -jar /$JAR + From 991cb6d4ff494cf6e910286fbf62a9a477962de4 Mon Sep 17 00:00:00 2001 From: helen_yrofeeva Date: Mon, 9 Mar 2026 17:38:11 +0300 Subject: [PATCH 3/4] [EPMHLM-498] update report data endpoint output --- .../service/impl/ReportServiceImpl.java | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java b/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java index 2be45f5..b747349 100644 --- a/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java @@ -369,16 +369,25 @@ private ReportRecord createReportRecord(RecordWrapper.Record record) { } private void setDeclaringClass(ReportRecord reportRecord, RecordWrapper.Record record) { - String className = getClassNameFromSelector(record); + String classNameFromSelector = getClassNameFromSelector(record); - if ("HealeniumFindElementPostRequest".equals(className)) { + if ("HealeniumFindElementPostRequest".equals(classNameFromSelector)) { reportRecord.setDeclaringClass(record.getFailedLocator().getValue()); + return; } - else if (className != null && !className.trim().isEmpty()) { - reportRecord.setDeclaringClass(className); - } else { - setDeclaringClassFromRecord(reportRecord, record); + + String classNameFromRecord = getDeclaringClassFromRecord(record); + if (org.springframework.util.StringUtils.hasText(classNameFromRecord)) { + reportRecord.setDeclaringClass(classNameFromRecord); + return; } + + if (classNameFromSelector != null && !classNameFromSelector.trim().isEmpty()) { + reportRecord.setDeclaringClass(classNameFromSelector); + return; + } + + reportRecord.setDeclaringClass("Not Set"); } private String getClassNameFromSelector(RecordWrapper.Record record) { @@ -389,18 +398,21 @@ private String getClassNameFromSelector(RecordWrapper.Record record) { .orElse(null); } - private void setDeclaringClassFromRecord(ReportRecord reportRecord, RecordWrapper.Record record) { + private static final List PW_FILE_ENDINGS = List.of(".js",".ts",".cs",".py"); + + private String getDeclaringClassFromRecord(RecordWrapper.Record record) { String className = record.getClassName(); - if (className != null) { + if (className == null) { + return ""; + } + boolean hasPlaywrightFileEnding = PW_FILE_ENDINGS.stream().anyMatch(className::endsWith); + if (!hasPlaywrightFileEnding){ String[] path = className.split("\\."); if (path.length > 0) { - reportRecord.setDeclaringClass(path[path.length - 1]); - } else { - reportRecord.setDeclaringClass(className); + return path[path.length - 1]; } - } else { - reportRecord.setDeclaringClass("Not Set"); } + return className; } private void setCommonFields(ReportRecord reportRecord, RecordWrapper.Record record) { From 9c37ad7c30e70cdc8d3aef2182a1605549408d22 Mon Sep 17 00:00:00 2001 From: helen_yrofeeva Date: Wed, 11 Mar 2026 15:36:55 +0300 Subject: [PATCH 4/4] [EPMHLM-498] don't replace report record class_name if selector class is not HealeniumFindElementPostRequest --- .../service/impl/ReportServiceImpl.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java b/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java index b747349..0d44929 100644 --- a/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/epam/healenium/service/impl/ReportServiceImpl.java @@ -377,17 +377,7 @@ private void setDeclaringClass(ReportRecord reportRecord, RecordWrapper.Record r } String classNameFromRecord = getDeclaringClassFromRecord(record); - if (org.springframework.util.StringUtils.hasText(classNameFromRecord)) { - reportRecord.setDeclaringClass(classNameFromRecord); - return; - } - - if (classNameFromSelector != null && !classNameFromSelector.trim().isEmpty()) { - reportRecord.setDeclaringClass(classNameFromSelector); - return; - } - - reportRecord.setDeclaringClass("Not Set"); + reportRecord.setDeclaringClass(classNameFromRecord); } private String getClassNameFromSelector(RecordWrapper.Record record) { @@ -398,19 +388,10 @@ private String getClassNameFromSelector(RecordWrapper.Record record) { .orElse(null); } - private static final List PW_FILE_ENDINGS = List.of(".js",".ts",".cs",".py"); - private String getDeclaringClassFromRecord(RecordWrapper.Record record) { String className = record.getClassName(); if (className == null) { - return ""; - } - boolean hasPlaywrightFileEnding = PW_FILE_ENDINGS.stream().anyMatch(className::endsWith); - if (!hasPlaywrightFileEnding){ - String[] path = className.split("\\."); - if (path.length > 0) { - return path[path.length - 1]; - } + return "Not Set"; } return className; }