From bd9332a58a9c75d831a1dc877ddfc9b846ef1344 Mon Sep 17 00:00:00 2001 From: Chris Rebert Date: Tue, 3 Dec 2013 18:42:31 -0800 Subject: [PATCH] switch to Sauce Labs for our cross-browser JS unit testing needs Fixes #11087 --- .travis.yml | 5 +-- Gruntfile.js | 106 +++++++++++++++++++++++++++++++++++++++++++--- README.md | 1 + browserstack.json | 37 ---------------- package.json | 4 +- 5 files changed, 104 insertions(+), 49 deletions(-) delete mode 100644 browserstack.json diff --git a/.travis.yml b/.travis.yml index 775a7f15aa..7ccf23744c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,5 @@ before_script: - npm install -g grunt-cli env: global: - - secure: Besg41eyU+2mfxrywQ4ydOShMdc34ImaO0S0ENP+aCOBuyNBIgP59wy5tBMmyai2/8eInYeVps4Td96mWInMMxzTe3Bar7eTLG5tWVKRSr/wc4NBPZ/ppoPAmCEsz9Y+VptRH9/FO8n7hsL9EFZ+xBKbG+C0SccGoyBDpA5j7/w= - - secure: Ptiv7phCImFP3ALIz+sMQzrZg8k7C1gLZbFBhWxjnQr3g06wIfX3Ls5y9OHvxid+lOZZjISui3wzBVgpVHqwHUYf96+r0mo6/mJ+F4ffUmShZANVaIMD/JRTnXhUQJbvntGLvxn1EYWPdNM+2IHJrMipnjHxU9tkgAnlel4Zdew= - - TWBS_HAVE_OWN_BROWSERSTACK_KEY: "" + - SAUCE_USERNAME: bootstrap + - secure: "pJkBwnuae9dKU5tEcCqccfS1QQw7/meEcfz63fM7ba7QJNjoA6BaXj08L5Z3Vb5vBmVPwBawxo5Hp0jC0r/Z/O0hGnAmz/Cz09L+cy7dSAZ9x4hvZePSja/UAusaB5ogMoO8l2b773MzgQeSmrLbExr9BWLeqEfjC2hFgdgHLaQ=" diff --git a/Gruntfile.js b/Gruntfile.js index d4b2fdd0b5..77477596d8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -169,12 +169,105 @@ module.exports = function(grunt) { replacement: grunt.option('newver'), recursive: true } + }, + + 'saucelabs-qunit': { + all: { + options: { + build: process.env.TRAVIS_JOB_ID, + concurrency: 3, + urls: ['http://127.0.0.1:3000/js/tests/index.html'], + browsers: [ + // See https://saucelabs.com/docs/platforms/webdriver + { + browserName: 'safari', + version: '6', + platform: 'OS X 10.8' + }, + { + browserName: 'chrome', + version: '28', + platform: 'OS X 10.6' + }, + /* FIXME: currently fails 1 tooltip test + { + browserName: 'firefox', + version: '25', + platform: 'OS X 10.6' + },*/ + // Mac Opera not currently supported by Sauce Labs + /* FIXME: currently fails 1 tooltip test + { + browserName: 'internet explorer', + version: '11', + platform: 'Windows 8.1' + },*/ + /* + { + browserName: 'internet explorer', + version: '10', + platform: 'Windows 8' + }, + { + browserName: 'internet explorer', + version: '9', + platform: 'Windows 7' + }, + { + browserName: 'internet explorer', + version: '8', + platform: 'Windows 7' + }, + {// unofficial + browserName: 'internet explorer', + version: '7', + platform: 'Windows XP' + }, + */ + { + browserName: 'chrome', + version: '31', + platform: 'Windows 8.1' + }, + { + browserName: 'firefox', + version: '25', + platform: 'Windows 8.1' + }, + // Win Opera 15+ not currently supported by Sauce Labs + { + browserName: 'iphone', + version: '6.1', + platform: 'OS X 10.8' + }, + // iOS Chrome not currently supported by Sauce Labs + // Linux (unofficial) + { + browserName: 'chrome', + version: '30', + platform: 'Linux' + }, + { + browserName: 'firefox', + version: '25', + platform: 'Linux' + } + // Android Chrome not currently supported by Sauce Labs + /* Android Browser (super-unofficial) + { + browserName: 'android', + version: '4.0', + platform: 'Linux' + } + */ + ], + } + } } }); // These plugins provide necessary tasks. - grunt.loadNpmTasks('browserstack-runner'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-connect'); @@ -186,6 +279,7 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-html-validation'); grunt.loadNpmTasks('grunt-jekyll'); grunt.loadNpmTasks('grunt-recess'); + grunt.loadNpmTasks('grunt-saucelabs'); grunt.loadNpmTasks('grunt-sed'); // Docs HTML validation task @@ -193,12 +287,10 @@ module.exports = function(grunt) { // Test task. var testSubtasks = ['dist-css', 'jshint', 'qunit', 'validate-html']; - // Only run BrowserStack tests under Travis - if (process.env.TRAVIS) { - // Only run BrowserStack tests if this is a mainline commit in twbs/bootstrap, or you have your own BrowserStack key - if ((process.env.TRAVIS_REPO_SLUG === 'twbs/bootstrap' && process.env.TRAVIS_PULL_REQUEST === 'false') || process.env.TWBS_HAVE_OWN_BROWSERSTACK_KEY) { - testSubtasks.push('browserstack_runner'); - } + // Only run Sauce Labs tests if there's a Sauce access key + if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined') { + testSubtasks.push('connect'); + testSubtasks.push('saucelabs-qunit'); } grunt.registerTask('test', testSubtasks); diff --git a/README.md b/README.md index 3e1b17dec5..67cbb4ab7a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # [Bootstrap](http://getbootstrap.com) [![Build Status](https://secure.travis-ci.org/twbs/bootstrap.png)](http://travis-ci.org/twbs/bootstrap) [![devDependency Status](https://david-dm.org/twbs/bootstrap/dev-status.png)](https://david-dm.org/twbs/bootstrap#info=devDependencies) +[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap) Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat). diff --git a/browserstack.json b/browserstack.json deleted file mode 100644 index 104d854765..0000000000 --- a/browserstack.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "username": "--secure--", - "key": "--secure--", - "test_path": "js/tests/index.html", - "browsers": [ - { - "browser": "firefox", - "browser_version": "latest", - "os": "OS X", - "os_version": "Mountain Lion" - }, - { - "browser": "safari", - "browser_version": "latest", - "os": "OS X", - "os_version": "Mountain Lion" - }, - { - "browser": "chrome", - "browser_version": "latest", - "os": "OS X", - "os_version": "Mountain Lion" - }, - { - "browser": "firefox", - "browser_version": "latest", - "os": "Windows", - "os_version": "7" - }, - { - "browser": "chrome", - "browser_version": "latest", - "os": "Windows", - "os_version": "7" - } - ] -} diff --git a/package.json b/package.json index bc2a004afe..813cf1d135 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,7 @@ } ] , "devDependencies": { - "browserstack-runner": "~0.0.12" - , "btoa": "~1.1.1" + "btoa": "~1.1.1" , "grunt": "~0.4.1" , "grunt-contrib-clean": "~0.5.0" , "grunt-contrib-concat": "~0.3.0" @@ -34,6 +33,7 @@ , "grunt-html-validation": "~0.1.6" , "grunt-jekyll": "~0.4.0" , "grunt-recess": "~0.5.0" + , "grunt-saucelabs": "~4.1.2" , "grunt-sed": "~0.1.1" , "regexp-quote": "~0.0.0" }