Travis CI Sauce Labs-Support

Die Nutzung von Sauce Labs zusammen mit dem Robot- Framework ist ähnlich einem eigenen Selenium-Grid. Vor allem erfordert es, dass die Browser Passwörter eingeben können. Dies kann mit einigen wenigen Variablen in vs_buildout/src/vs.registration/src/vs/registration/tests/robot_test.txt konfiguriert werden:

*** Settings ***

Library  Selenium2Library  timeout=10  implicit_wait=0.5

Suite Setup  Start browser
Suite Teardown  Close All Browsers

*** Variables ***

${ZOPE_HOST} =  localhost
${ZOPE_PORT} =  55001
${ZOPE_URL} =  http://${ZOPE_HOST}:${ZOPE_PORT}

${PLONE_SITE_ID} =  plone
${PLONE_URL} =  ${ZOPE_URL}/${PLONE_SITE_ID}

${BROWSER} =  Firefox
${REMOTE_URL} =
${DESIRED_CAPABILITIES} =  platform:Linux
${BUILD_NUMBER} =  manual

*** Test Cases ***

Plone site
    [Tags]  start
    Go to  ${PLONE_URL}
    Page should contain  Plone site

*** Keywords ***

Start browser
    ${BUILD_INFO} =  Set variable
    ...           build:${BUILD_NUMBER},name:${SUITE_NAME} | ${TEST_NAME}
    Open browser  ${PLONE_URL}  ${BROWSER}
    ...           remote_url=${REMOTE_URL}
    ...           desired_capabilities=${DESIRED_CAPABILITIES},${BUILD_INFO}

Die Variablen bedeuten im Einzelnen:

ZOPE_HOST

Angabe for den Host des ZServer.

Dar Standardwert ist localhost. For Tests mit dem Internet Explorer ist jedoch die Angabe 0.0.0.0 erforderlich.

ZOPE_PORT

Angabe des Ports, an dem der ZServer lauscht.

Der Standardwert ist 55001.

ZOPE_URL

Root-Variable für die URL der Zope-Anwendung.

PLONE_SITE_ID

ID der Plone-Site.

PLONE_URL

URL der Plone-Site.

BROWSER

Browser, mt dem der Test durchgeführt werden soll.

REMOTE_URL

URL des zu verwendenden Selenium-Hubs.

DESIRED_CAPABILITIES

spezifiziert verschiedene Parameter des Selenium-Hubs, z.B. die Browser- Version.

BUILD_NUMBER

Travis-CI-Build auf Sauce Labs.

Nun wird eine .travis.yml-Datei erstellt um Travis-CI mitzuteilen, welches Envirinment verwendet und welche Tests ausgeführt werden sollen:

---
language: python
python: '2.7'
install:
- mkdir -p buildout-cache/eggs
- mkdir -p buildout-cache/downloads
- python bootstrap.py -c travis.cfg
- ./bin/buildout -N -t 3 -c travis.cfg
- curl -O http://saucelabs.com/downloads/Sauce-Connect-latest.zip
- unzip Sauce-Connect-latest.zip
- java -jar Sauce-Connect.jar $SAUCE_USERNAME $SAUCE_ACCESS_KEY -i $TRAVIS_JOB_ID -f CONNECTED &
- JAVA_PID=$!
before_script:
- bash -c "while [ ! -f CONNECTED ]; do sleep 2; done"
script: ./bin/test
after_script:
- kill $JAVA_PID
env:
  global:
  - ROBOT_BUILD_NUMBER=travis-$TRAVIS_BUILD_NUMBER
  -  ROBOT_REMOTE_URL=http://$SAUCE_USERNAME:$SAUCE_ACCESS_KEY@ondemand.saucelabs.com:80/wd/hub
  matrix:
  - ROBOT_BROWSER=firefox ROBOT_DESIRED_CAPABILITIES=tunnel-identifier:$TRAVIS_JOB_ID
  - ROBOT_BROWSER=chrome ROBOT_DESIRED_CAPABILITIES=tunnel-identifier:$TRAVIS_JOB_ID
  - ROBOT_BROWSER=internetexplorer ROBOT_DESIRED_CAPABILITIES=tunnel-identifier:$TRAVIS_JOB_ID
SAUCE_USERNAME und SAUCE_ACCESS_KEY

Nutzername und Passwort verschlüsselt als Umgebungsvariable.

travis encrypt schreibt die verschlüsselten Werte direkt in die .travis.yml-Datei:

$ travis encrypt SAUCE_USERNAME=myusername -r mygithubname/example.product --add env.global
$ travis encrypt SAUCE_ACCESS_KEY=myaccesskey -r mygithubname/example.product --add env.global
matrix

Aktuell erlaubt Sauce Labs drei gleichzeitige Verbindungen für Open-Source- Projekte, z.B. für drei verschiedene Browser.

Achten Sie bei Open-Source-Projekten darauf, dass Sie nicht Ihren privaten Zugang nutzen sondern denjenigen des Projekts. Hierfür ist die öffentliche URL des Repository erforderlich.

Schließlich sollten die Travis-CI-Tests für Ihr Produkt auf Travis-CI.org oder GitHub eingerichtet werden.