Marrying travis & sauce (#88)

* First swing at marrying travis & sauce

* Try to utilize the tunnel on Travis so we can test localhost

* Fix tag tyoe

* No longer spin up xwindows as saucelabs runs our browsers now
This commit is contained in:
Kevin van Zonneveld 2016-05-07 10:56:30 +02:00
parent c4793e9804
commit 36aca95a88
5 changed files with 59 additions and 18 deletions

View file

@ -7,15 +7,16 @@ addons:
- ubuntu-toolchain-r-test
packages:
- g++-4.8
sauce_connect:
username:
secure: nAMJ/d1fm9urTYsQ+1uqj6Jjf71J8rzwYBSZbTDAeUEZzAdvGc0a9H3PYWM4pnUDPo5s1c9MMetXi2XNdUbXgMKHbEnePZ2mJamqFtXMmpG8pgFmMqj+btMd7Yybt070tRsn4Vy0uBSi2H/en7F3j+grABJV+SAXqWkSB7CU1fZaN/u0DpoGBNj1ZNwkYCIhpLueYJTPRWBOodMAarXuFv5+7KFOKuZM3tF/JjsMNSSaDgTkz13BZnbX6vNPxGJJNJcyJGSaXrVW8hh1Zmvnk/XdiLy+vt7Wz1wz3A9ebiFDuydo5AAkxrLFsCJ5nGEqLg3bkr6NaTRpbM84ZT3i1FQMTdKP6OHHqwAeBscB6BkyhZhzvsFtl2YRBNK9mA3OtOYvBmTkFkNqvrPQlfu7cFtyG5+AUfSCiTTgS/vWIwoqSVAXaOEqN8Fp54ecUdkzCTttl3gXteZzNLRYvyQcFpoJb6E+dS8qAW0OFOteiwKVuPCh3nGUzBP13bRo1i9UAX7ZCTlpjinkxE8ryzbToo6ZcVQMBAkKhaw/x8GzOtfm5rgYMeQzGEoBJNfr7qqfs7JMxAIEMYjrTL9PXVOp/R8F3FdsqbV70jSyfsxMSMkwSWFRmVslG8+Djy8P3LnckGy1FEbMHnH8GZHZg+hbBzN8Be1/1fV0oRRAr939WRc=
access_key:
secure: OY3oWwiJghfty9wSPVvlhirvFGxPHDdIRuVkzAv6j7C/hj2BWYAP/UHrwdQ9XiYisHi/B5mGeyRVlrAf0MNGrG84rTDUbTWZbmktfuxl7A+Y6c0czk+s4SdhOiANG5b3tFl5wKq8h7uhrWH5/jWoKQ2Fz1VDCqxTvvZQbo41jSBhi7TBia626hxEePzdaiuw6HhGFZtfaoVs/FX30ylz8WDNrBjwCynjxsT52BaQrVvgEhuyzlOpI69YkZBPOq4fc3KiZ2YR43gLTx8K+sYCE9yJxdg1xT/UAawEhmedU83nyBZVo4rr7+03AixIxtI28MUCfBMlcsGwBxcKEKY/IWcp9UkPCq6+zALQoncV478tP21eYvlmxSFhYCrv+WEQlN+BcNjr4OJlmmFDbCVaF7r9qLeQPImU0+9iJU3OjrW7lpfLxORpGDEr2Nx6awKkIJCxNyK9weefeNo6Fz3V1kkyZ/7yWFeniJnRUCbahrB2XgzxIE+W307s1Qs4fm6JK7hVLTtG4fBzjChmAyGIzu744ws9WqmjvkC9D7OfnuXqanv/VcBFqPiudInerv7NL8FketUC+fxe/7XJfcxdaDGBjk8Kq7zXDohGRGymUXEoMDNJsKkMMlaKzdf7tgqdhsRJoH9NCVqrDXuG5al0UtrDP5RS7qfoxUunJmNFhlg=
cache:
apt: true
directories:
- node_modules
- website/node_modules
before_script:
- export PATH=${PATH}:${HOME}/bin
- export DISPLAY=:99.0
- /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16
script:
- npm run build
- npm run test

View file

@ -67,7 +67,8 @@ Theme: Acceptance tests and Google Drive Polish
Scheduled to be released: May 06, 2016
- [ ] Add `addFile`-hack so we can have acceptance tests on Safari as well as Edge (@arturi)
- [ ] Wire saucelabs and travis togeteher, make saucelabsl fails fatal to travis builds
- [x] Add `addFile`-hack so we can have acceptance tests on Safari as well as Edge (@arturi)
- [x] drive: possible UI polish (@hedgerh)
- [x] drive: write files to filesystem correctly (@hedgerh)
- [x] test: Fix 15s timeout image.jpg (@arturi)

View file

@ -9,6 +9,10 @@ export UPPYSERVER_GOOGLE_SECRET="***"
export UPPYSERVER_INSTAGRAM_KEY="***"
export UPPYSERVER_INSTAGRAM_SECRET="***"
# Let's not set this by default, because that will make acceptance tests Always run on Saucelabs
## export SAUCE_ACCESS_KEY="***"
## export SAUCE_USERNAME="***"
# travis encrypt --add GHPAGES_URL=https://secret_access_token@github.com/transloadit/uppy.git
# travis encrypt --add env.global "UPPYSERVER_DROPBOX_KEY=${UPPYSERVER_DROPBOX_KEY}"
# travis encrypt --add env.global "UPPYSERVER_DROPBOX_SECRET=${UPPYSERVER_DROPBOX_SECRET}"
@ -16,3 +20,9 @@ export UPPYSERVER_INSTAGRAM_SECRET="***"
# travis encrypt --add env.global "UPPYSERVER_GOOGLE_SECRET=${UPPYSERVER_GOOGLE_SECRET}"
# travis encrypt --add env.global "UPPYSERVER_INSTAGRAM_KEY=${UPPYSERVER_INSTAGRAM_KEY}"
# travis encrypt --add env.global "UPPYSERVER_INSTAGRAM_SECRET=${UPPYSERVER_INSTAGRAM_SECRET}"
# The Travis Sauce Connect addon exports the SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables,
# and relays connections to the hub URL back to Sauce Labs.
# See: https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-Sauce-Labs
# travis encrypt --add addons.sauce_connect.username "${SAUCE_USERNAME}"
# travis encrypt --add addons.sauce_connect.access_key "${SAUCE_ACCESS_KEY}"

View file

@ -15,15 +15,33 @@ require('babel-register')
var webdriver = require('selenium-webdriver')
var remote = require('selenium-webdriver/remote')
var username = process.env.SAUCELABS_USERNAME
var accessKey = process.env.SAUCELABS_ACCESS_KEY
// The Travis Sauce Connect addon exports the SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables,
// and relays connections to the hub URL back to Sauce Labs.
// See: https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-Sauce-Labs
var username = process.env.SAUCE_USERNAME
var accessKey = process.env.SAUCE_ACCESS_KEY
var remoteHost = 'http://uppy.io'
var localHost = 'http://localhost:4000'
// if accessKey is supplied as env variable, this is a remote Saucelabs test
var isRemoteTest = accessKey ? true : ''
var host = isRemoteTest ? remoteHost : localHost
var isTravisTest = process.env.TRAVIS === 'true'
var isRemoteTest = !!accessKey
var host = localHost
if (isTravisTest) {
// We have a tunnel via the saucelabs addon on Travis
host = localHost
} else if (isRemoteTest) {
// We're not too sure about a working tunnel otherwise, best just test uppy.io
host = remoteHost
} else {
// If we don't have any access keys set, we'll assume you'll be playing around with a local
// firefox webdriver.
host = localHost
}
console.log('Acceptance tests will be targetting: ' + host)
// FYI: old Chrome on Windows XP — didnt pass
var platforms = [
@ -45,15 +63,26 @@ var tests = [
function buildDriver (platform) {
var driver
if (isRemoteTest) {
var capabilities = {
'browserName': platform.browser,
'platform': platform.os,
'version': platform.version,
'username': username,
'accessKey': accessKey
}
if (isTravisTest) {
// @todo Do we need a hub_url = "%s:%s@localhost:4445" % (username, access_key)
// as mentioned in https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-Sauce-Labs ?
capabilities['tunnel-identifier'] = process.env.TRAVIS_JOB_NUMBER
capabilities['build'] = process.env.TRAVIS_BUILD_NUMBER
capabilities['name'] = 'Travis ##' + process.env.TRAVIS_JOB_NUMBER
capabilities['tags'] = [process.env.TRAVIS_NODE_VERSION, 'CI']
}
driver = new webdriver
.Builder()
.withCapabilities({
'browserName': platform.browser,
'platform': platform.os,
'version': platform.version,
'username': username,
'accessKey': accessKey
})
.withCapabilities(capabilities)
.usingServer('http://' + username + ':' + accessKey +
'@ondemand.saucelabs.com:80/wd/hub')
.build()

View file

@ -1,8 +1,8 @@
var webdriver = require('selenium-webdriver')
var remote = require('selenium-webdriver/remote')
var username = process.env.SAUCELABS_USERNAME
var accessKey = process.env.SAUCELABS_ACCESS_KEY
var username = process.env.SAUCE_USERNAME
var accessKey = process.env.SAUCE_ACCESS_KEY
// var platform = { browser: 'firefox', version: '34.0', os: 'Windows 7' }
var platform = { browser: 'Safari', version: '9.0', os: 'OS X 10.11' }