diff --git a/.travis.yml b/.travis.yml index a678cd782dcb..beeee39c18b9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,10 +3,18 @@ language: node_js node_js: - "8" dist: trusty -addons: - chrome: stable cache: directories: - node_modules +addons: + chrome: stable + sauce_connect: true +before_install: + - npm i -g npm@5.3.0 script: - npm test + - npm test:ci +env: + global: + - secure: iHuXK1dZnoxh7Jm15eRcAG7qxaMbkhxB7qJuvlYL6sucpYdDWYDmmQxWdbU7BxWFlqq05eyRjQqTK342Z2I7ScsZLGCjW7vUPsluYjx+LKuMN0kHY5ayqur4pX8pgOn+faTzSWfP44R1YO0DTM15idcgu7uMC1KvXdiC6ayrp+U= + - secure: DsLP1gfQVVs8ZGECQl8YcIqXU/ADRoQLEp3tVuKg3suOYcqsJSXmozQajO8ld/PXQZgWODNDfeK0AzaKNVWsVhdflaGbXpE6Gzdr6F+zTkU3Ma0HZ3HPTQP5o9qraGbG5JFKqtHPek/7BeZ4aC6ReY63d846+L2Ev7he5QvSCHE= diff --git a/Gruntfile.js b/Gruntfile.js index 9945fe2ff6ab..203bd1069e6b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -197,6 +197,32 @@ module.exports = function(grunt) { } }, + 'saucelabs-mocha': { + all: { + options: { + urls: [ + 'http://127.0.0.1:9999/test/index.html', + 'http://127.0.0.1:9999/test/integration/index.html' + ], + sauceConfig: { + 'record-video': false, + 'record-screenshots': false + }, + build: process.env.TRAVIS_BUILD_NUMBER, + testname: + 'Raven.js' + + (process.env.TRAVIS_JOB_NUMBER ? ' #' + process.env.TRAVIS_JOB_NUMBER : ''), + browsers: [ + ['macOS 10.12', 'chrome', 'latest'], + ['macOS 10.12', 'firefox', 'latest'], + ['macOS 10.12', 'safari', '10.0'] + ], + public: 'public', + tunnelArgs: ['--verbose'] + } + } + }, + release: { options: { npm: false, @@ -229,6 +255,12 @@ module.exports = function(grunt) { }, connect: { + ci: { + options: { + port: 9999 + } + }, + test: { options: { port: 8000, @@ -301,6 +333,14 @@ module.exports = function(grunt) { grunt.config.set('pkg', pkg); }); + grunt.registerTask('config:ci', 'Verify CI config', function() { + if (!process.env.SAUCE_USERNAME) + console.warn('No SAUCE_USERNAME env variable defined.'); + if (!process.env.SAUCE_ACCESS_KEY) + console.warn('No SAUCE_ACCESS_KEY env variable defined.'); + if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) process.exit(1); + }); + // Grunt contrib tasks grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-clean'); @@ -313,6 +353,7 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-s3'); grunt.loadNpmTasks('grunt-gitinfo'); grunt.loadNpmTasks('grunt-sri'); + grunt.loadNpmTasks('grunt-saucelabs'); // Build tasks grunt.registerTask('_prep', ['clean', 'gitinfo', 'version']); @@ -335,6 +376,13 @@ module.exports = function(grunt) { grunt.registerTask('build', ['build.plugins-combined']); grunt.registerTask('dist', ['build.core', 'copy:dist']); + grunt.registerTask('test:ci', [ + 'config:ci', + 'build.test', + 'connect:ci', + 'saucelabs-mocha' + ]); + // Webserver tasks grunt.registerTask('run:test', ['connect:test']); grunt.registerTask('run:docs', ['connect:docs']); diff --git a/README.md b/README.md index eb0f625844ab..a0e48d018b16 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@