multipart.spec.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. var test = require('tape')
  2. var tools = require('./tools')
  3. var path = require('path')
  4. module.exports = function (driver, platform, host) {
  5. var testName = 'Multipart: upload a file'
  6. test(tools.prettyTestName(testName, platform), function (t) {
  7. t.plan(1)
  8. driver.get(host + '/examples/multipart/')
  9. driver.manage().window().maximize()
  10. tools.setSauceTestName(driver, testName)
  11. // driver.manage().timeouts().implicitlyWait(5 * 1000)
  12. var platformBrowser = platform.browser.toLowerCase()
  13. if (platformBrowser === 'safari' || platformBrowser === 'microsoftedge') {
  14. console.log('fake-selecting a fake file')
  15. driver.executeScript(tools.uppySelectFakeFile)
  16. // driver.findElement({css: '.UppyForm-uploadBtn'}).click()
  17. } else {
  18. console.log('selecting a real file')
  19. driver.executeScript('document.querySelector(".uppy-FileInput-input").style.opacity = 1')
  20. // Find input by css selector & pass absolute image path to it
  21. driver.findElement({css: '.uppy-FileInput-input'})
  22. .then(function (el) {
  23. el.sendKeys(path.join(__dirname, 'image.jpg'))
  24. // el.sendKeys(path.join(__dirname, 'image2.jpg'))
  25. // driver.findElement({css: '.UppyForm-uploadBtn'}).click()
  26. })
  27. .catch(function (err) {
  28. throw err
  29. })
  30. }
  31. function isUploaded () {
  32. // .getText() only works on visible elements, so we use .getAttribute('textContent'), go figure
  33. // http://stackoverflow.com/questions/21994261/gettext-not-working-on-a-select-from-dropdown
  34. return driver.findElement({css: '.UppyProgressBar .UppyProgressBar-percentage'})
  35. .getAttribute('textContent')
  36. .then(function (value) {
  37. var progress = parseInt(value)
  38. var isFileUploaded = progress === 100
  39. return isFileUploaded
  40. })
  41. .catch(function (err) {
  42. console.log(err)
  43. })
  44. }
  45. driver.wait(isUploaded, 12000, 'File image.jpg should be uploaded within 15 seconds')
  46. .then(function (result) {
  47. tools.testEqual(driver, t, result)
  48. driver.quit()
  49. })
  50. .catch(function (err) {
  51. tools.collectErrors(driver).then(function () {
  52. tools.testFail(driver, t, err)
  53. driver.quit()
  54. })
  55. })
  56. })
  57. }