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 *** Force Tags wip-not_in_docs ... 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