package org.arquillian.cube.docker.drone; import org.arquillian.cube.docker.graphene.location.DockerCubeCustomizableURLResourceProvider; import org.jboss.arquillian.core.spi.LoadableExtension; import org.jboss.arquillian.drone.spi.Configurator; import org.jboss.arquillian.drone.spi.Destructor; import org.jboss.arquillian.drone.spi.Instantiator; import org.jboss.arquillian.drone.webdriver.factory.ChromeDriverFactory; import org.jboss.arquillian.drone.webdriver.factory.DockerRemoteWebDriverFactory; import org.jboss.arquillian.drone.webdriver.factory.FirefoxDriverFactory; import org.jboss.arquillian.drone.webdriver.factory.HtmlUnitDriverFactory; import org.jboss.arquillian.graphene.location.CustomizableURLResourceProvider; import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider; /** * Cube Drone Extension register. */ public class CubeDockerDroneExtension implements LoadableExtension { @Override public void register(ExtensionBuilder extensionBuilder) { extensionBuilder.observer(InstallSeleniumCube.class); extensionBuilder.observer(DroneOverwriteConfigurator.class); extensionBuilder.observer(CubeDroneConfigurator.class); extensionBuilder.observer(VncRecorderLifecycleManager.class); extensionBuilder.observer(VideoConversionLifecycleManager.class); overrideWebDriver(extensionBuilder, FirefoxDriverFactory.class); overrideWebDriver(extensionBuilder, ChromeDriverFactory.class); overrideWebDriver(extensionBuilder, HtmlUnitDriverFactory.class); if (isGrapheneInStandaloneMode()) { extensionBuilder.override(ResourceProvider.class, CustomizableURLResourceProvider.class, DockerCubeCustomizableURLResourceProvider.class); } } private boolean isGrapheneInStandaloneMode() { return Validate.classExists("org.jboss.arquillian.graphene.context.GrapheneContext") && !Validate.classExists("org.jboss.arquillian.container.test.impl.enricher.resource.URLResourceProvider"); } private void overrideWebDriver(ExtensionBuilder extensionBuilder, Class override) { extensionBuilder.override(Instantiator.class, override, DockerRemoteWebDriverFactory.class) .override(Configurator.class, override, DockerRemoteWebDriverFactory.class) .override(Destructor.class, override, DockerRemoteWebDriverFactory.class); } }