Browse Source

Add pass/fail SauceLabs flags, refactor

Artur Paikin 9 years ago
parent
commit
7f77ab1b13

+ 12 - 9
test/acceptance/Driver.js

@@ -16,21 +16,23 @@ function UppySelectFakeFile () {
 // function setSauceTestName (name) {
 //
 // }
-//
-// function setSaucetestPassed (passed) {
-//   if (passed) {
-//     return
-//   }
-// }
 
-function setSauceStatus (driver, passed) {
+// https://wiki.saucelabs.com/display/DOCS/Annotating+Tests+with+Selenium's+JavaScript+Executor
+function setSauceTestStatus (driver, passed) {
   driver
-    .executeScript('sauce:passed=' + passed)
+    .executeScript('sauce:job-result=' + passed)
     .catch(function (err) {
       console.log(err)
     })
 }
 
+function setSauceTestName (driver, testName) {
+  driver
+    .executeScript('sauce:job-name=' + testName).catch(function (err) {
+      console.log('local test, so this is ok: ' + err)
+    })
+}
+
 // Monitor for errors, and dump them
 function collectErrors (driver) {
   return driver.executeScript('return uppyLog;')
@@ -78,6 +80,7 @@ module.exports = {
   setDriver,
   UppySelectFakeFile,
   collectErrors,
-  setSauceStatus,
+  setSauceTestName,
+  setSauceTestStatus,
   By
 }

+ 14 - 9
test/acceptance/i18n.spec.js

@@ -1,6 +1,8 @@
 var test = require('tape')
 var chalk = require('chalk')
 var Driver = require('./Driver')
+var setSauceTestStatus = Driver.setSauceTestStatus
+var setSauceTestName = Driver.setSauceTestName
 var collectErrors = Driver.collectErrors
 
 module.exports = function (driver, platform, host) {
@@ -14,31 +16,33 @@ module.exports = function (driver, platform, host) {
   test(testName + ' ' + platformName, function (t) {
     t.plan(1)
 
+    driver.get(host + '/examples/i18n')
+    driver.manage().window().maximize()
+
+    setSauceTestName(driver, testName)
+
     function findLabelTextElement () {
       return driver.findElements({css: '.UppyDragDrop-label'}).then(function (result) {
         return result[0]
       })
     }
 
-    driver.get(host + '/examples/i18n')
-    driver.manage().window().maximize()
-
-    // Set Saucelabs test name
-    driver.executeScript('sauce:job-name=' + testName).catch(function (err) {
-      console.log('local test, so this is ok: ' + err)
-    })
-
     driver.wait(findLabelTextElement, 8000, 'Uppy should load within 8 seconds')
       .then(function (element) {
         element.getText().then(function (value) {
           collectErrors(driver).then(function () {
-            // why trim? Microsoft Edge
+            // why trim? Microsoft Edge:
             // not ok 4 should be equal
             //  ---
             // operator: equal
             // expected: 'Выберите файл или перенесите его сюда'
             // actual:   'Выберите файл или перенесите его сюда '
             t.equal(value.trim(), 'Выберите файл или перенесите его сюда')
+            if (value.trim() === 'Выберите файл или перенесите его сюда') {
+              setSauceTestStatus(driver, true)
+            } else {
+              setSauceTestStatus(driver, false)
+            }
             driver.quit()
           })
         })
@@ -46,6 +50,7 @@ module.exports = function (driver, platform, host) {
       .catch(function (err) {
         collectErrors(driver).then(function () {
           t.fail(err)
+          setSauceTestStatus(driver, false)
           driver.quit()
         })
       })

+ 2 - 2
test/acceptance/index.js

@@ -58,8 +58,8 @@ var platforms = [
 ]
 
 var tests = [
-  require('./multipart.spec.js')
-  // require('./i18n.spec.js')
+  require('./multipart.spec.js'),
+  require('./i18n.spec.js')
   // require('./dragdrop.spec.js')
 ]
 

+ 6 - 12
test/acceptance/multipart.spec.js

@@ -2,7 +2,8 @@ var test = require('tape')
 var path = require('path')
 var chalk = require('chalk')
 var Driver = require('./Driver')
-var setSauceStatus = Driver.setSauceStatus
+var setSauceTestStatus = Driver.setSauceTestStatus
+var setSauceTestName = Driver.setSauceTestName
 var collectErrors = Driver.collectErrors
 
 module.exports = function (driver, platform, host) {
@@ -20,14 +21,7 @@ module.exports = function (driver, platform, host) {
     driver.get(host + '/examples/multipart/')
     driver.manage().window().maximize()
 
-    // TODO: figure out how to properly mark tests as complete in Saucelabs
-    // driver.executeScript('sauce:jpassed=true)
-    // driver.executeScript('sauce:jpassed=false)
-
-    // Set Saucelabs test name
-    driver.executeScript('sauce:job-name=' + testName).catch(function (err) {
-      console.log('local test, so this is ok: ' + err)
-    })
+    setSauceTestName(driver, testName)
 
     // driver.manage().timeouts().implicitlyWait(5 * 1000)
 
@@ -64,9 +58,9 @@ module.exports = function (driver, platform, host) {
         collectErrors(driver).then(function () {
           t.equal(result, true)
           if (result) {
-            setSauceStatus(driver, true)
+            setSauceTestStatus(driver, true)
           } else {
-            setSauceStatus(driver, false)
+            setSauceTestStatus(driver, false)
           }
           driver.quit()
         })
@@ -74,7 +68,7 @@ module.exports = function (driver, platform, host) {
       .catch(function (err) {
         collectErrors(driver).then(function () {
           t.fail(err)
-          setSauceStatus(driver, false)
+          setSauceTestStatus(driver, false)
           driver.quit()
         })
       })

+ 4 - 0
test/acceptance/saucelabs-dummy.spec.js

@@ -30,12 +30,16 @@ function getBtnValue () {
 
 function runTest (driver, platform) {
   console.log('Running dummy test in ' + platform.browser + ' on ' + platform.os)
+  driver.executeScript('sauce:job-name=dummy test')
+
   driver.get('http://ya.ru')
   driver.executeScript(getBtnValue).then(function (val) {
     console.log(val)
     driver.getTitle().then(function (title) {
       console.log('title is: ' + title)
       console.log('Finnished running dummy test, I quit!')
+      driver
+        .executeScript('sauce:job-result=passed')
       driver.quit()
     })
   })