Open Sauce page. Steps involved:
- Set up your tests to run on Travis CI
- Configure Travis CI to start Sauce Connect
- Configure your Selenium tests to run on Sauce Labs
- Provide additional details to Sauce
What is Travis CI?
Setup Your Tests to Run on Travis CI
There's multiple tutorials out there to get started using Travis CI. One of my favorite things about Travis is how easy it is to configure and get started. Check out the official Travis CI docs to get started in your own programming language. For running your Selenium tests, remember to install the right dependencies, including the Selenium client bindings, like I did in my project. Also, make sure you make Travis start your webapp before the tests start. Your application needs to be serving pages to be able to test it using our browsers :)
Configure Travis CI to Start Sauce Connect
Sauce Connect creates a magical rainbow tunnel that will allow the Sauce browsers driven by your Selenium tests to access the Web Application that your Travis build starts. Once a Sauce Connect tunnel is running, browsers in our cloud can use it to hit localhost, internal IPs or even to just proxy the public internet through the right location. I've created a small Bash script that takes care of downloading, starting and waiting for Connect to be ready. To use Sauce Connect in your build, all you need to do is curl and run this script in your .travis.yml before_script section as I did in my project:
before_script: - curl https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash
Configure Your Selenium Tests to Run on Sauce Labs
on the cssify codebase.
self.username = os.environ['SAUCE_USERNAME'] self.key = os.environ['SAUCE_ACCESS_KEY'] hub_url = "%s:%s@localhost:4445" % (self.username, self.key) self.driver = webdriver.Remote(desired_capabilities=self.caps, command_executor="http://%s/wd/hub" % hub_url)
Now for these browsers to be able to hit the AUT when opening localhost, you need to specify an additional Desired Capability, tunnel-identifier. The value this capability should be set to is stored in the environment variable TRAVIS_JOB_NUMBER. You can find an example in the cssify codebase for this as well.
self.caps['tunnel-identifier'] = os.environ['TRAVIS_JOB_NUMBER']
Provide Additional Details to Sauce
In addition to running your tests in real browsers using the cloud, there's additional details you can provide to speed up debugging and navigating test results. In the cssify tests you can find some examples Desired Capabilities that Sauce uses and that you can pull from Travis CI's environment variables.
self.caps['build'] = os.environ['TRAVIS_BUILD_NUMBER'] self.caps['tags'] = [os.environ['TRAVIS_PYTHON_VERSION'], 'CI']
You're set! You are now running your tests using Travis CI, they start a Sauce tunnel on their own and drive real browsers in the cloud. Time to start thinking about running these in parallel to speed up your builds now! Here are examples of what your Travis CI build should look and what you'll see from the Sauce side.