All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kurento.test.config.BrowserConfig Maven / Gradle / Ivy

Go to download

This project contains test cases for testing Kurento Java Client and Kurento Media Server.

There is a newer version: 6.18.0
Show newest version
/*
 * (C) Copyright 2015 Kurento (http://kurento.org/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package org.kurento.test.config;

import static org.kurento.test.config.TestConfiguration.SAUCELAB_KEY_PROPERTY;
import static org.kurento.test.config.TestConfiguration.SAUCELAB_USER_PROPERTY;
import static org.kurento.test.config.TestConfiguration.SELENIUM_VERSION;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.kurento.test.browser.Browser;
import org.kurento.test.browser.WebPageType;

/**
 * Browser configuration based for JSON test scenarios.
 *
 * @author Boni Garcia ([email protected])
 * @since 5.1.0
 */
public class BrowserConfig {

  public static final String BROWSER = "browser";
  public static final String PRESENTER = "presenter";
  public static final String VIEWER = "viewer";

  private List> executions;

  public BrowserConfig() {
    executions = new ArrayList<>();
  }

  public List> getExecutions() {
    return executions;
  }

  public void setExecutions(List> executions) {
    this.executions = executions;
  }

  @Override
  public String toString() {
    return "BrowserConfig [executions=" + executions + "]";
  }

  public Collection getTestScenario() {
    Collection tests = new ArrayList<>();
    for (Map browser : executions) {

      TestScenario test = new TestScenario();
      for (String key : browser.keySet()) {
        Browser browserClient = null;
        BrowserInstance instance = browser.get(key);

        Browser.Builder builder = new Browser.Builder().browserType(instance.getBrowserType());

        if (instance.getVideo() != null) {
          builder = builder.video(instance.getVideo());
        }
        if (instance.getInstances() > 0) {
          builder = builder.numInstances(instance.getInstances());
        }
        if (instance.getBrowserPerInstance() > 0) {
          builder = builder.browserPerInstance(instance.getBrowserPerInstance());
        }
        if (instance.getNode() != null) {
          builder = builder.node(instance.getNode());
        }
        if (instance.getLogin() != null) {
          builder = builder.login(instance.getLogin());
        }
        if (instance.getPasswd() != null) {
          builder = builder.passwd(instance.getPasswd());
        }
        if (instance.getKey() != null) {
          builder = builder.pem(instance.getKey());
        }
        if (instance.getPort() > 0) {
          builder = builder.serverPort(instance.getPort());
        }
        if (instance.isEnableScreenCapture()) {
          builder = builder.enableScreenCapture();
        }
        if (instance.getProtocol() != null) {
          builder = builder.protocol(Protocol.valueOf(instance.getProtocol().toUpperCase()));
        }
        if (instance.getPath() != null) {
          builder = builder.webPageType(WebPageType.value2WebPageType(instance.getPath()));
        }
        if (instance.getHost() != null) {
          builder = builder.host(instance.getHost());
        }
        if (instance.getParentTunnel() != null) {
          builder = builder.parentTunnel(instance.getParentTunnel());
        }
        if (instance.isAvoidProxy()) {
          builder.avoidProxy();
        }
        if (instance.getExtensions() != null) {
          builder = builder.extensions(instance.getExtensions());
        }
        if (instance.getSaucelabsUser() != null) {
          System.setProperty(SAUCELAB_USER_PROPERTY, instance.getSaucelabsUser());
        }
        if (instance.getSaucelabsKey() != null) {
          System.setProperty(SAUCELAB_KEY_PROPERTY, instance.getSaucelabsKey());
        }
        if (instance.getSeleniumVersion() != null) {
          System.setProperty(SELENIUM_VERSION, instance.getSeleniumVersion());
        }
        if (instance.isLocal()) {
          browserClient = builder.scope(BrowserScope.LOCAL).build();
        } else if (instance.isRemote()) {
          browserClient = builder.scope(BrowserScope.REMOTE).build();
        } else if (instance.isDocker()) {
          browserClient = builder.scope(BrowserScope.DOCKER).build();
        } else if (instance.isSauceLabs()) {
          if (instance.getVersion() == null || instance.getPlatformType() == null) {
            throw new RuntimeException(
                "Platform and browser version should be configured in saucelabs tests");
          }
          browserClient = builder.scope(BrowserScope.SAUCELABS)
              .browserVersion(instance.getVersion()).platform(instance.getPlatformType()).build();
        } else {
          throw new RuntimeException("Unknown scope in JSON configuration: " + instance.getScope());
        }
        test.addBrowser(key, browserClient);
      }
      tests.add(new Object[] { test });
    }
    return tests;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy