Ver Fonte

Refactor tests, enable Safari and Edge

Artur Paikin há 9 anos atrás
pai
commit
2d41790600

+ 10 - 0
test/acceptance/Driver.js

@@ -13,6 +13,16 @@ function UppySelectFakeFile () {
   window.UppyAddFiles([blob], 'smth')
 }
 
+// function setSauceTestName (name) {
+//
+// }
+//
+// function setSaucetestPassed (passed) {
+//   if (passed) {
+//     return
+//   }
+// }
+
 // Monitor for errors, and dump them
 function collectErrors (driver) {
   return driver.executeScript('return uppyLog;')

+ 15 - 5
test/acceptance/dragdrop.spec.js

@@ -5,22 +5,30 @@ var Driver = require('./Driver')
 var collectErrors = Driver.collectErrors
 
 module.exports = function (driver, platform, host) {
-  test('dragdrop: make sure DragDrop accepts and uploads 1 file via input ' +
-      chalk.underline.yellow('[' +
+  var testName = 'DragDrop: upload one file'
+  var platformName = chalk.underline.yellow('[' +
         platform.os + ' ' +
         platform.browser + ' ' +
         platform.version +
-      ']'),
-  function (t) {
+      ']')
+
+  test(testName + ' ' + platformName, function (t) {
     t.plan(1)
 
     // Go to the example URL
     driver.get(host + '/examples/dragdrop/')
+    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)
+    })
 
     var platformBrowser = platform.browser.toLowerCase()
     if (platformBrowser === 'safari' || platformBrowser === 'microsoftedge') {
       console.log('fake-selecting a fake file')
       driver.executeScript(Driver.UppySelectFakeFile)
+      driver.findElement({css: '#UppyDragDrop-Two .UppyDragDrop-uploadBtn'}).click()
     } else {
       console.log('selecting a real file')
       // Make file input “visible”
@@ -41,7 +49,9 @@ module.exports = function (driver, platform, host) {
 
       // .getText() only work on visible elements, so we use .getAttribute('textContent'), go figure
       // http://stackoverflow.com/questions/21994261/gettext-not-working-on-a-select-from-dropdown
-      return driver.findElement({css: '.UppyDragDrop-One-Progress .UppyProgressBar-percentage'})
+
+      // TODO: figure out how to deal with multiple Uppy instances on the page
+      return driver.findElement({css: '.UppyProgressBar-percentage'})
         .getAttribute('textContent')
         .then(function (value) {
           var progress = parseInt(value)

+ 21 - 8
test/acceptance/i18n.spec.js

@@ -4,13 +4,14 @@ var Driver = require('./Driver')
 var collectErrors = Driver.collectErrors
 
 module.exports = function (driver, platform, host) {
-  test('i18n: make sure Uppy loads with Russian language pack ' +
-      chalk.underline.yellow('[' +
-        platform.os + ' ' +
-        platform.browser + ' ' +
-        platform.version +
-      ']'),
-  function (t) {
+  var testName = 'i18n: make sure Uppy loads with Russian language pack '
+  var platformName = chalk.underline.yellow('[' +
+      platform.os + ' ' +
+      platform.browser + ' ' +
+      platform.version +
+    ']')
+
+  test(testName + ' ' + platformName, function (t) {
     t.plan(1)
 
     function findLabelTextElement () {
@@ -20,12 +21,24 @@ module.exports = function (driver, platform, host) {
     }
 
     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 () {
-            t.equal(value, 'Выберите файл или перенесите его сюда')
+            // why trim? Microsoft Edge
+            // not ok 4 should be equal
+            //  ---
+            // operator: equal
+            // expected: 'Выберите файл или перенесите его сюда'
+            // actual:   'Выберите файл или перенесите его сюда '
+            t.equal(value.trim(), 'Выберите файл или перенесите его сюда')
             driver.quit()
           })
         })

+ 6 - 8
test/acceptance/index.js

@@ -18,30 +18,28 @@ var remote = require('selenium-webdriver/remote')
 var username = process.env.SAUCELABS_USERNAME
 var accessKey = process.env.SAUCELABS_ACCESS_KEY
 
-var remoteHost = 'http://b0c83b21.ngrok.io'
+var remoteHost = 'http://uppy.io'
 var localHost = 'http://localhost:4000'
 
 // if accessKey is supplied as env variable, this is a remote Saucelabs test
 var isRemoteTest = accessKey ? true : ''
 var host = isRemoteTest ? remoteHost : localHost
 
-// FYI: old Chrome on Windows XP,
-// Opera 12 on Linux — didn’t pass
+// FYI: old Chrome on Windows XP — didn’t pass
 var platforms = [
-  // { browser: 'Safari', version: '9.0', os: 'OS X 10.11' }
-  // { browser: 'MicrosoftEdge', version: '13.10586', os: 'Windows 10' }
+  { browser: 'Safari', version: '8.0', os: 'OS X 10.10' },
+  { browser: 'MicrosoftEdge', version: '13.10586', os: 'Windows 10' },
   { browser: 'Firefox', version: '38.0', os: 'Linux' },
   { browser: 'Internet Explorer', version: '10.0', os: 'Windows 8' },
   { browser: 'Internet Explorer', version: '11.103', os: 'Windows 10' },
   { browser: 'Chrome', version: '48.0', os: 'Windows XP' },
   { browser: 'Firefox', version: '34.0', os: 'Windows 7' }
-  // { browser: 'Opera', version: '12.15', os: 'Linux' }
 ]
 
 var tests = [
   require('./multipart.spec.js'),
-  require('./i18n.spec.js'),
-  require('./dragdrop.spec.js')
+  require('./i18n.spec.js')
+  // require('./dragdrop.spec.js')
 ]
 
 function buildDriver (platform) {

+ 17 - 9
test/acceptance/multipart.spec.js

@@ -5,17 +5,28 @@ var Driver = require('./Driver')
 var collectErrors = Driver.collectErrors
 
 module.exports = function (driver, platform, host) {
-  test('multipart: upload two files ' +
-      chalk.underline.yellow('[' +
+  var testName = 'Multipart: upload two files'
+  var platformName = chalk.underline.yellow('[' +
         platform.os + ' ' +
         platform.browser + ' ' +
         platform.version +
-      ']'),
-  function (t) {
+      ']')
+
+  test(testName + ' ' + platformName, function (t) {
     t.plan(1)
 
     // Go to the example URL
     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)
+    })
 
     // driver.manage().timeouts().implicitlyWait(5 * 1000)
 
@@ -23,11 +34,8 @@ 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).then(function (result) {
-        console.log(result)
-        driver.findElement({css: '.UppyForm-uploadBtn'}).click()
-      })
+      driver.executeScript(Driver.UppySelectFakeFile)
+      driver.findElement({css: '.UppyForm-uploadBtn'}).click()
     } else {
       // Find input by css selector & pass absolute image path to it
       console.log('selecting a real file')

+ 11 - 7
test/acceptance/saucelabs-dummy.spec.js

@@ -24,16 +24,20 @@ function buildDriver (platform) {
   return driver
 }
 
+function getBtnValue () {
+  return document.querySelector('.button__text').textContent
+}
+
 function runTest (driver, platform) {
   console.log('Running dummy test in ' + platform.browser + ' on ' + platform.os)
   driver.get('http://ya.ru')
-  driver.executeScript('return window').then(function (log) {
-    console.log(log)
-  })
-  driver.getTitle().then(function (title) {
-    console.log('title is: ' + title)
-    console.log('Finnished running dummy test, I quit!')
-    driver.quit()
+  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.quit()
+    })
   })
 }