diff --git a/pom.xml b/pom.xml index 0ed6b076..ae65f372 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ 6.0.2 5.21.0 - 2.20.1 + 2.21.0 8.12.6 4.38.0 2.0.17 @@ -217,7 +217,7 @@ ch.qos.logback logback-classic - 1.5.24 + 1.5.26 org.slf4j @@ -382,7 +382,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.1.0 + 3.2.0 diff --git a/spectrum/pom.xml b/spectrum/pom.xml index 231e93fd..72f7bb0a 100644 --- a/spectrum/pom.xml +++ b/spectrum/pom.xml @@ -373,7 +373,7 @@ central true - published + uploaded diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/SpectrumPage.java b/spectrum/src/main/java/io/github/giulong/spectrum/SpectrumPage.java index 9440ba87..ff0cf19d 100644 --- a/spectrum/src/main/java/io/github/giulong/spectrum/SpectrumPage.java +++ b/spectrum/src/main/java/io/github/giulong/spectrum/SpectrumPage.java @@ -2,7 +2,6 @@ import java.lang.reflect.Field; import java.lang.reflect.Proxy; -import java.time.Duration; import java.util.List; import io.github.giulong.spectrum.interfaces.Endpoint; @@ -17,7 +16,7 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.PageFactory; -import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; @Slf4j @Getter @@ -85,8 +84,8 @@ SpectrumPage init() { log.debug("The endpoint of page '{}' is '{}'", className, endpointValue); Reflections.setField("endpoint", this, endpointValue); - final Duration autoWaitDuration = configuration.getDrivers().getWaits().getAuto().getTimeout(); - PageFactory.initElements(new SpectrumFieldDecorator(new AjaxElementLocatorFactory(driver, (int) autoWaitDuration.toSeconds())), this); + final ElementLocatorFactory locatorFactory = configuration.getDrivers().getLocatorFactory().buildFor(driver); + PageFactory.initElements(new SpectrumFieldDecorator(locatorFactory), this); Reflections .getAnnotatedFields(this, JsWebElement.class) diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/element_locator_factories/AjaxLocatorFactory.java b/spectrum/src/main/java/io/github/giulong/spectrum/element_locator_factories/AjaxLocatorFactory.java new file mode 100644 index 00000000..27f5834f --- /dev/null +++ b/spectrum/src/main/java/io/github/giulong/spectrum/element_locator_factories/AjaxLocatorFactory.java @@ -0,0 +1,31 @@ +package io.github.giulong.spectrum.element_locator_factories; + +import java.time.Duration; + +import com.fasterxml.jackson.annotation.JsonPropertyDescription; + +import io.github.giulong.spectrum.interfaces.JsonSchemaTypes; +import io.github.giulong.spectrum.interfaces.LocatorFactory; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; + +@Slf4j +@Getter +@SuppressWarnings("unused") +public class AjaxLocatorFactory implements LocatorFactory { + + @JsonPropertyDescription("Timeout in seconds") + @JsonSchemaTypes(double.class) + private Duration timeout; + + @Override + public ElementLocatorFactory buildFor(final WebDriver driver) { + log.debug("Configuring AjaxElementLocatorFactory with a timeout of {}", timeout); + return new AjaxElementLocatorFactory(driver, (int) timeout.toSeconds()); + } +} diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/element_locator_factories/DefaultLocatorFactory.java b/spectrum/src/main/java/io/github/giulong/spectrum/element_locator_factories/DefaultLocatorFactory.java new file mode 100644 index 00000000..97377f1e --- /dev/null +++ b/spectrum/src/main/java/io/github/giulong/spectrum/element_locator_factories/DefaultLocatorFactory.java @@ -0,0 +1,19 @@ +package io.github.giulong.spectrum.element_locator_factories; + +import io.github.giulong.spectrum.interfaces.LocatorFactory; + +import lombok.extern.slf4j.Slf4j; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.pagefactory.DefaultElementLocatorFactory; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; + +@Slf4j +public class DefaultLocatorFactory implements LocatorFactory { + + @Override + public ElementLocatorFactory buildFor(final WebDriver driver) { + log.debug("Configuring DefaultElementLocatorFactory"); + return new DefaultElementLocatorFactory(driver); + } +} diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/interfaces/LocatorFactory.java b/spectrum/src/main/java/io/github/giulong/spectrum/interfaces/LocatorFactory.java new file mode 100644 index 00000000..69405f17 --- /dev/null +++ b/spectrum/src/main/java/io/github/giulong/spectrum/interfaces/LocatorFactory.java @@ -0,0 +1,22 @@ +package io.github.giulong.spectrum.interfaces; + +import static com.fasterxml.jackson.annotation.JsonTypeInfo.As.WRAPPER_OBJECT; +import static com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; + +import io.github.giulong.spectrum.element_locator_factories.AjaxLocatorFactory; +import io.github.giulong.spectrum.element_locator_factories.DefaultLocatorFactory; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; + +@JsonTypeInfo(use = NAME, include = WRAPPER_OBJECT) +@JsonSubTypes({ + @JsonSubTypes.Type(value = DefaultLocatorFactory.class, name = "default"), + @JsonSubTypes.Type(value = AjaxLocatorFactory.class, name = "ajax"), +}) +public interface LocatorFactory { + ElementLocatorFactory buildFor(WebDriver driver); +} diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/interpolation/interpolators/Interpolator.java b/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/interpolation/interpolators/Interpolator.java index 5a20ed2f..383289f5 100644 --- a/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/interpolation/interpolators/Interpolator.java +++ b/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/interpolation/interpolators/Interpolator.java @@ -1,5 +1,7 @@ package io.github.giulong.spectrum.internals.jackson.deserializers.interpolation.interpolators; +import static com.fasterxml.jackson.annotation.OptBoolean.TRUE; + import java.util.Optional; import com.fasterxml.jackson.annotation.JacksonInject; @@ -12,7 +14,7 @@ public abstract class Interpolator { @SuppressWarnings("unused") - @JacksonInject("enabledFromClient") + @JacksonInject(value = "enabledFromClient", optional = TRUE) @JsonPropertyDescription("Whether to enable this interpolator. Injected to true by default, so no need to explicitly set it") private boolean enabled; diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/utils/Configuration.java b/spectrum/src/main/java/io/github/giulong/spectrum/utils/Configuration.java index 35ae1c11..de148fdb 100644 --- a/spectrum/src/main/java/io/github/giulong/spectrum/utils/Configuration.java +++ b/spectrum/src/main/java/io/github/giulong/spectrum/utils/Configuration.java @@ -1,5 +1,6 @@ package io.github.giulong.spectrum.utils; +import static com.fasterxml.jackson.annotation.OptBoolean.TRUE; import static lombok.AccessLevel.PRIVATE; import java.io.File; @@ -17,6 +18,7 @@ import io.github.giulong.spectrum.drivers.Driver; import io.github.giulong.spectrum.enums.Frame; import io.github.giulong.spectrum.interfaces.JsonSchemaTypes; +import io.github.giulong.spectrum.interfaces.LocatorFactory; import io.github.giulong.spectrum.internals.jackson.deserializers.interpolation.interpolators.EnvironmentInterpolator; import io.github.giulong.spectrum.internals.jackson.deserializers.interpolation.interpolators.InPlaceInterpolator; import io.github.giulong.spectrum.internals.jackson.deserializers.interpolation.interpolators.PropertiesInterpolator; @@ -160,7 +162,7 @@ public static class Application { public static class Highlight { @JsonIgnore - @JacksonInject("enabledFromClient") + @JacksonInject(value = "enabledFromClient", optional = TRUE) private boolean enabled; @JsonPropertyDescription("Path to the js used to highlight. Relative to the resources folder") @@ -172,7 +174,7 @@ public static class Highlight { public static class VisualRegression { @JsonIgnore - @JacksonInject("enabledFromClient") + @JacksonInject(value = "enabledFromClient", optional = TRUE) private boolean enabled; @JsonPropertyDescription("Whether to fail immediately when the first visual regression is found, rather than running the entire test") @@ -275,6 +277,9 @@ public static class Drivers { @JsonPropertyDescription("Driver's fluent waits") private Waits waits; + @JsonPropertyDescription("An instance of ElementLocatorFactory to be used across Drivers") + private LocatorFactory locatorFactory; + @JsonPropertyDescription("Chrome capabilities. See: https://www.selenium.dev/documentation/webdriver/browsers/chrome/") private Chrome chrome; diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/utils/file_providers/InternalFileProvider.java b/spectrum/src/main/java/io/github/giulong/spectrum/utils/file_providers/InternalFileProvider.java index 69d9c9c9..74b1787d 100644 --- a/spectrum/src/main/java/io/github/giulong/spectrum/utils/file_providers/InternalFileProvider.java +++ b/spectrum/src/main/java/io/github/giulong/spectrum/utils/file_providers/InternalFileProvider.java @@ -19,8 +19,7 @@ public Class getViews() { @Override public InjectableValues getInjectableValues() { - return new InjectableValues.Std() - .addValue("enabledFromClient", false); + return null; } @Override diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/utils/testbook/TestBook.java b/spectrum/src/main/java/io/github/giulong/spectrum/utils/testbook/TestBook.java index b7e8f962..570f1d83 100644 --- a/spectrum/src/main/java/io/github/giulong/spectrum/utils/testbook/TestBook.java +++ b/spectrum/src/main/java/io/github/giulong/spectrum/utils/testbook/TestBook.java @@ -1,5 +1,6 @@ package io.github.giulong.spectrum.utils.testbook; +import static com.fasterxml.jackson.annotation.OptBoolean.TRUE; import static io.github.giulong.spectrum.enums.Result.*; import static java.util.function.Function.identity; import static java.util.stream.Collectors.toMap; @@ -38,7 +39,7 @@ public class TestBook implements SessionHook, Reportable { private final FileUtils fileUtils = FileUtils.getInstance(); @JsonIgnore - @JacksonInject("enabledFromClient") + @JacksonInject(value = "enabledFromClient", optional = TRUE) @SuppressWarnings("unused") private boolean enabled; diff --git a/spectrum/src/main/resources/yaml/configuration.default.yaml b/spectrum/src/main/resources/yaml/configuration.default.yaml index 53045e6b..f7fb2094 100644 --- a/spectrum/src/main/resources/yaml/configuration.default.yaml +++ b/spectrum/src/main/resources/yaml/configuration.default.yaml @@ -119,6 +119,11 @@ drivers: enabled: true # Whether to enable the auto-wait timeout: 30 # Timeout in seconds + # The ElementLocatorFactory to be used across Drivers + locatorFactory: + ajax: + timeout: 30 + # Chrome capabilities. See: https://www.selenium.dev/documentation/webdriver/browsers/chrome/ chrome: biDi: false # Whether to enable the BiDi protocol instead of CDP diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumPageTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumPageTest.java index f54015b7..7e56f32b 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumPageTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumPageTest.java @@ -7,11 +7,11 @@ import java.lang.reflect.Field; import java.lang.reflect.Proxy; -import java.time.Duration; import java.util.List; import java.util.stream.Stream; import io.github.giulong.spectrum.interfaces.JsWebElement; +import io.github.giulong.spectrum.interfaces.LocatorFactory; import io.github.giulong.spectrum.interfaces.Secured; import io.github.giulong.spectrum.internals.page_factory.SpectrumFieldDecorator; import io.github.giulong.spectrum.utils.Configuration; @@ -31,7 +31,7 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.PageFactory; -import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; class SpectrumPageTest { @@ -62,15 +62,6 @@ class SpectrumPageTest { @Mock private Configuration.Drivers drivers; - @Mock - private Configuration.Drivers.Waits waits; - - @Mock - private Configuration.Drivers.Waits.AutoWait auto; - - @Mock - private Duration timeout; - @Mock private Configuration.Application application; @@ -149,23 +140,18 @@ static Stream valuesProvider() { @DisplayName("init should set the endpoint, init the web elements, add the secured web elements, set the js web elements, and return the page instance") void init() { final WebElement proxy = mock(); - final long seconds = 123L; + final LocatorFactory locatorFactory = mock(); + final ElementLocatorFactory elementLocatorFactory = mock(); when(jsWebElementProxyBuilder.buildFor(webElementArgumentCaptor.capture())).thenReturn(proxy); when(JsWebElementListInvocationHandler.builder()).thenReturn(jsWebElementListInvocationHandlerBuilder); when(configuration.getDrivers()).thenReturn(drivers); - when(drivers.getWaits()).thenReturn(waits); - when(waits.getAuto()).thenReturn(auto); - when(auto.getTimeout()).thenReturn(timeout); - when(timeout.toSeconds()).thenReturn(seconds); - - final MockedConstruction factoryMockedConstruction = mockConstruction(AjaxElementLocatorFactory.class, (mock, context) -> { - assertEquals(webDriver, context.arguments().getFirst()); - assertEquals((int) seconds, context.arguments().get(1)); - }); + when(drivers.getLocatorFactory()).thenReturn(locatorFactory); + when(locatorFactory.buildFor(webDriver)).thenReturn(elementLocatorFactory); - final MockedConstruction decoratorMockedConstruction = mockConstruction(SpectrumFieldDecorator.class); + final MockedConstruction decoratorMockedConstruction = mockConstruction( + (mock, context) -> assertEquals(elementLocatorFactory, context.arguments().getFirst())); assertEquals(spectrumPage, spectrumPage.init()); @@ -176,7 +162,6 @@ void init() { assertEquals(proxy, Reflections.getFieldValue("jsWebElement", spectrumPage)); - factoryMockedConstruction.close(); decoratorMockedConstruction.close(); } diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumTestTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumTestTest.java index 2d309b63..b8ded0fd 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumTestTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/SpectrumTestTest.java @@ -5,7 +5,6 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import java.time.Duration; import java.util.List; import com.aventstack.extentreports.ExtentReports; @@ -14,6 +13,7 @@ import io.github.giulong.spectrum.exceptions.TestFailedException; import io.github.giulong.spectrum.interfaces.Endpoint; import io.github.giulong.spectrum.interfaces.JsWebElement; +import io.github.giulong.spectrum.interfaces.LocatorFactory; import io.github.giulong.spectrum.types.DownloadWait; import io.github.giulong.spectrum.types.ImplicitWait; import io.github.giulong.spectrum.types.PageLoadWait; @@ -41,6 +41,7 @@ import org.openqa.selenium.bidi.module.LogInspector; import org.openqa.selenium.bidi.module.Network; import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; class SpectrumTestTest { @@ -90,15 +91,6 @@ class SpectrumTestTest { @Mock private Configuration.Drivers drivers; - @Mock - private Configuration.Drivers.Waits waits; - - @Mock - private Configuration.Drivers.Waits.AutoWait auto; - - @Mock - private Duration timeout; - @Mock private ExtentReports extentReports; @@ -176,17 +168,14 @@ void testBeforeAll() { void testBeforeEach() { // injectDataIn final String folder = "folder"; + final LocatorFactory locatorFactory = mock(); + final ElementLocatorFactory elementLocatorFactory = mock(); when(configuration.getData()).thenReturn(dataConfiguration); when(dataConfiguration.getFolder()).thenReturn(folder); when(yamlUtils.readClient(folder + "/data.yaml", FakeData.class)).thenReturn(data); - - final long seconds = 123L; when(configuration.getDrivers()).thenReturn(drivers); - when(drivers.getWaits()).thenReturn(waits); - when(waits.getAuto()).thenReturn(auto); - when(auto.getTimeout()).thenReturn(timeout); - when(timeout.toSeconds()).thenReturn(seconds); - + when(drivers.getLocatorFactory()).thenReturn(locatorFactory); + when(locatorFactory.buildFor(driver)).thenReturn(elementLocatorFactory); when(statefulExtentTest.getCurrentNode()).thenReturn(extentTest); assertNull(childTestVoid.childTestPage); @@ -247,12 +236,11 @@ void testBaseSpectrumAfterEachThrows() { @Test @DisplayName("injectPages should init also init pages from super classes") void injectPages() { - final long seconds = 123L; + final LocatorFactory locatorFactory = mock(); + final ElementLocatorFactory elementLocatorFactory = mock(); when(configuration.getDrivers()).thenReturn(drivers); - when(drivers.getWaits()).thenReturn(waits); - when(waits.getAuto()).thenReturn(auto); - when(auto.getTimeout()).thenReturn(timeout); - when(timeout.toSeconds()).thenReturn(seconds); + when(drivers.getLocatorFactory()).thenReturn(locatorFactory); + when(locatorFactory.buildFor(driver)).thenReturn(elementLocatorFactory); assertNull(childTest.childTestPage); assertNull(childTest.getParentTestPage()); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AndroidTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AndroidTest.java index f2b0619a..108c6718 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AndroidTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AndroidTest.java @@ -61,7 +61,7 @@ void configureWaitsOf() { @Test @DisplayName("buildDriverFor should return a new instance of AndroidDriver for the provided url and the instance capabilities") void buildDriverFor() { - MockedConstruction androidDriverMockedConstruction = mockConstruction(AndroidDriver.class, (mock, context) -> { + MockedConstruction androidDriverMockedConstruction = mockConstruction((mock, context) -> { assertEquals(url, context.arguments().getFirst()); assertEquals(capabilities, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumGenericTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumGenericTest.java index b330faf4..144be88b 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumGenericTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumGenericTest.java @@ -53,7 +53,7 @@ void beforeEach() { @Test @DisplayName("buildCapabilities should build a new instance of capabilities and set the capabilities from the yaml on it") void buildCapabilitiesAbsoluteAppPath() { - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(MutableCapabilities.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); @@ -71,7 +71,7 @@ void buildCapabilitiesAbsoluteAppPath() { @Test @DisplayName("buildDriverFor should return a new instance of AppiumDriver for the provided url and the instance capabilities") void buildDriverFor() { - MockedConstruction appiumDriverMockedConstruction = mockConstruction(AppiumDriver.class, (mock, context) -> { + MockedConstruction appiumDriverMockedConstruction = mockConstruction((mock, context) -> { assertEquals(url, context.arguments().getFirst()); assertEquals(mutableCapabilities, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumTest.java index 701c9047..41d49bc8 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/AppiumTest.java @@ -56,7 +56,7 @@ void getDriverServiceBuilder() { when(service.getPort()).thenReturn(port); when(service.getTimeout()).thenReturn(timeout); - MockedConstruction appiumServiceBuilderMockedConstruction = mockConstruction(AppiumServiceBuilder.class, (mock, context) -> { + MockedConstruction appiumServiceBuilderMockedConstruction = mockConstruction((mock, context) -> { when(mock.withIPAddress(ipAddress)).thenReturn(mock); when(mock.usingPort(port)).thenReturn(mock); when(mock.withTimeout(timeout)).thenReturn(mock); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromeTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromeTest.java index 19d6e20c..6ac8ad77 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromeTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromeTest.java @@ -70,7 +70,7 @@ void getDriverServiceBuilder() { when(service.isVerbose()).thenReturn(true); when(service.getAllowedListIps()).thenReturn(allowedListIps); - MockedConstruction chromeDriverServiceMockedConstruction = mockConstruction(ChromeDriverService.Builder.class, (mock, context) -> { + MockedConstruction chromeDriverServiceMockedConstruction = mockConstruction((mock, context) -> { when(mock.withBuildCheckDisabled(true)).thenReturn(mock); when(mock.withAppendLog(true)).thenReturn(mock); when(mock.withReadableTimestamp(true)).thenReturn(mock); @@ -106,9 +106,9 @@ void buildCapabilities() { when(driversConfig.isBiDi()).thenReturn(false); lenient().when(chromeConfig.isBiDi()).thenReturn(true); - MockedConstruction chromeOptionsMockedConstruction = mockConstruction(ChromeOptions.class, + MockedConstruction chromeOptionsMockedConstruction = mockConstruction( (mock, context) -> when(mock.addArguments(arguments)).thenReturn(mock)); - MockedConstruction loggingPreferencesMockedConstruction = mockConstruction(LoggingPreferences.class); + MockedConstruction loggingPreferencesMockedConstruction = mockConstruction(); chrome.buildCapabilities(); final ChromeOptions chromeOptions = chromeOptionsMockedConstruction.constructed().getFirst(); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromiumTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromiumTest.java index ea164e60..81976da0 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromiumTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/ChromiumTest.java @@ -46,7 +46,7 @@ void setLoggingPreferencesFrom() { when(logs.getDriver()).thenReturn(driverLevel); when(logs.getPerformance()).thenReturn(performanceLevel); - MockedConstruction mockedConstruction = mockConstruction(LoggingPreferences.class); + MockedConstruction mockedConstruction = mockConstruction(); chrome.capabilities = capabilities; chrome.setLoggingPreferencesFrom(logs); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/DriverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/DriverTest.java index c9e5d250..b2a8bb68 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/DriverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/DriverTest.java @@ -100,7 +100,7 @@ void beforeEach() { WEB_DRIVER_THREAD_LOCAL.remove(); threadGuardMockedStatic = mockStatic(); - loggingPreferencesMockedConstruction = mockConstruction(LoggingPreferences.class); + loggingPreferencesMockedConstruction = mockConstruction(); } @AfterEach @@ -115,7 +115,7 @@ void mergeGridCapabilitiesFrom() { Reflections.setField("capabilities", driver, driverOptions); when(driverOptions.merge(desiredCapabilitiesArgumentCaptor.capture())).thenReturn(driverOptions); - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(DesiredCapabilities.class, (mock, context) -> { + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction((mock, context) -> { assertEquals(gridCapabilities, context.arguments().getFirst()); }); @@ -142,9 +142,8 @@ void build() { when(chromeConfig.getCapabilities()).thenReturn(Map.of()); when(chromeConfig.getExperimentalOptions()).thenReturn(Map.of()); - MockedConstruction chromeOptionsMockedConstruction = mockConstruction(ChromeOptions.class, (mock, context) -> { - when(mock.addArguments(arguments)).thenReturn(mock); - }); + MockedConstruction chromeOptionsMockedConstruction = mockConstruction( + (mock, context) -> when(mock.addArguments(arguments)).thenReturn(mock)); when(waits.getImplicit()).thenReturn(implicitDuration); when(waits.getPageLoadTimeout()).thenReturn(pageLoadDuration); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EdgeTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EdgeTest.java index 11f352bd..f92646d5 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EdgeTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EdgeTest.java @@ -70,7 +70,7 @@ void getDriverServiceBuilder() { when(service.isVerbose()).thenReturn(true); when(service.getAllowedListIps()).thenReturn(allowedListIps); - MockedConstruction edgeDriverServiceMockedConstruction = mockConstruction(EdgeDriverService.Builder.class, (mock, context) -> { + MockedConstruction edgeDriverServiceMockedConstruction = mockConstruction((mock, context) -> { when(mock.withBuildCheckDisabled(true)).thenReturn(mock); when(mock.withAppendLog(true)).thenReturn(mock); when(mock.withReadableTimestamp(true)).thenReturn(mock); @@ -106,9 +106,9 @@ void buildCapabilities() { when(driversConfig.isBiDi()).thenReturn(false); lenient().when(edgeConfig.isBiDi()).thenReturn(true); - MockedConstruction edgeOptionsMockedConstruction = mockConstruction(EdgeOptions.class, + MockedConstruction edgeOptionsMockedConstruction = mockConstruction( (mock, context) -> when(mock.addArguments(arguments)).thenReturn(mock)); - MockedConstruction loggingPreferencesMockedConstruction = mockConstruction(LoggingPreferences.class); + MockedConstruction loggingPreferencesMockedConstruction = mockConstruction(); edge.buildCapabilities(); final EdgeOptions edgeOptions = edgeOptionsMockedConstruction.constructed().getFirst(); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EspressoTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EspressoTest.java index f637dbdc..c3311af1 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EspressoTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/EspressoTest.java @@ -52,7 +52,7 @@ void buildCapabilities() { final String appPath = path.toString(); final String appAbsolutePath = path.toAbsolutePath().toString(); - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(EspressoOptions.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); @@ -76,7 +76,7 @@ void buildCapabilities() { void buildCapabilitiesAbsoluteAppPath() { final String appPath = Path.of("absolute", "path").toAbsolutePath().toString(); - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(EspressoOptions.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/FirefoxTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/FirefoxTest.java index 3453068a..b50cc780 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/FirefoxTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/FirefoxTest.java @@ -55,7 +55,7 @@ void getDriverServiceBuilder() { when(service.isTruncatedLogs()).thenReturn(true); when(service.getProfileRoot()).thenReturn(profileRoot); - MockedConstruction chromeDriverServiceMockedConstruction = mockConstruction(GeckoDriverService.Builder.class, (mock, context) -> { + MockedConstruction chromeDriverServiceMockedConstruction = mockConstruction((mock, context) -> { when(mock.withAllowHosts(allowHosts)).thenReturn(mock); when(mock.withLogLevel(FirefoxDriverLogLevel.TRACE)).thenReturn(mock); when(mock.withTruncatedLogs(true)).thenReturn(mock); @@ -86,7 +86,7 @@ void buildCapabilities() { when(driversConfig.isBiDi()).thenReturn(false); lenient().when(firefoxConfig.isBiDi()).thenReturn(true); - MockedConstruction firefoxOptionsMockedConstruction = mockConstruction(FirefoxOptions.class, (mock, context) -> { + MockedConstruction firefoxOptionsMockedConstruction = mockConstruction((mock, context) -> { when(mock.addArguments(arguments)).thenReturn(mock); when(mock.setBinary(binary)).thenReturn(mock); }); @@ -120,7 +120,7 @@ void buildCapabilitiesNoBinary() { when(driversConfig.isBiDi()).thenReturn(false); lenient().when(firefoxConfig.isBiDi()).thenReturn(true); - final MockedConstruction firefoxOptionsMockedConstruction = mockConstruction(FirefoxOptions.class, + final MockedConstruction firefoxOptionsMockedConstruction = mockConstruction( (mock, context) -> when(mock.addArguments(arguments)).thenReturn(mock)); firefox.buildCapabilities(); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/Mac2Test.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/Mac2Test.java index 9abb53ab..77a65ec7 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/Mac2Test.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/Mac2Test.java @@ -52,7 +52,7 @@ void beforeEach() { @Test @DisplayName("buildCapabilities should build a new instance of mac2Options and set the capabilities from the yaml on it") void buildCapabilitiesAbsoluteAppPath() { - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(Mac2Options.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); @@ -70,7 +70,7 @@ void buildCapabilitiesAbsoluteAppPath() { @Test @DisplayName("buildDriverFor should return a new instance of Mac2Driver for the provided url and the instance capabilities") void buildDriverFor() { - MockedConstruction mac2DriverMockedConstruction = mockConstruction(Mac2Driver.class, (mock, context) -> { + MockedConstruction mac2DriverMockedConstruction = mockConstruction((mock, context) -> { assertEquals(url, context.arguments().getFirst()); assertEquals(mac2Options, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/SafariTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/SafariTest.java index f8a9688f..c17011c7 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/SafariTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/SafariTest.java @@ -46,7 +46,7 @@ void getDriverServiceBuilder(final boolean logging) { when(safariConfig.getService()).thenReturn(service); when(service.isLogging()).thenReturn(logging); - MockedConstruction safariDriverServiceMockedConstruction = mockConstruction(SafariDriverService.Builder.class, + MockedConstruction safariDriverServiceMockedConstruction = mockConstruction( (mock, context) -> when(mock.withLogging(logging)).thenReturn(mock)); final DriverService.Builder driverServiceBuilder = safari.getDriverServiceBuilder(); @@ -58,7 +58,7 @@ void getDriverServiceBuilder(final boolean logging) { @Test @DisplayName("buildCapabilitiesFrom should build an instance of Safari based on the provided configuration") void buildCapabilitiesFrom() { - MockedConstruction safariOptionsMockedConstruction = mockConstruction(SafariOptions.class); + MockedConstruction safariOptionsMockedConstruction = mockConstruction(); safari.buildCapabilities(); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/UiAutomator2Test.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/UiAutomator2Test.java index 7653ea03..a50c56b5 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/UiAutomator2Test.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/UiAutomator2Test.java @@ -53,7 +53,7 @@ void buildCapabilities() { final String appPath = path.toString(); final String appAbsolutePath = path.toAbsolutePath().toString(); - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(UiAutomator2Options.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); @@ -78,7 +78,7 @@ void buildCapabilities() { void buildCapabilitiesAbsoluteAppPath() { final String appPath = Path.of("absolute", "path").toAbsolutePath().toString(); - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(UiAutomator2Options.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/WindowsTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/WindowsTest.java index 38ba4054..dc783d17 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/WindowsTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/WindowsTest.java @@ -81,7 +81,7 @@ void configureWaitsOf() { @Test @DisplayName("buildCapabilities should build a new instance of windowsOptions and set the capabilities from the yaml on it") void buildCapabilitiesAbsoluteAppPath() { - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(WindowsOptions.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); @@ -99,7 +99,7 @@ void buildCapabilitiesAbsoluteAppPath() { @Test @DisplayName("buildDriverFor should return a new instance of WindowsDriver for the provided url and the instance capabilities") void buildDriverFor() { - MockedConstruction windowsDriverMockedConstruction = mockConstruction(WindowsDriver.class, (mock, context) -> { + MockedConstruction windowsDriverMockedConstruction = mockConstruction((mock, context) -> { assertEquals(url, context.arguments().getFirst()); assertEquals(windowsOptions, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/XCUITestTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/XCUITestTest.java index b5e6d91d..cce2fc81 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/drivers/XCUITestTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/drivers/XCUITestTest.java @@ -58,7 +58,7 @@ void buildCapabilities() { final String appPath = path.toString(); final String appAbsolutePath = path.toAbsolutePath().toString(); - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(XCUITestOptions.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); @@ -83,7 +83,7 @@ void buildCapabilities() { void buildCapabilitiesAbsoluteAppPath() { final String appPath = Path.of("absolute", "path").toAbsolutePath().toString(); - MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction(XCUITestOptions.class, + MockedConstruction desiredCapabilitiesMockedConstruction = mockConstruction( (mock, context) -> assertEquals(capabilities, context.arguments().getFirst())); when(configuration.getDrivers()).thenReturn(drivers); @@ -103,7 +103,7 @@ void buildCapabilitiesAbsoluteAppPath() { @Test @DisplayName("buildDriverFor should return a new instance of IOSDriver for the provided url and the instance capabilities") void buildDriverFor() { - MockedConstruction iosDriverMockedConstruction = mockConstruction(IOSDriver.class, (mock, context) -> { + MockedConstruction iosDriverMockedConstruction = mockConstruction((mock, context) -> { assertEquals(url, context.arguments().getFirst()); assertEquals(xcuiTestOptions, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/element_locator_factories/AjaxLocatorFactoryTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/element_locator_factories/AjaxLocatorFactoryTest.java new file mode 100644 index 00000000..7b5f8971 --- /dev/null +++ b/spectrum/src/test/java/io/github/giulong/spectrum/element_locator_factories/AjaxLocatorFactoryTest.java @@ -0,0 +1,41 @@ +package io.github.giulong.spectrum.element_locator_factories; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mockConstruction; + +import java.time.Duration; + +import io.github.giulong.spectrum.utils.Reflections; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedConstruction; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; + +class AjaxLocatorFactoryTest { + + @Mock + private WebDriver driver; + + @InjectMocks + private AjaxLocatorFactory locatorFactory; + + @Test + @DisplayName("buildFor should return a new instance of AjaxElementLocatorFactory") + void testBuildFor() { + final Duration timeout = Duration.ofSeconds(10); + Reflections.setField("timeout", locatorFactory, timeout); + + try (MockedConstruction construction = mockConstruction()) { + final ElementLocatorFactory actual = locatorFactory.buildFor(driver); + final ElementLocatorFactory expected = construction.constructed().getFirst(); + + assertEquals(expected, actual); + assertEquals(timeout, locatorFactory.getTimeout()); + } + } +} diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/element_locator_factories/DefaultLocatorFactoryTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/element_locator_factories/DefaultLocatorFactoryTest.java new file mode 100644 index 00000000..adf85ba3 --- /dev/null +++ b/spectrum/src/test/java/io/github/giulong/spectrum/element_locator_factories/DefaultLocatorFactoryTest.java @@ -0,0 +1,33 @@ +package io.github.giulong.spectrum.element_locator_factories; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mockConstruction; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedConstruction; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.pagefactory.DefaultElementLocatorFactory; +import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; + +class DefaultLocatorFactoryTest { + + @Mock + private WebDriver driver; + + @InjectMocks + private DefaultLocatorFactory locatorFactory; + + @Test + @DisplayName("buildFor should return a new instance of DefaultElementLocatorFactory") + void testBuildFor() { + try (MockedConstruction construction = mockConstruction()) { + final ElementLocatorFactory actual = locatorFactory.buildFor(driver); + final ElementLocatorFactory expected = construction.constructed().getFirst(); + + assertEquals(expected, actual); + } + } +} diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ActionsResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ActionsResolverTest.java index ecc839b5..aff20ebb 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ActionsResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ActionsResolverTest.java @@ -38,7 +38,7 @@ void testResolveParameter() { when(extensionContext.getStore(GLOBAL)).thenReturn(store); when(store.get(DRIVER, WebDriver.class)).thenReturn(webDriver); - MockedConstruction mockedConstruction = mockConstruction(Actions.class); + MockedConstruction mockedConstruction = mockConstruction(); Actions actual = actionsResolver.resolveParameter(parameterContext, extensionContext); Actions actions = mockedConstruction.constructed().getFirst(); verify(store).put(ActionsResolver.ACTIONS, actions); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DownloadWaitResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DownloadWaitResolverTest.java index 7aba2385..bc4fbce0 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DownloadWaitResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DownloadWaitResolverTest.java @@ -66,7 +66,7 @@ void testResolveParameter() { when(driversConfiguration.getWaits()).thenReturn(waits); when(waits.getDownloadTimeout()).thenReturn(duration); - MockedConstruction mockedConstruction = mockConstruction(DownloadWait.class, (mock, context) -> { + MockedConstruction mockedConstruction = mockConstruction((mock, context) -> { assertEquals(webDriver, context.arguments().getFirst()); assertEquals(duration, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DriverResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DriverResolverTest.java index 5789ca2f..7bbaceeb 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DriverResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/DriverResolverTest.java @@ -296,7 +296,7 @@ void resolveParameter() { when(autoWait.isEnabled()).thenReturn(false); //noinspection rawtypes - final MockedConstruction mockedConstruction = mockConstruction(EventFiringDecorator.class, (mock, executionContext) -> { + final MockedConstruction mockedConstruction = mockConstruction((mock, executionContext) -> { assertArrayEquals(List.of(eventsWebDriverListener).toArray(), (WebDriverListener[]) executionContext.arguments().getFirst()); when(mock.decorate(webDriver)).thenReturn(decoratedWebDriver); @@ -321,13 +321,13 @@ void resolveParameterAutoWait() { when(autoWaitWebDriverListenerBuilder.locatorPattern(pattern)).thenReturn(autoWaitWebDriverListenerBuilder); when(autoWaitWebDriverListenerBuilder.build()).thenReturn(autoWaitWebDriverListener); - final MockedConstruction actionsMockedConstruction = mockConstruction(Actions.class, (mock, executionContext) -> { + final MockedConstruction actionsMockedConstruction = mockConstruction((mock, executionContext) -> { assertEquals(webDriver, executionContext.arguments().getFirst()); when(autoWaitWebDriverListenerBuilder.actions(mock)).thenReturn(autoWaitWebDriverListenerBuilder); }); - final MockedConstruction webDriverWaitMockedConstruction = mockConstruction(WebDriverWait.class, (mock, executionContext) -> { + final MockedConstruction webDriverWaitMockedConstruction = mockConstruction((mock, executionContext) -> { assertEquals(webDriver, executionContext.arguments().getFirst()); assertEquals(autoWaitTimeout, executionContext.arguments().get(1)); @@ -335,7 +335,7 @@ void resolveParameterAutoWait() { }); //noinspection rawtypes - final MockedConstruction mockedConstruction = mockConstruction(EventFiringDecorator.class, (mock, executionContext) -> { + final MockedConstruction mockedConstruction = mockConstruction((mock, executionContext) -> { assertArrayEquals(List.of(autoWaitWebDriverListener, eventsWebDriverListener).toArray(), (WebDriverListener[]) executionContext.arguments().getFirst()); when(mock.decorate(webDriver)).thenReturn(decoratedWebDriver); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/FakerResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/FakerResolverTest.java index bda96148..354c36b0 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/FakerResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/FakerResolverTest.java @@ -62,7 +62,7 @@ void testResolveParameter() { when(faker.getLocale()).thenReturn(locale); when(faker.getRandom()).thenReturn(random); - final MockedConstruction mockedConstruction = mockConstruction(Faker.class, (mock, context) -> { + final MockedConstruction mockedConstruction = mockConstruction((mock, context) -> { assertEquals(locale, context.arguments().getFirst()); assertEquals(random, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ImplicitWaitResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ImplicitWaitResolverTest.java index 1bf2dc52..d44b4493 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ImplicitWaitResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ImplicitWaitResolverTest.java @@ -67,7 +67,7 @@ void testResolveParameter() { when(drivers.getWaits()).thenReturn(waits); when(waits.getImplicit()).thenReturn(duration); - MockedConstruction mockedConstruction = mockConstruction(ImplicitWait.class, (mock, context) -> { + MockedConstruction mockedConstruction = mockConstruction((mock, context) -> { assertEquals(webDriver, context.arguments().getFirst()); assertEquals(duration, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/PageLoadWaitResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/PageLoadWaitResolverTest.java index 0e0d0092..267e1312 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/PageLoadWaitResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/PageLoadWaitResolverTest.java @@ -66,7 +66,7 @@ void testResolveParameter() { when(drivers.getWaits()).thenReturn(waits); when(waits.getPageLoadTimeout()).thenReturn(duration); - MockedConstruction mockedConstruction = mockConstruction(PageLoadWait.class, (mock, context) -> { + MockedConstruction mockedConstruction = mockConstruction((mock, context) -> { assertEquals(webDriver, context.arguments().getFirst()); assertEquals(duration, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ScriptWaitResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ScriptWaitResolverTest.java index 1215fee0..8d19f295 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ScriptWaitResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/ScriptWaitResolverTest.java @@ -66,7 +66,7 @@ void testResolveParameter() { when(drivers.getWaits()).thenReturn(waits); when(waits.getScriptTimeout()).thenReturn(duration); - MockedConstruction mockedConstruction = mockConstruction(ScriptWait.class, (mock, context) -> { + MockedConstruction mockedConstruction = mockConstruction((mock, context) -> { assertEquals(webDriver, context.arguments().getFirst()); assertEquals(duration, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextInspectorResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextInspectorResolverTest.java index e2c1ea7d..0b2a7a0e 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextInspectorResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextInspectorResolverTest.java @@ -22,7 +22,7 @@ class BrowsingContextInspectorResolverTest { @Test @DisplayName("resolveParameterFor should return an instance of BrowsingContextInspector for the provided WebDriver") void resolveParameterFor() { - final MockedConstruction mockedConstruction = mockConstruction(BrowsingContextInspector.class, + final MockedConstruction mockedConstruction = mockConstruction( (mock, context) -> assertEquals(webDriver, context.arguments().getFirst())); final BrowsingContextInspector actual = browsingContextInspectorResolver.resolveParameterFor(webDriver); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextResolverTest.java index b3a3e3ce..fc981b0b 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/BrowsingContextResolverTest.java @@ -26,7 +26,7 @@ void resolveParameterFor() { final String windowHandle = "windowHandle"; when(webDriver.getWindowHandle()).thenReturn(windowHandle); - final MockedConstruction mockedConstruction = mockConstruction(BrowsingContext.class, (mock, context) -> { + final MockedConstruction mockedConstruction = mockConstruction((mock, context) -> { assertEquals(webDriver, context.arguments().getFirst()); assertEquals(windowHandle, context.arguments().get(1)); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/LogInspectorResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/LogInspectorResolverTest.java index 6aba7a8c..f911ab03 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/LogInspectorResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/LogInspectorResolverTest.java @@ -22,7 +22,7 @@ class LogInspectorResolverTest { @Test @DisplayName("resolveParameterFor should return an instance of LogInspector for the provided WebDriver") void resolveParameterFor() { - final MockedConstruction mockedConstruction = mockConstruction(LogInspector.class, + final MockedConstruction mockedConstruction = mockConstruction( (mock, context) -> assertEquals(webDriver, context.arguments().getFirst())); final LogInspector actual = logInspectorResolver.resolveParameterFor(webDriver); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/NetworkResolverTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/NetworkResolverTest.java index 81b9db8f..9262ba49 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/NetworkResolverTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/extensions/resolvers/bidi/NetworkResolverTest.java @@ -22,7 +22,7 @@ class NetworkResolverTest { @Test @DisplayName("resolveParameterFor should return an instance of Network for the provided WebDriver") void resolveParameterFor() { - final MockedConstruction mockedConstruction = mockConstruction(Network.class, + final MockedConstruction mockedConstruction = mockConstruction( (mock, context) -> assertEquals(webDriver, context.arguments().getFirst())); final Network actual = networkResolver.resolveParameterFor(webDriver); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/internals/AppiumLogTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/internals/AppiumLogTest.java index 46bcd322..d1f9e4af 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/internals/AppiumLogTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/internals/AppiumLogTest.java @@ -31,7 +31,7 @@ class AppiumLogTest { @BeforeEach void beforeEach() { - stringBufferMockedConstruction = mockConstruction(StringBuffer.class); + stringBufferMockedConstruction = mockConstruction(); Reflections.setField("stringBuffer", appiumLog, new StringBuffer(LOG_MESSAGE)); } diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/internals/DriverLogTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/internals/DriverLogTest.java index f02b8f19..92058584 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/internals/DriverLogTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/internals/DriverLogTest.java @@ -31,7 +31,7 @@ class DriverLogTest { @BeforeEach void beforeEach() { - stringBufferMockedConstruction = mockConstruction(StringBuffer.class); + stringBufferMockedConstruction = mockConstruction(); Reflections.setField("stringBuffer", driverLog, new StringBuffer(LOG_MESSAGE)); } diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/RandomDeserializerTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/RandomDeserializerTest.java index be7703d4..5955ed44 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/RandomDeserializerTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/RandomDeserializerTest.java @@ -41,7 +41,7 @@ void deserialize() throws IOException { long value = 42L; when(jsonParser.getValueAsLong()).thenReturn(value); - final MockedConstruction mockedConstruction = mockConstruction(Random.class, (mock, context) -> assertEquals(value, context.arguments().getFirst())); + final MockedConstruction mockedConstruction = mockConstruction((mock, context) -> assertEquals(value, context.arguments().getFirst())); final Random actual = randomDeserializer.deserialize(jsonParser, deserializationContext); final Random expected = mockedConstruction.constructed().getFirst(); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/internals/page_factory/SpectrumFieldDecoratorTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/internals/page_factory/SpectrumFieldDecoratorTest.java index f58c514d..a3af0514 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/internals/page_factory/SpectrumFieldDecoratorTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/internals/page_factory/SpectrumFieldDecoratorTest.java @@ -56,6 +56,9 @@ class SpectrumFieldDecoratorTest { void decorateNull() { final ClassLoader classLoader = mock(); + when(factory.createLocator(field)).thenReturn(locator); + doReturn(String.class).when(field).getType(); + assertNull(spectrumFieldDecorator.decorate(classLoader, field)); } @@ -78,7 +81,7 @@ void decorate() { doReturn(WebElement.class).when(field).getType(); when(field.isAnnotationPresent(Secured.class)).thenReturn(true); - final MockedConstruction mockedConstruction = mockConstruction(SpectrumLocatingElementHandler.class, (mock, context) -> { + final MockedConstruction mockedConstruction = mockConstruction((mock, context) -> { assertEquals(locator, context.arguments().getFirst()); assertTrue((boolean) context.arguments().get(1)); }); @@ -105,7 +108,7 @@ void decorateList() { when(parameterizedType.getActualTypeArguments()).thenReturn(new Type[]{WebElement.class}); when(field.getAnnotation(FindBy.class)).thenReturn(findBy); - final MockedConstruction mockedConstruction = mockConstruction(LocatingElementListHandler.class, + final MockedConstruction mockedConstruction = mockConstruction( (mock, context) -> assertEquals(locator, context.arguments().getFirst())); final MockedStatic proxyMockedStatic = mockStatic(); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/internals/web_driver_listeners/EventsWebDriverListenerTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/internals/web_driver_listeners/EventsWebDriverListenerTest.java index 2610b039..68aa3d9d 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/internals/web_driver_listeners/EventsWebDriverListenerTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/internals/web_driver_listeners/EventsWebDriverListenerTest.java @@ -527,13 +527,13 @@ void afterSendKeysSecured() { @Test @DisplayName("afterGetScreenshotAs should dispatch an event when the screenshot is in bytes") void afterGetScreenshotAsBytes() { - final String message = "message"; + final String simpleMessage = "simpleMessage"; final Status status = Status.INFO; final byte[] result = new byte[]{1, 2, 3}; final Payload payload = Payload .builder() .screenshot(result) - .message(message) + .message(simpleMessage) .status(status) .takesScreenshot((TakesScreenshot) driver) .build(); @@ -542,7 +542,7 @@ void afterGetScreenshotAsBytes() { when(context.getStore(GLOBAL)).thenReturn(store); when(store.get(TEST_DATA, TestData.class)).thenReturn(testData); when(testData.getScreenshot()).thenReturn(screenshot); - when(screenshot.getMessage()).thenReturn(message); + when(screenshot.getMessage()).thenReturn(simpleMessage); when(screenshot.getStatus()).thenReturn(status); when(screenshot.getFrame()).thenReturn(MANUAL); @@ -550,14 +550,14 @@ void afterGetScreenshotAsBytes() { when(webDriverEventBuilder.frame(AUTO_AFTER)).thenReturn(webDriverEventBuilder); when(webDriverEventBuilder.level(INFO)).thenReturn(webDriverEventBuilder); when(webDriverEventBuilder.args(List.of(driver, BYTES, result))).thenReturn(webDriverEventBuilder); - when(webDriverEventBuilder.message(message)).thenReturn(webDriverEventBuilder); + when(webDriverEventBuilder.message(simpleMessage)).thenReturn(webDriverEventBuilder); when(webDriverEventBuilder.build()).thenReturn(webDriverEvent); when(events.getAfterGetScreenshotAs()).thenReturn(event); // listenTo ((Logger) LoggerFactory.getLogger(EventsWebDriverListener.class)).setLevel(Level.INFO); - when(event.getMessage()).thenReturn(message); + when(event.getMessage()).thenReturn(simpleMessage); when(event.getLevel()).thenReturn(INFO); when(event.getWait()).thenReturn(wait); @@ -569,13 +569,13 @@ void afterGetScreenshotAsBytes() { @Test @DisplayName("afterGetScreenshotAs should dispatch an event when the screenshot is in bytes, building a default screenshot if none is found in testData") void afterGetScreenshotAsBytesNoScreenshot() { - final String message = ""; + final String emptyMessage = ""; final Status status = Status.INFO; final byte[] result = new byte[]{1, 2, 3}; final Payload payload = Payload .builder() .screenshot(result) - .message(message) + .message(emptyMessage) .status(status) .takesScreenshot((TakesScreenshot) driver) .build(); @@ -589,14 +589,14 @@ void afterGetScreenshotAsBytesNoScreenshot() { when(webDriverEventBuilder.frame(AUTO_AFTER)).thenReturn(webDriverEventBuilder); when(webDriverEventBuilder.level(INFO)).thenReturn(webDriverEventBuilder); when(webDriverEventBuilder.args(List.of(driver, BYTES, result))).thenReturn(webDriverEventBuilder); - when(webDriverEventBuilder.message(message)).thenReturn(webDriverEventBuilder); + when(webDriverEventBuilder.message(emptyMessage)).thenReturn(webDriverEventBuilder); when(webDriverEventBuilder.build()).thenReturn(webDriverEvent); when(events.getAfterGetScreenshotAs()).thenReturn(event); // listenTo ((Logger) LoggerFactory.getLogger(EventsWebDriverListener.class)).setLevel(Level.INFO); - when(event.getMessage()).thenReturn(message); + when(event.getMessage()).thenReturn(emptyMessage); when(event.getLevel()).thenReturn(INFO); when(event.getWait()).thenReturn(wait); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/utils/ContextManagerTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/utils/ContextManagerTest.java index d30fa2e1..d816bbb1 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/utils/ContextManagerTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/utils/ContextManagerTest.java @@ -56,7 +56,7 @@ void initFor() { void initForContext() { final String uniqueId = "uniqueId"; final Map testContexts = new HashMap<>(); - final MockedConstruction testContextMockedConstruction = mockConstruction(TestContext.class); + final MockedConstruction testContextMockedConstruction = mockConstruction(); Reflections.setField("testContexts", contextManager, testContexts); when(context.getUniqueId()).thenReturn(uniqueId); @@ -123,7 +123,7 @@ void get() { void getNew() { final String uniqueId = "uniqueId"; final Map testContexts = new HashMap<>(); - final MockedConstruction testContextMockedConstruction = mockConstruction(TestContext.class); + final MockedConstruction testContextMockedConstruction = mockConstruction(); when(context.getUniqueId()).thenReturn(uniqueId); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/utils/ExtentReporterTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/utils/ExtentReporterTest.java index a0465a7a..b3c81533 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/utils/ExtentReporterTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/utils/ExtentReporterTest.java @@ -280,9 +280,9 @@ void sessionOpened() { doReturn(extentSparkReporterConfigBuilder).when(extentSparkReporterConfigBuilder).js(internalJs + js); doReturn(extentSparkReporterConfig).when(extentSparkReporterConfigBuilder).build(); - MockedConstruction extentReportsMockedConstruction = mockConstruction(ExtentReports.class); + MockedConstruction extentReportsMockedConstruction = mockConstruction(); - MockedConstruction extentSparkReporterMockedConstruction = mockConstruction(ExtentSparkReporter.class, (mock, executionContext) -> { + MockedConstruction extentSparkReporterMockedConstruction = mockConstruction((mock, executionContext) -> { assertEquals(absolutePathToStringReplaced, executionContext.arguments().getFirst()); when(mock.config(extentSparkReporterConfig)).thenReturn(mock); }); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/utils/FreeMarkerWrapperTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/utils/FreeMarkerWrapperTest.java index f207ef8d..fd04340f 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/utils/FreeMarkerWrapperTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/utils/FreeMarkerWrapperTest.java @@ -60,14 +60,9 @@ void sessionOpened() { when(freeMarker.getLocale()).thenReturn(US); when(freeMarker.getNumberFormat()).thenReturn(numberFormat); - MockedConstruction versionMockedConstruction = mockConstruction(Version.class, context -> { - assertEquals(version, context.arguments().getFirst()); - return withSettings(); - }); - MockedConstruction configurationMockedConstruction = mockConstruction(freemarker.template.Configuration.class, context -> { - assertEquals(versionMockedConstruction.constructed().getFirst(), context.arguments().getFirst()); - return withSettings(); - }); + MockedConstruction versionMockedConstruction = mockConstruction((mock, context) -> assertEquals(version, context.arguments().getFirst())); + MockedConstruction configurationMockedConstruction = mockConstruction( + (mock, context) -> assertEquals(versionMockedConstruction.constructed().getFirst(), context.arguments().getFirst())); freeMarkerWrapper.sessionOpened(); assertEquals(Reflections.getFieldValue("configuration", freeMarkerWrapper), configurationMockedConstruction.constructed().getFirst()); @@ -82,17 +77,13 @@ void interpolate() throws TemplateException, IOException { final String source = "source"; final Map vars = Map.of("one", "value"); - MockedConstruction stringReaderMockedConstruction = mockConstruction(StringReader.class, context -> { - assertEquals(source, context.arguments().getFirst()); - return withSettings(); - }); - MockedConstruction