============================
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.
.. seealso::
- `Asko Soukka: Cross-browser test your Plone add-on with Robot Framework, Travis-CI and Sauce Labs `_