From 1487d99eb797b4c655ae10fc6f4e46c47eb85054 Mon Sep 17 00:00:00 2001 From: NikolayAvramov Date: Mon, 18 Nov 2024 14:59:01 +0200 Subject: [PATCH 1/4] add DateTime parser format --- .../bellatrix/core/utilities/parsing/GenericDateTimeParser.java | 1 + 1 file changed, 1 insertion(+) diff --git a/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/parsing/GenericDateTimeParser.java b/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/parsing/GenericDateTimeParser.java index 532731f7..aec6502f 100644 --- a/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/parsing/GenericDateTimeParser.java +++ b/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/parsing/GenericDateTimeParser.java @@ -82,6 +82,7 @@ public static void prioritizePattern(String pattern) { FORMATTERS.add(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX")); FORMATTERS.add(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")); FORMATTERS.add(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")); + FORMATTERS.add(DateTimeFormatter.ofPattern("dd.MM.yyyy, HH:mm")); } public static LocalDateTime parse(String data) { From 3c64a18981367a0c148814f1e5fc6232a46790c1 Mon Sep 17 00:00:00 2001 From: NikolayAvramov Date: Thu, 21 Nov 2024 15:25:55 +0200 Subject: [PATCH 2/4] fix grid working with models --- .../web/components/advanced/grid/Grid.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/bellatrix.web/src/main/java/solutions/bellatrix/web/components/advanced/grid/Grid.java b/bellatrix.web/src/main/java/solutions/bellatrix/web/components/advanced/grid/Grid.java index a58e93ce..bb0efada 100644 --- a/bellatrix.web/src/main/java/solutions/bellatrix/web/components/advanced/grid/Grid.java +++ b/bellatrix.web/src/main/java/solutions/bellatrix/web/components/advanced/grid/Grid.java @@ -23,6 +23,7 @@ import solutions.bellatrix.web.findstrategies.XPathFindStrategy; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; import java.util.function.Consumer; @@ -284,7 +285,6 @@ public void assertTable(Class clazz, List e } } - @SneakyThrows @SuppressWarnings({"unchecked"}) public void assertTable(Class clazz, List expectedEntities) { scrollToVisible(); @@ -308,8 +308,13 @@ public void assertTable(Class clazz, List e if (!clazz.equals(Object.class)) { entity = castRow(clazz, i, propsNotToCompare); } else { - Method method = this.getClass().getMethod("castRow", int.class, List.class); - entity = (TRowObject)method.invoke(this, i, Arrays.stream(propsNotToCompare).toList()); + Method method = null; + try { + method = this.getClass().getMethod("castRow", int.class, List.class); + entity = (TRowObject)method.invoke(this, i, Arrays.stream(propsNotToCompare).toList()); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } } EntitiesAsserter.areEqual(expectedEntities.get(i), entity, propsNotToCompare); } @@ -353,10 +358,10 @@ public TRowObject castRow(Class clazz, int rowIndex, St } var dto = InstanceFactory.create(clazz); - var fields = clazz.getFields(); + var fields = clazz.getDeclaredFields(); for (var field : fields) { var fieldType = field.getType(); - + field.setAccessible(true); var headerInfo = getHeaderNamesService().getHeaderInfoByField(field); if (Arrays.stream(fieldsToSkip).anyMatch(f -> f.equals(headerInfo.getHeaderName()))) continue; @@ -531,11 +536,21 @@ public Gri public Grid setModelColumns(Class clazz) { controlColumnDataCollection = new ArrayList<>(); - for (var field : clazz.getFields()) { + List declaredFields = List.of(clazz.getDeclaredFields()); + for (var field : declaredFields) { + field.setAccessible(true); var headerName = field.isAnnotationPresent(TableHeader.class) ? field.getAnnotation(TableHeader.class).name() : field.getName(); controlColumnDataCollection.add(new ControlColumnData(headerName)); } return this; } + + private static String getFieldNameFromGetter(String getterName) { + if (getterName.startsWith("get")) { + String fieldName = getterName.substring(3); // Remove "get" + return Character.toLowerCase(fieldName.charAt(0)) + fieldName.substring(1); // Lowercase the first character + } + return getterName; + } } From 66b419b3925d101aa244f37aef29e5803c7b2dab Mon Sep 17 00:00:00 2001 From: NikolayAvramov Date: Fri, 29 Nov 2024 16:22:03 +0200 Subject: [PATCH 3/4] update --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c89da0ea..5a667c20 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,8 @@ # macOS resource fork *.DS_Store -.AppleDouble .LSOverride +.AppleDouble .*.icloud # Compiled class file From 0750880ae997b6343d20acf463cc5a907ee8e7f7 Mon Sep 17 00:00:00 2001 From: NikolayAvramov Date: Wed, 4 Dec 2024 14:27:38 +0200 Subject: [PATCH 4/4] add method for Browser requests retrieval --- .../main/java/solutions/bellatrix/core/utilities/Wait.java | 1 + .../java/solutions/bellatrix/web/services/BrowserService.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/Wait.java b/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/Wait.java index 53120c2b..5d41e5aa 100644 --- a/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/Wait.java +++ b/bellatrix.core/src/main/java/solutions/bellatrix/core/utilities/Wait.java @@ -74,6 +74,7 @@ public static void retry(Runnable action, Duration sleepInterval, Duration timeo public static void forMilliseconds(long millis) { try { + Log.info("Waiting for %s milliseconds".formatted(millis)); Thread.sleep(millis); } catch (InterruptedException e) { throw new RuntimeException(e); diff --git a/bellatrix.web/src/main/java/solutions/bellatrix/web/services/BrowserService.java b/bellatrix.web/src/main/java/solutions/bellatrix/web/services/BrowserService.java index 608eb861..12e1bd7f 100644 --- a/bellatrix.web/src/main/java/solutions/bellatrix/web/services/BrowserService.java +++ b/bellatrix.web/src/main/java/solutions/bellatrix/web/services/BrowserService.java @@ -209,6 +209,10 @@ public List getSevereLogEntries() { return logs; } + public List getRequestEntries(String partialUrl) { + return (List)((JavascriptExecutor)getWrappedDriver()).executeScript(String.format("return window.performance.getEntriesByType('resource').filter(x => x.name.indexOf('%s') >= 0).map(y => y.name);", partialUrl)); + } + public void waitForAjax() { long ajaxTimeout = ConfigurationService.get(WebSettings.class).getTimeoutSettings().getWaitForAjaxTimeout(); long sleepInterval = ConfigurationService.get(WebSettings.class).getTimeoutSettings().getSleepInterval();