// Path: src/main/java/com/frameworkium/core/ui/driver/remotes/Sauce.java
// public class Sauce {
// 
//   private static final SauceOnDemandAuthentication sauceAuth =
//       new SauceOnDemandAuthentication(
//           System.getenv("SAUCE_USERNAME"),
//           System.getenv("SAUCE_ACCESS_KEY"));
// 
//   private static final SauceREST client =
//       new SauceREST(
//           sauceAuth.getUsername(),
//           sauceAuth.getAccessKey());
// 
//   public static URL getURL() {
//     try {
//       return new URL(String.format(
//           "https://%s:%s@ondemand.saucelabs.com/wd/hub",
//           sauceAuth.getUsername(),
//           sauceAuth.getAccessKey()));
//     } catch (MalformedURLException e) {
//       throw new IllegalArgumentException(e);
//     }
//   }
// 
//   public static boolean isDesired() {
//     return Property.SAUCE.getBoolean();
//   }
// 
//   public static void updateJobName(SauceOnDemandSessionIdProvider sessionIdProvider, String name) {
// 
//     client.updateJobInfo(
//         sessionIdProvider.getSessionId(),
//         ImmutableMap.of("name", name));
//   }
// 
//   public static void uploadFile(File file) throws IOException {
//     client.uploadFile(file);
//   }
// 
// }


import static com.frameworkium.core.common.properties.Property.APP_PATH;
import static com.frameworkium.core.common.properties.Property.BROWSER_VERSION;
import static com.frameworkium.core.common.properties.Property.BUILD;
import static com.frameworkium.core.common.properties.Property.DEVICE;
import static com.frameworkium.core.common.properties.Property.PLATFORM_VERSION;
import static com.frameworkium.core.ui.driver.DriverSetup.Platform;
import com.frameworkium.core.ui.driver.AbstractDriver;
import com.frameworkium.core.ui.driver.Driver;
import com.frameworkium.core.ui.driver.remotes.Sauce;
import java.io.File;
import java.net.URL;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
package com.frameworkium.core.ui.driver.drivers;



public class SauceImpl extends AbstractDriver {

  private Platform platform;
  private Capabilities capabilities;
  private URL remoteURL;

  public SauceImpl(Platform platform, Capabilities capabilities) {
    this.platform = platform;
    this.capabilities = capabilities;
// Path: src/main/java/com/frameworkium/core/ui/driver/remotes/Sauce.java
// public class Sauce {
// 
//   private static final SauceOnDemandAuthentication sauceAuth =
//       new SauceOnDemandAuthentication(
//           System.getenv("SAUCE_USERNAME"),
//           System.getenv("SAUCE_ACCESS_KEY"));
// 
//   private static final SauceREST client =
//       new SauceREST(
//           sauceAuth.getUsername(),
//           sauceAuth.getAccessKey());
// 
//   public static URL getURL() {
//     try {
//       return new URL(String.format(
//           "https://%s:%s@ondemand.saucelabs.com/wd/hub",
//           sauceAuth.getUsername(),
//           sauceAuth.getAccessKey()));
//     } catch (MalformedURLException e) {
//       throw new IllegalArgumentException(e);
//     }
//   }
// 
//   public static boolean isDesired() {
//     return Property.SAUCE.getBoolean();
//   }
// 
//   public static void updateJobName(SauceOnDemandSessionIdProvider sessionIdProvider, String name) {
// 
//     client.updateJobInfo(
//         sessionIdProvider.getSessionId(),
//         ImmutableMap.of("name", name));
//   }
// 
//   public static void uploadFile(File file) throws IOException {
//     client.uploadFile(file);
//   }
// 
// }


// Path: src/main/java/com/frameworkium/core/ui/driver/drivers/SauceImpl.java
import static com.frameworkium.core.common.properties.Property.APP_PATH;
import static com.frameworkium.core.common.properties.Property.BROWSER_VERSION;
import static com.frameworkium.core.common.properties.Property.BUILD;
import static com.frameworkium.core.common.properties.Property.DEVICE;
import static com.frameworkium.core.common.properties.Property.PLATFORM_VERSION;
import static com.frameworkium.core.ui.driver.DriverSetup.Platform;
import com.frameworkium.core.ui.driver.AbstractDriver;
import com.frameworkium.core.ui.driver.Driver;
import com.frameworkium.core.ui.driver.remotes.Sauce;
import java.io.File;
import java.net.URL;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;

package com.frameworkium.core.ui.driver.drivers;



public class SauceImpl extends AbstractDriver {

  private Platform platform;
  private Capabilities capabilities;
  private URL remoteURL;

  public SauceImpl(Platform platform, Capabilities capabilities) {
    this.platform = platform;
    this.capabilities = capabilities;
    this.remoteURL = Sauce.getURL();