Skip to content

Commit

Permalink
introducing SessionHook
Browse files Browse the repository at this point in the history
  • Loading branch information
giulong committed Dec 25, 2023
1 parent 56b0b4f commit d433e4a
Show file tree
Hide file tree
Showing 69 changed files with 389 additions and 252 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.it_testbook;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.utils.FileUtils;
import io.github.giulong.spectrum.utils.YamlUtils;
import io.github.giulong.spectrum.utils.testbook.reporters.FileTestBookReporter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.model.Media;
import io.github.giulong.spectrum.interfaces.Shared;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.TestData;
import io.github.giulong.spectrum.utils.FileUtils;
import io.github.giulong.spectrum.utils.events.EventsDispatcher;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
package io.github.giulong.spectrum;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.pojos.SpectrumProperties;
import io.github.giulong.spectrum.utils.ExtentReporter;
import io.github.giulong.spectrum.utils.FileUtils;
import io.github.giulong.spectrum.utils.FreeMarkerWrapper;
import io.github.giulong.spectrum.utils.YamlUtils;
import io.github.giulong.spectrum.utils.events.EventsDispatcher;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.junit.platform.launcher.LauncherSession;
import org.junit.platform.launcher.LauncherSessionListener;
import org.slf4j.bridge.SLF4JBridgeHandler;

import java.util.*;

import static io.github.giulong.spectrum.utils.events.EventsDispatcher.*;

