Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
JENKINS-15261 Present separate browser axis for SeleniumRC/WebDriver
  • Loading branch information
rossrowe committed Oct 12, 2012
1 parent b522501 commit 044c84c
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 32 deletions.
51 changes: 19 additions & 32 deletions src/main/java/hudson/plugins/sauce_ondemand/BrowserAxis.java
Expand Up @@ -39,13 +39,11 @@

/**
* {@link Axis} that configures {@code SELENIUM_DRIVER}.
*
* @author Kohsuke Kawaguchi
*/
public class BrowserAxis extends Axis {

private static final Logger logger = Logger.getLogger(BrowserAxis.class.getName());

@DataBoundConstructor
public abstract class BrowserAxis extends Axis {

public BrowserAxis(List<String> values) {
super("SELENIUM_DRIVER", values);
}
Expand All @@ -54,38 +52,27 @@ public boolean hasValue(String v) {
return getValues().contains(v);
}

// TODO: more hooks to inject variables and values
// TODO: matrix or a list as the UI?

@Extension
public static class DescriptorImpl extends AxisDescriptor {
@Override
public String getDisplayName() {
return "Sauce OnDemand Cross-browser tests";
}

public List<com.saucelabs.ci.Browser> getBrowsers() {
try {
return BrowserFactory.getInstance().getWebDriverBrowsers();
} catch (IOException e) {
logger.log(Level.WARNING, "Error retrieving browsers from Saucelabs", e);
} catch (JSONException e) {
logger.log(Level.WARNING, "Error parsing JSON response", e);
}
return Collections.emptyList();
}
}

/**
* Adds the browser URI to the environment map. Will override any values set in {@link SauceOnDemandBuildWrapper#setUp(hudson.model.AbstractBuild, hudson.Launcher, hudson.model.BuildListener)}
*
* @param value
* @param map
*/
public void addBuildVariable(String value, Map<String,String> map) {
com.saucelabs.ci.Browser b = BrowserFactory.getInstance().webDriverBrowserForKey(value);
if (b!=null) { // should never be null, but let's be defensive in case of downgrade.
map.put(getName(), b.getUri());
map.put("arguments", "-D" + getName() + "=" + b.getUri());
public void addBuildVariable(String value, Map<String, String> map) {
com.saucelabs.ci.Browser browserInstance = BrowserFactory.getInstance().webDriverBrowserForKey(value);
if (browserInstance != null) { // should never be null, but let's be defensive in case of downgrade.
map.put(getName(), browserInstance.getUri());
map.put(SauceOnDemandBuildWrapper.SELENIUM_PLATFORM, browserInstance.getPlatform().toString());
map.put(SauceOnDemandBuildWrapper.SELENIUM_BROWSER, browserInstance.getBrowserName());
map.put(SauceOnDemandBuildWrapper.SELENIUM_VERSION, browserInstance.getVersion());
StringBuilder builder = new StringBuilder();
builder.append("-D").append(getName()).append('=').append(browserInstance.getUri()).
append("-D").append(SauceOnDemandBuildWrapper.SELENIUM_PLATFORM).append('=').append(browserInstance.getPlatform().toString()).
append("-D").append(SauceOnDemandBuildWrapper.SELENIUM_BROWSER).append('=').append(browserInstance.getBrowserName()).
append("-D").append(SauceOnDemandBuildWrapper.SELENIUM_VERSION).append('=').append(browserInstance.getVersion());
map.put("arguments", "-D" + getName() + "=" + browserInstance.getUri());
}
}


}
46 changes: 46 additions & 0 deletions src/main/java/hudson/plugins/sauce_ondemand/SeleniumRCAxis.java
@@ -0,0 +1,46 @@
package hudson.plugins.sauce_ondemand;

import com.saucelabs.ci.Browser;
import com.saucelabs.ci.BrowserFactory;
import hudson.Extension;
import hudson.matrix.AxisDescriptor;
import org.json.JSONException;
import org.kohsuke.stapler.DataBoundConstructor;

import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* @author Ross Rowe
*/
public class SeleniumRCAxis extends BrowserAxis {

private static final Logger logger = Logger.getLogger(SeleniumRCAxis.class.getName());

@DataBoundConstructor
public SeleniumRCAxis(List<String> values) {
super(values);
}

@Extension
public static class DescriptorImpl extends AxisDescriptor {
@Override
public String getDisplayName() {
return "Sauce OnDemand SeleniumRC tests";
}

public List<Browser> getBrowsers() {
try {
return BrowserFactory.getInstance().getSeleniumBrowsers();
} catch (IOException e) {
logger.log(Level.WARNING, "Error retrieving browsers from Saucelabs", e);
} catch (JSONException e) {
logger.log(Level.WARNING, "Error parsing JSON response", e);
}
return Collections.emptyList();
}
}
}
45 changes: 45 additions & 0 deletions src/main/java/hudson/plugins/sauce_ondemand/WebDriverAxis.java
@@ -0,0 +1,45 @@
package hudson.plugins.sauce_ondemand;

import com.saucelabs.ci.Browser;
import com.saucelabs.ci.BrowserFactory;
import hudson.Extension;
import hudson.matrix.AxisDescriptor;
import org.json.JSONException;
import org.kohsuke.stapler.DataBoundConstructor;

import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* @author Ross Rowe
*/
public class WebDriverAxis extends BrowserAxis {
private static final Logger logger = Logger.getLogger(WebDriverAxis.class.getName());

@DataBoundConstructor
public WebDriverAxis(List<String> values) {
super(values);
}

@Extension
public static class DescriptorImpl extends AxisDescriptor {
@Override
public String getDisplayName() {
return "Sauce OnDemand WebDriver tests";
}

public List<Browser> getBrowsers() {
try {
return BrowserFactory.getInstance().getWebDriverBrowsers();
} catch (IOException e) {
logger.log(Level.WARNING, "Error retrieving browsers from Saucelabs", e);
} catch (JSONException e) {
logger.log(Level.WARNING, "Error parsing JSON response", e);
}
return Collections.emptyList();
}
}
}

0 comments on commit 044c84c

Please sign in to comment.