diff --git a/.travis.yml b/.travis.yml index 559895df..3ddcdff5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,9 @@ python: os: - linux +addons: + sauce_connect: true + cache: directories: - $HOME/.cache/pip @@ -22,6 +25,10 @@ install: - pip install coverage pytest-cov coveralls --use-mirrors - npm install +before_script: + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start + script: - python setup.py test - cd karma-tests && make test diff --git a/karma-tests/dummy.html b/karma-tests/dummy.html new file mode 100644 index 00000000..52e695fa --- /dev/null +++ b/karma-tests/dummy.html @@ -0,0 +1,9 @@ + +
+ + + + diff --git a/karma-tests/karma.conf.js b/karma-tests/karma.conf.js index b40190f2..9972fac9 100644 --- a/karma-tests/karma.conf.js +++ b/karma-tests/karma.conf.js @@ -1,8 +1,3 @@ -if (!process.env['SAUCE_USERNAME'] || !process.env['SAUCE_ACCESS_KEY']) { - console.error('Sauce Labs account details not set, skipping Karma tests'); - process.exit(0); -} - var sauceLabsConfig = { testName: 'PyWB Client Tests', }; @@ -15,7 +10,7 @@ if (process.env.TRAVIS_JOB_NUMBER) { var WOMBAT_JS_PATH = 'pywb/static/wombat.js'; -var customLaunchers = { +var sauceLaunchers = { sl_chrome: { base: 'SauceLabs', browserName: 'chrome', @@ -26,25 +21,37 @@ var customLaunchers = { browserName: 'firefox', }, -/* Safari and Edge are currently broken in - pywb. - - See: https://github.com/ikreymer/pywb/issues/148 (Edge) - https://github.com/ikreymer/pywb/issues/147 (Safari) - sl_safari: { base: 'SauceLabs', browserName: 'safari', platform: 'OS X 10.11', version: '9.0', }, + sl_edge: { base: 'SauceLabs', browserName: 'MicrosoftEdge', }, -*/ }; +var localLaunchers = { + localFirefox: { + base: 'Firefox', + }, +}; + +var customLaunchers = {}; + +if (process.env['SAUCE_USERNAME'] && process.env['SAUCE_ACCESS_KEY']) { + customLaunchers = sauceLaunchers; +} else { + console.error('Sauce Labs account details not set, ' + + 'Karma tests will be run only against local browsers.' + + 'Set SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables to ' + + 'run tests against Sauce Labs browsers'); + customLaunchers = localLaunchers; +} + module.exports = function(config) { config.set({ basePath: '../', @@ -58,6 +65,11 @@ module.exports = function(config) { included: false, served: true, }, + { + pattern: 'karma-tests/dummy.html', + included: false, + served: true, + }, 'karma-tests/*.spec.js', ], @@ -75,9 +87,15 @@ module.exports = function(config) { sauceLabs: sauceLabsConfig, - // use an extended timeout for capturing Sauce Labs - // browsers in case the service is busy + // Set extended timeouts to account for the slowness + // in connecting to remote browsers (eg. when using + // Sauce Labs) + // + // See https://oligofren.wordpress.com/2014/05/27/running-karma-tests-on-browserstack/ captureTimeout: 3 * 60000, + browserNoActivityTimeout: 30 * 1000, + browserDisconnectTimeout: 10 * 1000, + browserDisconnectTolerance: 1, customLaunchers: customLaunchers, diff --git a/karma-tests/wombat.spec.js b/karma-tests/wombat.spec.js index 7012da83..fbb9b33d 100644 --- a/karma-tests/wombat.spec.js +++ b/karma-tests/wombat.spec.js @@ -1,4 +1,3 @@ -var WOMBAT_SRC = '../pywb/static/wombat.js'; var DEFAULT_TIMEOUT = 20000; // creates a new document in an