Skip to content

Commit 3a0a47f

Browse files
authored
[Feature] Log localized messages from Aquality Services to Allure report (#22)
* [Feature] Log localized messages from Aquality Services to Allure report * Add time to message
1 parent 79b992b commit 3a0a47f

File tree

6 files changed

+111
-3
lines changed

6 files changed

+111
-3
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,7 @@ hs_err_pid*
2626
.idea
2727
*.iws
2828
*.iml
29-
*.ipr
29+
*.ipr
30+
31+
# Allure #
32+
.allure
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package aquality.selenium.template.cucumber.hooks;
2+
3+
import aquality.selenium.browser.AqualityServices;
4+
import aquality.selenium.template.cucumber.objectfactory.CustomBrowserModule;
5+
import io.cucumber.java.Before;
6+
7+
public class AqualityServicesHooks {
8+
9+
@Before(order = 0)
10+
public void reinitializeAqualityServices() {
11+
AqualityServices.initInjector(new CustomBrowserModule(AqualityServices::getBrowser));
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package aquality.selenium.template.cucumber.objectfactory;
2+
3+
import aquality.selenium.core.configurations.ILoggerConfiguration;
4+
import aquality.selenium.core.localization.ILocalizationManager;
5+
import aquality.selenium.core.localization.LocalizedLogger;
6+
import aquality.selenium.core.logging.Logger;
7+
import com.google.inject.Inject;
8+
import io.qameta.allure.Allure;
9+
10+
import java.text.DateFormat;
11+
import java.text.SimpleDateFormat;
12+
import java.util.Date;
13+
14+
/**
15+
* Established adding aquality localized messages to allure report.
16+
*/
17+
public class AllureBasedLocalizedLogger extends LocalizedLogger {
18+
private final ILocalizationManager localizationManager;
19+
20+
@Inject
21+
public AllureBasedLocalizedLogger(ILocalizationManager localizationManager, Logger logger, ILoggerConfiguration loggerConfiguration) {
22+
super(localizationManager, logger, loggerConfiguration);
23+
this.localizationManager = localizationManager;
24+
}
25+
26+
private String localizeMessage(String messageKey, Object... args) {
27+
return localizationManager.getLocalizedMessage(messageKey, args);
28+
}
29+
30+
@Override
31+
public void infoElementAction(String elementType, String elementName, String messageKey, Object... args) {
32+
String message = String.format("%1$s '%2$s' :: %3$s", elementType, elementName, localizeMessage(messageKey, args));
33+
addStepToAllure(message);
34+
super.infoElementAction(elementType, elementName, messageKey, args);
35+
}
36+
37+
@Override
38+
public void info(String messageKey, Object... args) {
39+
String message = localizeMessage(messageKey, args);
40+
addStepToAllure(message);
41+
super.info(messageKey, args);
42+
}
43+
44+
private void addStepToAllure(String message) {
45+
DateFormat formatter = new SimpleDateFormat("HH:mm:ss.SSS");
46+
Allure.step(String.format("%s - %s", formatter.format(new Date()), message));
47+
}
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package aquality.selenium.template.cucumber.objectfactory;
2+
3+
import aquality.selenium.browser.Browser;
4+
import aquality.selenium.browser.BrowserModule;
5+
import aquality.selenium.core.localization.ILocalizedLogger;
6+
import com.google.inject.Provider;
7+
8+
public class CustomBrowserModule extends BrowserModule {
9+
public CustomBrowserModule(Provider<Browser> applicationProvider) {
10+
super(applicationProvider);
11+
}
12+
13+
@Override
14+
public Class<? extends ILocalizedLogger> getLocalizedLoggerImplementation() {
15+
return AllureBasedLocalizedLogger.class;
16+
}
17+
}

aquality-selenium-template-cucumber/src/test/java/aquality/selenium/template/cucumber/objectfactory/CustomObjectFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package aquality.selenium.template.cucumber.objectfactory;
22

33
import aquality.selenium.browser.AqualityServices;
4-
import aquality.selenium.browser.BrowserModule;
54
import com.google.inject.Guice;
65
import com.google.inject.Injector;
76
import com.google.inject.Stage;
@@ -15,7 +14,7 @@ public class CustomObjectFactory implements ObjectFactory {
1514

1615
public CustomObjectFactory() {
1716
this.injector = Guice.createInjector(Stage.PRODUCTION, CucumberModules.createScenarioModule(),
18-
new ServiceModule(), new BrowserModule(AqualityServices::getBrowser));
17+
new ServiceModule(), new CustomBrowserModule(AqualityServices::getBrowser));
1918
}
2019

2120
@Override
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
status = info
2+
rootLogger.level = debug
3+
property.filepath = ./target/log/
4+
property.filename = log.log
5+
appenders = file, console
6+
7+
appender.console.type = Console
8+
appender.console.name = STDOUT
9+
appender.console.layout.type = PatternLayout
10+
appender.console.layout.pattern =%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n
11+
appender.console.filter.threshold.type = ThresholdFilter
12+
appender.console.filter.threshold.level = info
13+
14+
appender.file.type = RollingFile
15+
appender.file.name = File
16+
appender.file.fileName = ${filepath}${filename}
17+
appender.file.filePattern = ${filepath}${filename}.%i
18+
appender.file.layout.type = PatternLayout
19+
appender.file.layout.pattern =%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n
20+
appender.file.policies.type = Policies
21+
appender.file.policies.size.type = SizeBasedTriggeringPolicy
22+
appender.file.policies.size.size=10MB
23+
appender.file.filter.threshold.type = ThresholdFilter
24+
appender.file.filter.threshold.level = debug
25+
26+
rootLogger.appenderRefs = file, console
27+
rootLogger.appenderRef.console.ref = STDOUT
28+
rootLogger.appenderRef.file.ref = File

0 commit comments

Comments
 (0)