// Path: src/tests/selenium/phabricator.sprint/src/org/phabricator/sprint/selenium/testing/DevMode.java
// public static boolean isInDevMode() {
//   return isInDevMode("/org/openqa/selenium/firefox/webdriver.xpi");
// }
// 
// Path: src/tests/selenium/phabricator.sprint/src/org/phabricator/sprint/selenium/testing/drivers/Browser.java
// public enum Browser {
// 
//   android,
//   android_real_phone,
//   chrome,
//   ff,
//   htmlunit {
//     @Override
//     public boolean isJavascriptEnabled() {
//       return false;
//     }
//   },
//   htmlunit_js,
//   ie,
//   ipad,
//   iphone,
//   none, // For those cases where you don't actually want a browser
//   opera,
//   opera_mobile,
//   phantomjs,
//   safari;
// 
//   private static final Logger log = Logger.getLogger(Browser.class.getName());
// 
//   public static Browser detect() {
//     String browserName = "htmlunit";
//     if (browserName == null) {
//       log.info("No browser detected, returning null");
//       return null;
//     }
// 
//     try {
//       return Browser.valueOf(browserName);
//     } catch (IllegalArgumentException e) {
//       log.severe("Cannot locate matching browser for: " + browserName);
//       return null;
//     }
//   }
// 
//   public boolean isJavascriptEnabled() {
//     return true;
//   }
// 
// }


import com.google.common.base.Throwables;
import static org.phabricator.sprint.selenium.testing.DevMode.isInDevMode;
import org.junit.internal.runners.model.ReflectiveCallable;
import org.junit.internal.runners.statements.Fail;
import org.junit.runner.Description;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.Statement;
import org.phabricator.sprint.selenium.testing.drivers.Browser;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
package org.phabricator.sprint.selenium.testing;


public class SeleniumTestRunner extends BlockJUnit4ClassRunner {


  /**
   * Creates a BlockJUnit4ClassRunner to run {@code klass}
   *
   * @param klass The class under test
   * @throws org.junit.runners.model.InitializationError
   *          if the test class is malformed.
   */
  public SeleniumTestRunner(Class<?> klass) throws InitializationError {
    super(klass);

    Browser browser = Browser.detect();
// Path: src/tests/selenium/phabricator.sprint/src/org/phabricator/sprint/selenium/testing/DevMode.java
// public static boolean isInDevMode() {
//   return isInDevMode("/org/openqa/selenium/firefox/webdriver.xpi");
// }
// 
// Path: src/tests/selenium/phabricator.sprint/src/org/phabricator/sprint/selenium/testing/drivers/Browser.java
// public enum Browser {
// 
//   android,
//   android_real_phone,
//   chrome,
//   ff,
//   htmlunit {
//     @Override
//     public boolean isJavascriptEnabled() {
//       return false;
//     }
//   },
//   htmlunit_js,
//   ie,
//   ipad,
//   iphone,
//   none, // For those cases where you don't actually want a browser
//   opera,
//   opera_mobile,
//   phantomjs,
//   safari;
// 
//   private static final Logger log = Logger.getLogger(Browser.class.getName());
// 
//   public static Browser detect() {
//     String browserName = "htmlunit";
//     if (browserName == null) {
//       log.info("No browser detected, returning null");
//       return null;
//     }
// 
//     try {
//       return Browser.valueOf(browserName);
//     } catch (IllegalArgumentException e) {
//       log.severe("Cannot locate matching browser for: " + browserName);
//       return null;
//     }
//   }
// 
//   public boolean isJavascriptEnabled() {
//     return true;
//   }
// 
// }


// Path: src/tests/selenium/phabricator.sprint/src/org/phabricator/sprint/selenium/testing/SeleniumTestRunner.java
import com.google.common.base.Throwables;
import static org.phabricator.sprint.selenium.testing.DevMode.isInDevMode;
import org.junit.internal.runners.model.ReflectiveCallable;
import org.junit.internal.runners.statements.Fail;
import org.junit.runner.Description;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.Statement;
import org.phabricator.sprint.selenium.testing.drivers.Browser;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

package org.phabricator.sprint.selenium.testing;


public class SeleniumTestRunner extends BlockJUnit4ClassRunner {


  /**
   * Creates a BlockJUnit4ClassRunner to run {@code klass}
   *
   * @param klass The class under test
   * @throws org.junit.runners.model.InitializationError
   *          if the test class is malformed.
   */
  public SeleniumTestRunner(Class<?> klass) throws InitializationError {
    super(klass);

    Browser browser = Browser.detect();
    if (browser == null && isInDevMode()) {