static Supplier<Properties> readSeleniumGridProperties() { return () -> propertyReader() .apply(CONFIG_FOLDER + "selenium-grids") .getOrElse(Properties::new); }
default <U> Result<U> map(Function<? super T, ? extends U> mapper) { Objects.requireNonNull(mapper); return isPresent() ? ((CheckedFunction<T, U>) mapper::apply).apply(get()) : this.asFailure(); }
static WebdriversConfig readConfig() { final Properties configProperties = propertyReader() .apply(CONFIG_FOLDER + "config") .getOrElse(Properties::new); return new WebdriversConfigFactory().createFromProperies(configProperties); } }
@Override public PageObject resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) { Class<?> pageObjectClass = parameterContext .getParameter() .getType(); final Result<PageObject> po = ((CheckedFunction<Class<?>, PageObject>) aClass -> { final Constructor<?> constructor = pageObjectClass.getConstructor(WebDriver.class, ContainerInfo.class); WebDriver webDriver = webdriver(); PageObject page = PageObject.class.cast(constructor.newInstance(webDriver, containerInfo().apply(extensionContext))); PageFactory.initElements(new WebDriverExtensionFieldDecorator(webDriver), page); return page; }) .apply(pageObjectClass); po.ifPresentOrElse( success -> logger().fine("pageobject of type " + pageObjectClass.getSimpleName() + " was created with " + webdriverName().apply(webdriver())), failed -> logger().warning("was not able to create PageObjectInstance " + failed) ); po.ifAbsent(() -> { throw new ParameterResolutionException("was not able to create PageObjectInstance of type " + pageObjectClass); }); return po.get(); } });
@Override public PageObject resolveParameter(ParameterContext parameterContext , ExtensionContext extensionContext) { logger().info("resolveParameter called.."); Class<?> pageObjectClass = parameterContext .getParameter() .getType(); final Result<PageObject> po = ((CheckedFunction<Class<?>, PageObject>) aClass -> { final Constructor<?> constructor = pageObjectClass.getConstructor(WebDriver.class , ContainerInfo.class); WebDriver webDriver = webdriver(); PageObject page = PageObject.class.cast(constructor.newInstance(webDriver , containerInfo().apply(extensionContext))); PageFactory.initElements(new WebDriverExtensionFieldDecorator(webDriver) , page); return page; }) .apply(pageObjectClass); po.ifPresentOrElse( success -> pageObjectInvocationContextProvider.logger().fine("pageobject of type " + pageObjectClass.getSimpleName() + " was created with " + webdriverName().apply(webdriver())) , failed -> pageObjectInvocationContextProvider.logger().warning("was not able to create PageObjectInstance " + failed) ); po.ifAbsent(() -> { throw new ParameterResolutionException("was not able to create PageObjectInstance of type " + pageObjectClass); }); return po.get(); } });
@Override public void beforeEach(Method testMethod, ExtensionContext context) throws Exception { int port = preparePort(context); prepareIP(context); ((CheckedFunction<Integer, Server>) p -> new TServer().startServer(p)).apply(port) .ifPresentOrElse(ok -> { Result<Server> server = Result.success(ok); store().apply(context).put(TSERVER_SERVER, server); logger().info("Started server on port: " + port); }, failed -> { String message = "failed to start TServer for port " + port + " -> " + failed; logger().warning(message); throw new RuntimeException(message); }); }
@Test @DisplayName("build browserstack config") void test003() { Result<Properties> apply = propertyReader().apply(CONFIG_FOLDER + "config-003"); Properties configProperties = apply.get(); WebdriversConfig config = factory.createFromProperies(configProperties); assertEquals(1, config.getGridConfigs().size()); GridConfig genericGridConfig = config.getGridConfigs().stream() .filter(grid -> grid.getName().equals("browserstack")).findFirst().get(); assertEquals("https://danielnordhoffve1:abc@hub-cloud.browserstack.com/wd/hub", genericGridConfig.getTarget()); assertEquals(Type.BROWSERSTACK, genericGridConfig.getType()); }
@Test @DisplayName("build saucelabs config") void test004() { Result<Properties> apply = propertyReader().apply(CONFIG_FOLDER + "config-004"); Properties configProperties = apply.get(); WebdriversConfig config = factory.createFromProperies(configProperties); assertEquals(1, config.getGridConfigs().size()); GridConfig sauceLabsGridConfig = config.getGridConfigs().stream() .filter(grid -> grid.getName().equals("saucelabs")).findFirst().get(); assertEquals("https://dve81:abc@ondemand.saucelabs.com:443/wd/hub", sauceLabsGridConfig.getTarget()); assertEquals(Type.SAUCELABS, sauceLabsGridConfig.getType()); }
@Test @DisplayName("build grid config without os and versions") void test005() { Result<Properties> apply = propertyReader().apply(CONFIG_FOLDER + "config-005"); Properties configProperties = apply.get(); WebdriversConfig config = factory.createFromProperies(configProperties); assertEquals(1, config.getGridConfigs().size()); GridConfig genericGridConfig = config.getGridConfigs().stream() .filter(grid -> grid.getName().equals("generic")).findFirst().get(); assertEquals(2, genericGridConfig.getDesiredCapabilities().size()); assertEquals(Platform.ANY, genericGridConfig.getDesiredCapabilities().get(0).getPlatform()); assertEquals("", genericGridConfig.getDesiredCapabilities().get(0).getVersion()); assertEquals(Platform.ANY, genericGridConfig.getDesiredCapabilities().get(1).getPlatform()); assertEquals("", genericGridConfig.getDesiredCapabilities().get(1).getVersion()); } }
@Test @DisplayName("build from properties") void test002() { Result<Properties> apply = propertyReader().apply(CONFIG_FOLDER + "config-002"); Properties configProperties = apply.get();
@Test @DisplayName("test reading properties") @Disabled("test is not not generic enough") void test001() { Properties properties = BrowserDriverFunctions.propertyReader() .apply(BrowserDriverFunctions.CONFIG_FOLDER + "config").get(); final String unittestingTarget = valueOf(properties.get("unittesting.target")).trim(); logger().info("unittestingTarget -> #" + unittestingTarget + "#"); match( matchCase(() -> failure("no matching unittesting.target..")), matchCase(() -> "locale".equals(unittestingTarget), () -> success(TRUE)), matchCase(() -> "selenoid.rapidpm.org".equals(unittestingTarget), () -> success(TRUE)), matchCase(() -> "selenoid-server".equals(unittestingTarget), () -> success(TRUE)) ) .ifAbsent(fail("no expected property value found for unittesting.target.. " + unittestingTarget)); } }