]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Use jsunitsaucelabs to run our unit tests on Saucelabs
authorJohann-S <johann.servoire@gmail.com>
Thu, 28 Sep 2017 12:55:15 +0000 (14:55 +0200)
committerXhmikosR <xhmikosr@gmail.com>
Fri, 29 Sep 2017 16:39:25 +0000 (19:39 +0300)
build/saucelabs-unit-test.js [new file with mode: 0644]
package-lock.json
package.json

diff --git a/build/saucelabs-unit-test.js b/build/saucelabs-unit-test.js
new file mode 100644 (file)
index 0000000..7657612
--- /dev/null
@@ -0,0 +1,48 @@
+const JSUnitSaucelabs = require('jsunitsaucelabs')
+
+var jsUnitSaucelabs = new JSUnitSaucelabs({
+  username: process.env.SAUCE_USERNAME,
+  password: process.env.SAUCE_ACCESS_KEY
+})
+
+
+// TODO : get all the browsers in sauce_browsers.yml
+
+var testURL = 'http://localhost:3000/js/tests/index.html?hidepassed'
+jsUnitSaucelabs.start([
+  ['Windows 8', 'internet explorer', '10']
+], testURL, 'qunit', function (error, success) {
+  if (typeof success !== 'undefined') {
+    var taskIds = success['js tests']
+    if (!taskIds || !taskIds.length) {
+      throw new Error('Error starting tests through SauceLabs API')
+    }
+
+    var waitingCallback = function (error, success) {
+      if (error) {
+        console.error(error)
+        return
+      }
+
+      if (typeof success !== 'undefined') {
+        if (!success.completed) {
+          jsUnitSaucelabs.getStatus(taskIds[0], waitingCallback)
+        } else {
+          var test = success['js tests'][0]
+          var passed = false
+          if (test.result !== null) {
+            passed = test.result.total === test.result.passed
+          }
+          console.log('Tested ' + testURL)
+          console.log('Platform: ' + test.platform.join(','))
+          console.log('Passed: ' + passed.toString())
+          console.log('Url ' + test.url)
+        }
+      }
+    }
+
+    taskIds.forEach(function (id) {
+      jsUnitSaucelabs.getStatus(id, waitingCallback)
+    })
+  }
+})
index 417db57fd1fd9028da07b79e010c2dc93705555a..65f0b241785ced881c7a01e05c0401a886a0883a 100644 (file)
         "verror": "1.10.0"
       }
     },
+    "jsunitsaucelabs": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/jsunitsaucelabs/-/jsunitsaucelabs-1.0.0.tgz",
+      "integrity": "sha512-5/PCsSwLGMLCiA4IOlbuxOcangxnEadEZTPwGvF4sHQ+NQoPbSIbCtK4Wce1IReJiyY6fQldA2uITycXZOhqrQ==",
+      "dev": true
+    },
     "kew": {
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
index 85a641b34ea2d9837b0fc1d9d1d3ccf36c2d654c..9ab637cb0b4b0f07315a441a2315babfe265ab19 100644 (file)
@@ -41,7 +41,7 @@
     "js-minify-bundle": "uglifyjs --compress typeofs=false --mangle --comments \"/^!/\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js",
     "js-minify-docs": "uglifyjs --mangle --comments \"/^!/\" --output assets/js/docs.min.js assets/js/vendor/anchor.min.js assets/js/vendor/clipboard.min.js assets/js/vendor/holder.min.js assets/js/src/application.js assets/js/src/pwa.js",
     "js-test": "phantomjs ./node_modules/qunit-phantomjs-runner/runner.js js/tests/index.html 60",
-    "js-test-cloud": "ruby -r webrick -e \"s = WEBrick::HTTPServer.new(:Port => 3000, :DocumentRoot => Dir.pwd, :Logger => WEBrick::Log.new('/dev/null'), :AccessLog => []); trap('INT') { s.shutdown }; s.start\" & grunt saucelabs-qunit",
+    "js-test-cloud": "ruby -r webrick -e \"s = WEBrick::HTTPServer.new(:Port => 3000, :DocumentRoot => Dir.pwd, :Logger => WEBrick::Log.new('/dev/null'), :AccessLog => []); trap('INT') { s.shutdown }; s.start\" & node build/saucelabs-unit-test.js",
     "docs": "npm-run-all docs-compile docs-lint",
     "docs-lint": "htmllint --rc build/.htmllintrc _gh_pages/*.html _gh_pages/**/*.html js/tests/visual/*.html",
     "docs-compile": "bundle exec jekyll build",
@@ -90,6 +90,7 @@
     "grunt-cli": "^1.2.0",
     "grunt-saucelabs": "^9.0.0",
     "htmllint-cli": "^0.0.6",
+    "jsunitsaucelabs": "^1.0.0",
     "node-sass": "^4.5.3",
     "nodemon": "^1.11.0",
     "npm-run-all": "^4.0.2",