Skip to content

[Feature] Log localized messages from Aquality Services to Allure report #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,7 @@ hs_err_pid*
.idea
*.iws
*.iml
*.ipr
*.ipr

# Allure #
.allure
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package aquality.selenium.template.cucumber.hooks;

import aquality.selenium.browser.AqualityServices;
import aquality.selenium.template.cucumber.objectfactory.CustomBrowserModule;
import io.cucumber.java.Before;

public class AqualityServicesHooks {

@Before(order = 0)
public void reinitializeAqualityServices() {
AqualityServices.initInjector(new CustomBrowserModule(AqualityServices::getBrowser));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package aquality.selenium.template.cucumber.objectfactory;

import aquality.selenium.core.configurations.ILoggerConfiguration;
import aquality.selenium.core.localization.ILocalizationManager;
import aquality.selenium.core.localization.LocalizedLogger;
import aquality.selenium.core.logging.Logger;
import com.google.inject.Inject;
import io.qameta.allure.Allure;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* Established adding aquality localized messages to allure report.
*/
public class AllureBasedLocalizedLogger extends LocalizedLogger {
private final ILocalizationManager localizationManager;

@Inject
public AllureBasedLocalizedLogger(ILocalizationManager localizationManager, Logger logger, ILoggerConfiguration loggerConfiguration) {
super(localizationManager, logger, loggerConfiguration);
this.localizationManager = localizationManager;
}

private String localizeMessage(String messageKey, Object... args) {
return localizationManager.getLocalizedMessage(messageKey, args);
}

@Override
public void infoElementAction(String elementType, String elementName, String messageKey, Object... args) {
String message = String.format("%1$s '%2$s' :: %3$s", elementType, elementName, localizeMessage(messageKey, args));
addStepToAllure(message);
super.infoElementAction(elementType, elementName, messageKey, args);
}

@Override
public void info(String messageKey, Object... args) {
String message = localizeMessage(messageKey, args);
addStepToAllure(message);
super.info(messageKey, args);
}

private void addStepToAllure(String message) {
DateFormat formatter = new SimpleDateFormat("HH:mm:ss.SSS");
Allure.step(String.format("%s - %s", formatter.format(new Date()), message));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package aquality.selenium.template.cucumber.objectfactory;

import aquality.selenium.browser.Browser;
import aquality.selenium.browser.BrowserModule;
import aquality.selenium.core.localization.ILocalizedLogger;
import com.google.inject.Provider;

public class CustomBrowserModule extends BrowserModule {
public CustomBrowserModule(Provider<Browser> applicationProvider) {
super(applicationProvider);
}

@Override
public Class<? extends ILocalizedLogger> getLocalizedLoggerImplementation() {
return AllureBasedLocalizedLogger.class;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package aquality.selenium.template.cucumber.objectfactory;

import aquality.selenium.browser.AqualityServices;
import aquality.selenium.browser.BrowserModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
Expand All @@ -15,7 +14,7 @@ public class CustomObjectFactory implements ObjectFactory {

public CustomObjectFactory() {
this.injector = Guice.createInjector(Stage.PRODUCTION, CucumberModules.createScenarioModule(),
new ServiceModule(), new BrowserModule(AqualityServices::getBrowser));
new ServiceModule(), new CustomBrowserModule(AqualityServices::getBrowser));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
status = info
rootLogger.level = debug
property.filepath = ./target/log/
property.filename = log.log
appenders = file, console

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern =%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n
appender.console.filter.threshold.type = ThresholdFilter
appender.console.filter.threshold.level = info

appender.file.type = RollingFile
appender.file.name = File
appender.file.fileName = ${filepath}${filename}
appender.file.filePattern = ${filepath}${filename}.%i
appender.file.layout.type = PatternLayout
appender.file.layout.pattern =%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n
appender.file.policies.type = Policies
appender.file.policies.size.type = SizeBasedTriggeringPolicy
appender.file.policies.size.size=10MB
appender.file.filter.threshold.type = ThresholdFilter
appender.file.filter.threshold.level = debug

rootLogger.appenderRefs = file, console
rootLogger.appenderRef.console.ref = STDOUT
rootLogger.appenderRef.file.ref = File