multipart.spec.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. // Find input by css selector & pass absolute image path to it
  20. driver.findElement({css: '.UppyFormContainer .UppyForm-input'}).then(function (el) {
  21. el.sendKeys(path.join(__dirname, 'image.jpg'))
  22. el.sendKeys(path.join(__dirname, 'image2.jpg'))
  23. driver.findElement({css: '.UppyForm-uploadBtn'}).click()
  24. })
  25. }
  26. function isUploaded () {
  27. // .getText() only works on visible elements, so we use .getAttribute('textContent'), go figure
  28. // http://stackoverflow.com/questions/21994261/gettext-not-working-on-a-select-from-dropdown
  29. return driver.findElement({css: '.UppyProgressBar .UppyProgressBar-percentage'})
  30. .getAttribute('textContent')
  31. .then(function (value) {
  32. var progress = parseInt(value)
  33. var isFileUploaded = progress === 100
  34. return isFileUploaded
  35. })
  36. }
  37. driver.wait(isUploaded, 12000, 'File image.jpg should be uploaded within 15 seconds')
  38. .then(function (result) {
  39. tools.testEqual(driver, t, result)
  40. driver.quit()
  41. })
  42. .catch(function (err) {
  43. tools.collectErrors(driver).then(function () {
  44. tools.testFail(driver, t, err)
  45. driver.quit()
  46. })
  47. })
  48. })
  49. }