GridEnvironment.java
package io.github.giulong.spectrum.utils.environments;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.github.giulong.spectrum.drivers.Driver;
import io.github.giulong.spectrum.utils.Configuration;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.LocalFileDetector;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.URL;
@Slf4j
@Getter
public class GridEnvironment extends Environment {
@JsonIgnore
protected final Configuration configuration = Configuration.getInstance();
@Override
public WebDriver setupFor(final Driver<?, ?, ?> driver) {
final Configuration.Environments.Grid grid = configuration.getEnvironments().getGrid();
final URL url = grid.getUrl();
log.info("Running on grid at {}", url);
final RemoteWebDriver webDriver = (RemoteWebDriver) RemoteWebDriver
.builder()
.oneOf(driver.mergeGridCapabilitiesFrom(grid.getCapabilities()))
.address(url)
.build();
return setFileDetectorFor(webDriver, grid);
}
@Override
public void shutdown() {
log.debug("Nothing to shutdown in a grid environment");
}
RemoteWebDriver setFileDetectorFor(final RemoteWebDriver webDriver, final Configuration.Environments.Grid grid) {
if (grid.isLocalFileDetector()) {
webDriver.setFileDetector(new LocalFileDetector());
}
return webDriver;
}
}