Skip to content

Instantly share code, notes, and snippets.

View sauceaaron's full-sized avatar
💭
Cooking ribs

Aaron Evans sauceaaron

💭
Cooking ribs
View GitHub Profile
import com.saucelabs.saucerest.SauceREST;
import java.io.File;
import java.io.IOException;
public class UploadFileToSauceStorage
{
static String SAUCE_USERNAME = System.getenv("SAUCE_USERNAME");
static String SAUCE_ACCESS_KEY = System.getenv("SAUCE_ACCESS_KEY");
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class Locking
{
private static final ReadWriteLock locker = new ReentrantReadWriteLock();
public void lock()
{
#!/bin/bash
defaults write com.apple.Safari WarnAboutFraudulentWebsites false
@sauceaaron
sauceaaron / DriverFactory.java
Last active November 17, 2018 00:24
Selenium DriverFactory with Queue to control session concurrency
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.URL;
public class DriverFactory
{
URL url;
SessionQueue queue;
@sauceaaron
sauceaaron / BrowserConfig.java
Last active November 20, 2018 15:38
Load browser configuration from properties file, environment variable, command line
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class BrowserConfig
{
public String getBrowserPath()
{
String browserPath = "/Applications/Firefox.app/Contents/MacOS/firefox"; // default
@sauceaaron
sauceaaron / testCustomerDeviceAndBaristaTerminalTogether.java
Last active December 6, 2018 15:46
Use separate Selenium and Appium sessions together to test web and mobile app interaction.
public void testCustomerDeviceAndBaristaTerminalTogether()
{
// Create two sessions in one test -- one on a browser for the barista and one on a mobile device for the customer
browser = new RemoteWebDriver(seleniumServerURL, browserCapabilites);
phone = new AppiumDriver(appiumServerURL, deviceCapabilities);
// Barista logs into terminal app in browser
browser.get(baristaApp.loginPage.url);
browser.findElement(baristaApp.loginPage.usernameField).sendKeys(barista.username);
browser.findElement(baristaApp.loginPage.passwordField).sendKeys(barista.password);
@sauceaaron
sauceaaron / testCustomerDeviceWithBaristaApi.java
Created December 6, 2018 15:47
Test Appium session interacting with the Barista API
public void testCustomerDeviceWithBaristaApi()
{
// Create a session for the customer app
phone = new AppiumDriver(sauceURL, deviceCapabilities);
// Create an API service that interacts with the mobile app
baristaAPI = new BaristaAPI(barristUsername, baristaPassword);
// Customer logs into mobile app on mobile device
phone.findElement(mobileApp.loginScreen.usernameField).sendKeys(customer.username);
@sauceaaron
sauceaaron / SauceExecutor.java
Last active April 6, 2019 16:09
SauceExecutor
package com.saucelabs.common;
import com.google.gson.Gson;
import com.sun.deploy.util.StringUtils;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class SauceStorageAPI
{
public String uploadAppToSauceStorage(String filename) throws IOException
{
System.out.println("uploading file to sauce storage: " + filename);
SauceREST api = new SauceREST(SAUCE_USERNAME, SAUCE_ACCESS_KEY);
File appLocalFile = new File(filename);
String appName = appLocalFile.getName();
@sauceaaron
sauceaaron / ghost_session.py
Last active May 16, 2019 20:37
Hijack an existing webdriver session and keep it running in the background while you debug
#!/usr/bin/env python
# ghost_session.py
# usage: python ghost_session.py <running_session_id>
from os import environ
from sys import argv
from time import sleep
from selenium import webdriver
# get the session id you want to take over from command line argument