Integrate with Sauce Labs¶
Register an account for http://saucelabs.com/ with the Open Sauce plan. Derive username from product name. For example, myproduct. Use your own contact email for the beginning. It can be changed later.
Install travis-gem for your active Ruby-installation:
$ sudo gem install travis
Log in to Sauce Labs to see your Sauce Labs access key (at the bottom of the left column).
Encrypt Sauce Labs credentials into .travis.yml:
$ travis encrypt SAUCE_USERNAME=... -r gh-user/myproduct --add $ travis encrypt SAUCE_ACCESS_KEY=... -r hg-user/myproduct --add
Update .travis.yml to set up the Sauce Labs connection before tests:
language: python python: '2.7' addons: sauce_connect: - username: $SAUCE_USERNAME - access_key: $SAUCE_ACCESS_KEY install: - mkdir -p buildout-cache/downloads - python bootstrap.py -c travis.cfg - bin/buildout -N -t 3 -c travis.cfg script: bin/test env: global: - secure: ... - secure: ... - ROBOT_BUILD_NUMBER=travis-$TRAVIS_BUILD_NUMBER - ROBOT_REMOTE_URL=http://$SAUCE_USERNAME:$SAUCE_ACCESS_KEY@ondemand.saucelabs.com:80/wd/hub - ROBOT_DESIRED_CAPABILITIES=tunnel-identifier:$TRAVIS_JOB_NUMBER
Note
If you already have an env section, for instance to define different versions of Plone like this:
env:
- PLONE_VERSION=4.0
- PLONE_VERSION=4.1
- PLONE_VERSION=4.2
- PLONE_VERSION=4.3
you will need to declare those variables in a matrix section, like this:
env:
matrix:
- PLONE_VERSION=4.0
- PLONE_VERSION=4.1
- PLONE_VERSION=4.2
- PLONE_VERSION=4.3
global:
- secure: ...
- secure: ...
- ROBOT_BUILD_NUMBER=travis-$TRAVIS_BUILD_NUMBER
- ROBOT_REMOTE_URL=http://$SAUCE_USERNAME:$SAUCE_ACCESS_KEY@ondemand.saucelabs.com:80/wd/hub
- ROBOT_DESIRED_CAPABILITIES=tunnel-identifier:$TRAVIS_JOB_NUMBER
Update your test suites to use SauceLabs test browser by including saucelabs.robot resource and updating your Test Setup and Test Teardown to use SauceLabs-supporting keywords (with these changes the test suites will still continue to work also without SauceLabs):
*** Settings *** ... Resource plone/app/robotframework/saucelabs.robot Test Setup Open SauceLabs test browser Test Teardown Run keywords Report test status Close all browsers ...
Update travis.cfg to allow downloading robotframework-packages:
[buildout] ... allow-hosts += code.google.com robotframework.googlecode.com
Running Sauce Labs build manually¶
Download and unzip http://saucelabs.com/downloads/Sauce-Connect-latest.zip, then start Sauce-Connect with:
$ java -jar Sauce-Connect.jar <your_sauce_username> <your_sauce_accesskey> -i manual
Start bin/robot-server:
$ bin/robot-server my.product.testing.ROBOT_TESTING
Run tests with bin/robot:
$ bin/robot -v REMOTE_URL:http://SAUCE_USERNAME:SAUCE_ACCESS_KEY@ondemand.saucelabs.com:80/wd/hub -v BUILD_NUMBER:manual -v DESIRED_CAPABILITIES:tunnel-identifier:manual src/my/product/tests/test_product.robot
or
Create an argument file, e.g. saucelabs_arguments.txt:
-v REMOTE_URL:http://SAUCE_USERNAME:SAUCE_ACCESS_KEY@ondemand.saucelabs.com:80/wd/hub -v BUILD_NUMBER:manual -v DESIRED_CAPABILITIES:tunnel-identifier:manual
Execute bin/robot with the argument file option:
$ bin/robot -A saucelabs_arguments.txt src/my/product/tests/test_product.robot