Package er.selenium.rc

Source Code of er.selenium.rc.StandaloneRunner

package er.selenium.rc;

import java.io.File;

import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.varia.LevelRangeFilter;

import com.webobjects.foundation.NSArray;

import er.extensions.foundation.ERXProperties;
import er.selenium.DefaultSeleniumTestFilesFinder;
import er.selenium.ERSelenium;
import er.selenium.SeleniumTest;
import er.selenium.SeleniumTestFileProcessor;
import er.selenium.filters.SeleniumCompositeTestFilter;
import er.selenium.filters.SeleniumIncludeTestFilter;
import er.selenium.filters.SeleniumOverrideOpenTestFilter;
import er.selenium.filters.SeleniumRepeatExpanderTestFilter;

public class StandaloneRunner {
  private static final Logger log = Logger.getLogger(StandaloneRunner.class);

  /**
   * @param args
   */
  public static void main(String[] args) {
        Logger root = Logger.getRootLogger();
        ConsoleAppender appender = new ConsoleAppender(new PatternLayout("%r [%t] %p %c %x - %m%n"));
        appender.setTarget("System.err");
        LevelRangeFilter filter = new LevelRangeFilter();
        filter.setLevelMin(Level.DEBUG);
        filter.setLevelMax(Level.DEBUG);
        appender.addFilter(filter);
        appender.activateOptions();
        root.addAppender(appender);
       
        appender = new ConsoleAppender(new PatternLayout());
        appender.setTarget("System.out");
        filter = new LevelRangeFilter();
        filter.setLevelMin(Level.INFO);
        filter.setLevelMax(Level.FATAL);
        appender.addFilter(filter);
        appender.activateOptions();
        root.addAppender(appender);

    ERSelenium.registerImportersExporters();
   
    File testsRoot = new File(args[0]);
    NSArray<File> testsFiles = new DefaultSeleniumTestFilesFinder().findTests(testsRoot);
    log.debug(testsFiles);
   
    String appHost = args[1];
    String host = args[2];
    int port = args.length >= 4 ? Integer.parseInt(args[3]) : 4444;
    String browserType = args.length >= 5 ? args[4] : "*firefox";
    boolean takeScreenshots = ERXProperties.booleanForKeyWithDefault("er.selenium.screenshotEnabled", false);
    String screenshotPath = ERXProperties.stringForKeyWithDefault("er.selenium.screenshotPath", System.getProperty("java.io.tmpdir"));
       
    boolean failed = false;
    SeleniumTestRCRunner runner = new SeleniumTestRCRunner(host, port, browserType, appHost);
    runner.prepare();
    try {
      for (File testFile : testsFiles) {
        SeleniumTest test = null;
        try {
          SeleniumCompositeTestFilter testFilter = new SeleniumCompositeTestFilter();
          File[] searchPaths = {testFile.getAbsoluteFile().getParentFile(), testsRoot.getAbsoluteFile()};
          testFilter.addTestFilter(new SeleniumIncludeTestFilter(new NSArray<File>(searchPaths)));
          testFilter.addTestFilter(new SeleniumRepeatExpanderTestFilter());
          testFilter.addTestFilter(new SeleniumOverrideOpenTestFilter(appHost));
         
          test = new SeleniumTestFileProcessor(testFile, testFilter).process();
          log.debug("running: " + testFile);
          runner.run(test);
         
          log.info(String.format("test '%s' PASSED", testFile));
          log.info("");
        } catch (SeleniumTestFailureException e) {
          failed = true;
         
          log.error(String.format("test '%s' FAILED: %s", testFile, e));
          log.error("test log:");
          int curCommand = 0;
          for (SeleniumTest.Element elem: test.elements()) {
            if (elem instanceof SeleniumTest.Command) {
              if (curCommand++ > e.processedCommands()) {
                break;
              }
              SeleniumTest.Command command = (SeleniumTest.Command)elem;
              log.error(String.format("%s|%s|%s", command.getName(), command.getTarget(), command.getValue()));
            }
           
          }
          if (takeScreenshots) {
            String pathPrefix = screenshotPath + "/" + testFile.getName();
            log.error("Saving screenshot to " + pathPrefix + ".png");
            if ("*firefox".equals(browserType)) {
              log.error("Saving full screenshot to " + pathPrefix + "-full.png");
              runner.captureEntirePageScreenshot(pathPrefix + "-full.png");
            }
            runner.captureScreenshot(pathPrefix + ".png");
          }
          log.error("");
        }
      }
    } finally {
      runner.finish();
    }
    System.exit(failed ? 1 : 0);
  }

}
TOP

Related Classes of er.selenium.rc.StandaloneRunner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.