Browse Source

Refactor tests some more

Artur Paikin 9 years ago
parent
commit
9266f85998

+ 4 - 4
CHANGELOG.md

@@ -48,7 +48,7 @@ Released: Unreleased
 - [ ] modifier: A plugin to supply meta data (like width, tag, filename, user_id), belonging to the `modify` stage (or a different word we'll come up with) (@arturi)
 - [ ] modifier: pass custom metadata with non-tus-upload. Maybe mimic meta behavior of tus here, too http://tus.io/protocols/resumable-upload.html (@arturi)
 - [ ] modifier: pass custom metadata with tus-upload with tus-js-client (@arturi)
-- [ ] core: Put entire(?) state into oauth redirect urls / LocalStorage with an identifier (@hedgerh) 
+- [ ] core: Put entire(?) state into oauth redirect urls / LocalStorage with an identifier (@hedgerh)
 - [ ] core: Investigate if there is a way to manage an oauth dialog and not navigate away from Uppy (@hedgerh)
 - [ ] drive: Return `cb` after writing all files https://github.com/transloadit/uppy-server/commit/4f1795bc55869fd098a5c81a80edac504fa7324a#commitcomment-17385433 (@hedgerh)
 
@@ -66,9 +66,9 @@ Released: June 03, 2016
 - [ ] progressdrawer: figure out crazy rerendering of previews by yoyo (@arturi)
 - [ ] progressdrawer: improve styles, add preview icons for all (@arturi)
 - [ ] server: Start implementing the `SERVER-PLAN.md` so that Google Drive files are actually uploaded to the endpoint (@hedgerh)
-- [ ] test: Add pass/fail Saucelabs flag to acceptance tests (@arturi)
-- [ ] test: Get IE4 on windows 3.11 to run Uppy and see it fall back to regular form upload (`api2.transloadit.com`) (@arturi) 
-- [ ] website: Polish Saucelabs stats (social badge + stats layout) (@arturi)
+- [ ] test: Get IE4 on windows 3.11 to run Uppy and see it fall back to regular form upload (`api2.transloadit.com`) (@arturi)
+- [x] test: Add pass/fail Saucelabs flag to acceptance tests (@arturi)
+- [x] website: Polish Saucelabs stats (social badge + stats layout) (@arturi)
 - [x] drive: Maybe we need to have URL parameters carrying state as payload, so after returning from google, we're in the same tab again (@hedgerh)
 - [x] meta: Create Uppy logos (@markstory)
 - [x] website: Add Saucelabs badges to uppy.io (@kvz)

+ 22 - 8
test/acceptance/Driver.js

@@ -4,7 +4,7 @@ var By = webdriver.By
 var path = require('path')
 var chalk = require('chalk')
 
-function UppySelectFakeFile () {
+function uppySelectFakeFile () {
   var blob = new Blob(
     ['data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIwIDEyMCI+CiAgPGNpcmNsZSBjeD0iNjAiIGN5PSI2MCIgcj0iNTAiLz4KPC9zdmc+Cg=='],
     {type: 'image/svg+xml'}
@@ -13,26 +13,37 @@ function UppySelectFakeFile () {
   window.UppyAddFiles([blob], 'smth')
 }
 
-// function setSauceTestName (name) {
-//
-// }
-
 // https://wiki.saucelabs.com/display/DOCS/Annotating+Tests+with+Selenium's+JavaScript+Executor
 function setSauceTestStatus (driver, passed) {
   driver
     .executeScript('sauce:job-result=' + passed)
     .catch(function (err) {
-      console.log(err)
+      console.log('local test, so this is ok: ' + err)
     })
 }
 
 function setSauceTestName (driver, testName) {
   driver
-    .executeScript('sauce:job-name=' + testName).catch(function (err) {
+    .executeScript('sauce:job-name=' + testName)
+    .catch(function (err) {
       console.log('local test, so this is ok: ' + err)
     })
 }
 
+function testEqual (driver, t, condition) {
+  t.equal(condition, true)
+  if (condition) {
+    setSauceTestStatus(driver, true)
+  } else {
+    setSauceTestStatus(driver, false)
+  }
+}
+
+function testFail (driver, t, err) {
+  t.fail(err)
+  setSauceTestStatus(driver, false)
+}
+
 // Monitor for errors, and dump them
 function collectErrors (driver) {
   return driver.executeScript('return uppyLog;')
@@ -42,6 +53,7 @@ function collectErrors (driver) {
         chalk.magenta(uppyLog)
       ].join(' '))
 
+      // TODO: maybe figure out a way to get errors from all browsers
       // return driver.executeScript('return window.JSErrorCollector_errors.pump()')
       //   .then(function (errors) {
       //     if (!errors || !errors.length) {
@@ -78,8 +90,10 @@ function setDriver () {
 
 module.exports = {
   setDriver,
-  UppySelectFakeFile,
+  uppySelectFakeFile,
   collectErrors,
+  testEqual,
+  testFail,
   setSauceTestName,
   setSauceTestStatus,
   By

+ 2 - 1
test/acceptance/dragdrop.spec.js

@@ -28,12 +28,13 @@ module.exports = function (driver, platform, host) {
     var platformBrowser = platform.browser.toLowerCase()
     if (platformBrowser === 'safari' || platformBrowser === 'microsoftedge') {
       console.log('fake-selecting a fake file')
-      driver.executeScript(Driver.UppySelectFakeFile)
+      driver.executeScript(Driver.uppySelectFakeFile)
       driver.findElement({css: '#UppyDragDrop-Two .UppyDragDrop-uploadBtn'}).click()
     } else {
       console.log('selecting a real file')
       // Make file input “visible”
       driver.executeScript('document.querySelector(".UppyDragDrop-One .UppyDragDrop-input").style.opacity = 1')
+
       // Find input by css selector & pass absolute image path to it
       driver
         .findElement({css: '.UppyDragDrop-One .UppyDragDrop-input'})

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

@@ -1,9 +1,6 @@
 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) {
   var testName = 'i18n: make sure Uppy loads with Russian language pack '
@@ -19,7 +16,7 @@ module.exports = function (driver, platform, host) {
     driver.get(host + '/examples/i18n')
     driver.manage().window().maximize()
 
-    setSauceTestName(driver, testName)
+    Driver.setSauceTestName(driver, testName)
 
     function findLabelTextElement () {
       return driver.findElements({css: '.UppyDragDrop-label'}).then(function (result) {
@@ -30,27 +27,29 @@ module.exports = function (driver, platform, host) {
     driver.wait(findLabelTextElement, 8000, 'Uppy should load within 8 seconds')
       .then(function (element) {
         element.getText().then(function (value) {
-          collectErrors(driver).then(function () {
+          Driver.collectErrors(driver).then(function () {
             // 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.testEqual(driver, t, value.trim() === 'Выберите файл или перенесите его сюда')
+            // t.equal(value.trim(), 'Выберите файл или перенесите его сюда')
+            // if (value.trim() === 'Выберите файл или перенесите его сюда') {
+            //   setSauceTestStatus(driver, true)
+            // } else {
+            //   setSauceTestStatus(driver, false)
+            // }
             driver.quit()
           })
         })
       })
       .catch(function (err) {
-        collectErrors(driver).then(function () {
-          t.fail(err)
-          setSauceTestStatus(driver, false)
+        Driver.collectErrors(driver).then(function () {
+          Driver.testFail(driver, t, err)
+          // t.fail(err)
+          // setSauceTestStatus(driver, false)
           driver.quit()
         })
       })

+ 14 - 15
test/acceptance/multipart.spec.js

@@ -2,9 +2,6 @@ var test = require('tape')
 var path = require('path')
 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) {
   var testName = 'Multipart: upload two files'
@@ -21,7 +18,7 @@ module.exports = function (driver, platform, host) {
     driver.get(host + '/examples/multipart/')
     driver.manage().window().maximize()
 
-    setSauceTestName(driver, testName)
+    Driver.setSauceTestName(driver, testName)
 
     // driver.manage().timeouts().implicitlyWait(5 * 1000)
 
@@ -29,7 +26,7 @@ module.exports = function (driver, platform, host) {
     var platformBrowser = platform.browser.toLowerCase()
     if (platformBrowser === 'safari' || platformBrowser === 'microsoftedge') {
       console.log('fake-selecting a fake file')
-      driver.executeScript(Driver.UppySelectFakeFile)
+      driver.executeScript(Driver.uppySelectFakeFile)
       driver.findElement({css: '.UppyForm-uploadBtn'}).click()
     } else {
       // Find input by css selector & pass absolute image path to it
@@ -55,20 +52,22 @@ module.exports = function (driver, platform, host) {
 
     driver.wait(isUploaded, 15000, 'File image.jpg should be uploaded within 15 seconds')
       .then(function (result) {
-        collectErrors(driver).then(function () {
-          t.equal(result, true)
-          if (result) {
-            setSauceTestStatus(driver, true)
-          } else {
-            setSauceTestStatus(driver, false)
-          }
+        Driver.collectErrors(driver).then(function () {
+          Driver.testEqual(driver, t, result)
+          // t.equal(result, true)
+          // if (result) {
+          //   setSauceTestStatus(driver, true)
+          // } else {
+          //   setSauceTestStatus(driver, false)
+          // }
           driver.quit()
         })
       })
       .catch(function (err) {
-        collectErrors(driver).then(function () {
-          t.fail(err)
-          setSauceTestStatus(driver, false)
+        Driver.collectErrors(driver).then(function () {
+          Driver.testFail(driver, t, err)
+          // t.fail(err)
+          // setSauceTestStatus(driver, false)
           driver.quit()
         })
       })