@Slf4j
public class SpectrumSessionListener implements LauncherSessionListener {

Expand All @@ -32,12 +29,8 @@ public class SpectrumSessionListener implements LauncherSessionListener {
private final FileUtils fileUtils = FileUtils.getInstance();
private final FreeMarkerWrapper freeMarkerWrapper = FreeMarkerWrapper.getInstance();
private final ExtentReporter extentReporter = ExtentReporter.getInstance();

@Getter
protected static Configuration configuration;

@Getter
protected static EventsDispatcher eventsDispatcher;
private final EventsDispatcher eventsDispatcher = EventsDispatcher.getInstance();
private final Configuration configuration = Configuration.getInstance();

@Override
public void launcherSessionOpened(final LauncherSession session) {
Expand All @@ -47,25 +40,18 @@ public void launcherSessionOpened(final LauncherSession session) {
log.info(String.format(Objects.requireNonNull(fileUtils.read("/banner.txt")), buildVersionLine()));

parseConfiguration();
configuration.getTestBook().parse();

final Configuration.Extent extent = configuration.getExtent();

extentReporter
.setupFrom(extent)
.cleanupOldReports(extent);

initEventsDispatcher();

freeMarkerWrapper.setupFrom(configuration.getFreeMarker());
eventsDispatcher.fire(BEFORE, Set.of(SUITE));
configuration.sessionOpened();
extentReporter.sessionOpenedFrom(configuration);
freeMarkerWrapper.sessionOpenedFrom(configuration);
eventsDispatcher.sessionOpenedFrom(configuration);
}

@Override
public void launcherSessionClosed(final LauncherSession session) {
configuration.getTestBook().flush();
extentReporter.flush();
eventsDispatcher.fire(AFTER, Set.of(SUITE));
configuration.sessionClosed();
extentReporter.sessionClosed();
eventsDispatcher.sessionClosed();
}

protected String buildVersionLine() {
Expand All @@ -83,7 +69,7 @@ protected void parseConfiguration() {
.toList();

profileConfigurations.forEach(this::parseVars);
configuration = yamlUtils.readInternal(DEFAULT_CONFIGURATION_YAML, Configuration.class);
yamlUtils.updateWithInternalFile(configuration, DEFAULT_CONFIGURATION_YAML);

if (isUnix()) {
yamlUtils.updateWithInternalFile(configuration, DEFAULT_CONFIGURATION_UNIX_YAML);
Expand Down Expand Up @@ -115,13 +101,6 @@ protected void parseVars(final String profileConfiguration) {
VARS.putAll(Optional.ofNullable(yamlUtils.readNode(VARS_NODE, profileConfiguration, Map.class)).orElse(new HashMap<>()));
}

protected void initEventsDispatcher() {
eventsDispatcher = EventsDispatcher
.builder()
.consumers(configuration.getEventsConsumers())
.build();
}

protected boolean isUnix() {
return !System.getProperty("os.name").toLowerCase().contains("win");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import io.github.giulong.spectrum.extensions.resolvers.*;
import io.github.giulong.spectrum.extensions.watchers.EventsWatcher;
import io.github.giulong.spectrum.interfaces.Endpoint;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.*;
import io.github.giulong.spectrum.utils.ReflectionUtils;
import io.github.giulong.spectrum.utils.events.EventsDispatcher;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.giulong.spectrum.browsers;

import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.utils.webdrivers.Environment;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.browsers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.service.DriverService;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.browsers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import org.openqa.selenium.chromium.ChromiumOptions;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.service.DriverService;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.browsers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import org.openqa.selenium.edge.EdgeDriverService;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.remote.service.DriverService;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.browsers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.GeckoDriverService;
import org.openqa.selenium.remote.service.DriverService;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.SpectrumSessionListener;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
Expand All @@ -22,7 +21,7 @@ public Configuration resolveParameter(final ParameterContext arg0, final Extensi
return rootStore.getOrComputeIfAbsent(CONFIGURATION, e -> {
log.debug("Resolving {}", CONFIGURATION);

final Configuration configuration = SpectrumSessionListener.getConfiguration();
final Configuration configuration = Configuration.getInstance();
rootStore.put(CONFIGURATION, configuration);
return configuration;
}, Configuration.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.utils.YamlUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.DownloadWait;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.SpectrumSessionListener;
import io.github.giulong.spectrum.utils.events.EventsDispatcher;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand All @@ -22,7 +21,7 @@ public EventsDispatcher resolveParameter(final ParameterContext arg0, final Exte
return rootStore.getOrComputeIfAbsent(EVENTS_DISPATCHER, e -> {
log.debug("Resolving {}", EVENTS_DISPATCHER);

final EventsDispatcher eventsDispatcher = SpectrumSessionListener.getEventsDispatcher();
final EventsDispatcher eventsDispatcher = EventsDispatcher.getInstance();
rootStore.put(EVENTS_DISPATCHER, eventsDispatcher);
return eventsDispatcher;
}, EventsDispatcher.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.giulong.spectrum.extensions.resolvers;

import com.aventstack.extentreports.ExtentTest;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.TestData;
import io.github.giulong.spectrum.utils.ExtentReporter;
import io.github.giulong.spectrum.utils.video.Video;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.ImplicitWait;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.PageLoadWait;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.utils.video.Video;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.TestData;
import io.github.giulong.spectrum.utils.video.ScreenshotWatcher;
import io.github.giulong.spectrum.utils.video.Video;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.ScriptWait;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.TestData;
import io.github.giulong.spectrum.utils.FileUtils;
import lombok.SneakyThrows;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.github.giulong.spectrum.extensions.resolvers;

import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.TestData;
import io.github.giulong.spectrum.utils.video.Video;
import io.github.giulong.spectrum.utils.video.VideoEncoder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.aventstack.extentreports.ExtentTest;
import io.github.giulong.spectrum.internals.EventsListener;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.types.TestData;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.giulong.spectrum.extensions.watchers;

import io.github.giulong.spectrum.SpectrumSessionListener;
import io.github.giulong.spectrum.enums.Result;
import io.github.giulong.spectrum.utils.events.EventsDispatcher;
import org.junit.jupiter.api.extension.*;

import java.util.Optional;
Expand All @@ -12,6 +12,8 @@

public class EventsWatcher implements TestWatcher, BeforeAllCallback, BeforeEachCallback, AfterAllCallback {

private final EventsDispatcher eventsDispatcher = EventsDispatcher.getInstance();

@Override
public void beforeAll(final ExtensionContext context) {
notifyClass(context, BEFORE, null, Set.of(CLASS));
Expand Down Expand Up @@ -50,13 +52,13 @@ public void testFailed(final ExtensionContext context, final Throwable exception
public void notifyClass(final ExtensionContext context, final String reason, final Result result, final Set<String> tags) {
final String className = context.getDisplayName();

SpectrumSessionListener.getEventsDispatcher().fire(className, null, reason, result, tags, context);
eventsDispatcher.fire(className, null, reason, result, tags, context);
}

public void notifyTest(final ExtensionContext context, final String reason, final Result result, final Set<String> tags) {
final String className = context.getParent().orElse(context.getRoot()).getDisplayName();
final String testName = context.getDisplayName();

SpectrumSessionListener.getEventsDispatcher().fire(className, testName, reason, result, tags, context);
eventsDispatcher.fire(className, testName, reason, result, tags, context);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package io.github.giulong.spectrum.interfaces;

import io.github.giulong.spectrum.utils.Configuration;
import lombok.Generated;

public interface SessionHook {

@Generated
default void sessionOpened() {
}

@Generated
default void sessionOpenedFrom(Configuration configuration) {
}

@Generated
default void sessionClosed() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.aventstack.extentreports.ExtentTest;
import io.github.giulong.spectrum.enums.Frame;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.pojos.Configuration.WebDriver.Events;
import io.github.giulong.spectrum.utils.Configuration;
import io.github.giulong.spectrum.utils.Configuration.WebDriver.Events;
import io.github.giulong.spectrum.types.TestData;
import io.github.giulong.spectrum.utils.video.Video;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.github.victools.jsonschema.module.jackson.JacksonModule;
import com.github.victools.jsonschema.module.jackson.JsonSubTypesResolver;
import io.github.giulong.spectrum.interfaces.JsonSchemaTypes;
import io.github.giulong.spectrum.pojos.Configuration;
import io.github.giulong.spectrum.utils.Configuration;
import lombok.SneakyThrows;

import java.net.URI;
Expand Down
Loading

0 comments on commit d433e4a

Please sign in to comment.