@Override public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { if (ContainerInfo.class.isAssignableFrom(parameterContext.getParameter().getType())) { return containerInfo().apply(extensionContext); } else { throw new ParameterResolutionException("was not able to create ContainerInfo instance"); } }
@Override public void beforeEach(ExtensionContext extensionContext) throws Exception { logger().info("ContainerInfoExtension - beforeTestExecution "); containerInfo = containerInfo().apply(extensionContext); logger().info("ContainerInfoExtension - " + containerInfo); } }
@Override public AbstractPageObject resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { logger().info("PageObjectExtension - resolveParameter"); final WebDriver webDriver = webdriver().apply(extensionContext); Class<?> pageObjectClass = parameterContext.getParameter().getType(); try { Constructor<?> constructor = pageObjectClass.getConstructor(WebDriver.class, ContainerInfo.class); AbstractPageObject page = AbstractPageObject.class .cast(constructor.newInstance(webDriver, containerInfo().apply(extensionContext))); PageFactory.initElements( new WebDriverExtensionFieldDecorator(webDriver), page); return page; } catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { e.printStackTrace(); throw new ParameterResolutionException("was not able to create PageObjectInstance ", e); } }
@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(); } });