Skip to content
No description, website, or topics provided.
Java C# Ruby Python Makefile
Branch: master
Clone or download

README.md

Sauce Bindings

Codacy Badge Travis Status codecov PRs welcome License: MIT Average time to resolve an issue

The Idea - Making Sauce Simple To Use

Writing and maintaining automated good test frameworks is hard work. Sauce Labs wants to help make this work simpler. We've created Sauce Bindings, a collection of tools to make connecting to and working with Sauce Labs simple.

Sauce Bindings has three main goals:

  • Providing test developers with a wrapper or binding for each programming language commonly used with web and mobile testing,
  • Providing a concise API for connecting to Sauce Labs in test frameworks and making use of Sauce Labs features,
  • Providing an excellent developer user experience for using Sauce Labs in a straightforward, intuitive way.

The focus of this project is to make using Sauce Labs simple so that test developers can focus on developing the best automated test frameworks possible for their teams.

Supported Language Bindings

This project is a cross-language effort, with bindings available in the following languages:

Each binding balances having a shared API and feature set while being idiomatic to the language and ecosystem of the binding. Features should be available in all language bindings.

Getting Started and Prerequisites

To get started using Sauce Bindings, install your preferred language binding(s) based on these language documentation:

For all bindings, the following is required:

  • A valid Sauce Labs account
  • Sauce Labs username and access key values set on the environment tests will be executing on as the following environment variables:
SAUCE_USERNAME='valid.username'
SAUCE_ACCESS_KEY='valid.key'

Here are instructions on how to set environment variables on Windows 10, MacOS and Linux.

Features and Style

Sauce Bindings should be a tool for both novice and experienced test developers. This means providing basic functionality such as being able to start a browser session on Sauce Labs with minimal code as well as creating Sauce Labs sessions directly from W3C options.

Here's a pseudocode example of creating a browser session on Sauce Labs with Sauce Bindings:

sauce = new SauceSession();

sauce.start();

sauce.driver.get("https://www.saucelabs.com")

sauce.stop();

This creates a new sauce object that uses reasonable defaults for browser options, starts a session on Sauce Labs, visits the Sauce Labs website then closes the browser session. This pseudocode sample idealizes the goals of Sauce Bindings: starting a session on Sauce with reasonable defaults in a few lines of code. It is simple, straightforward, readable and translates well across multiple programming languages.

Building and Installing

Currently each binding follows its own language-specific build process for building and installing each language binding.

Tests

Currently each binding has tests that can be executed in a language-specific way.

Contributing

Sauce Labs is proudly based on open source technologies and encourages open source projects like Sauce Bindings. If you would like to contribute there are several ways of doing so:

  • Development: Bug fixes and implementing new features are welcome. There are also good first issues labeled if you'd like to get started on development but don't know how. Please fork this this repository and open a pull request if you'd like to contribute this way.
  • Features and Issues: See something you'd like fixed? Have a good idea for how to improve Sauce Bindings? Create an issue or add to an existing issue.
  • Documentation: A great way to start working with any open source project is through improving documentation. You can add or edit doc strings, either in a pull request or directly from GitHub. You can edit a file in GitHub as long as you're signed in and create a pull request from those edits.

Special Thanks

Special thanks to Aaron Evans. Nikolay Advolodkin worked with him in the beginning through several working sessions to create the Alpha version of these bindings. Although Aaron has not contributed much code, he has been instrumental in laying the foundation for the Java bindings :)

You can’t perform that action at this time.