multipart.spec.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. var test = require('tape')
  2. var path = require('path')
  3. var webdriver = require('selenium-webdriver')
  4. var chalk = require('chalk')
  5. var By = webdriver.By
  6. var Driver = require('./Driver')
  7. var collectErrors = Driver.collectErrors
  8. module.exports = function (driver, platform, host) {
  9. test('multipart: upload two files ' +
  10. chalk.underline.yellow('[' +
  11. platform.os + ' ' +
  12. platform.browser + ' ' +
  13. platform.version +
  14. ']'),
  15. function (t) {
  16. t.plan(1)
  17. // Go to the example URL
  18. driver.get(host + '/examples/multipart/')
  19. // Find input by css selector & pass absolute image path to it
  20. driver.findElement(By.css('.UppyForm .UppyForm-input')).then(function (el) {
  21. el.sendKeys(path.join(__dirname, 'image.jpg'))
  22. el.sendKeys(path.join(__dirname, 'image2.jpg'))
  23. driver.findElement(By.css('.UppyForm-uploadBtn')).click()
  24. })
  25. function isUploaded () {
  26. // .getText() only work on visible elements, so we use .getAttribute('textContent'), go figure
  27. // http://stackoverflow.com/questions/21994261/gettext-not-working-on-a-select-from-dropdown
  28. return driver.findElement(By.css('.UppyProgressBar .UppyProgressBar-percentage'))
  29. .getAttribute('textContent')
  30. .then(function (value) {
  31. var progress = parseInt(value)
  32. var isFileUploaded = progress === 100
  33. return isFileUploaded
  34. })
  35. }
  36. driver.wait(isUploaded, 15000, 'File image.jpg should be uploaded within 15 seconds')
  37. .then(function (result) {
  38. collectErrors(driver).then(function () {
  39. t.equal(result, true)
  40. driver.quit()
  41. })
  42. })
  43. .catch(function (err) {
  44. collectErrors(driver).then(function () {
  45. t.fail(err)
  46. driver.quit()
  47. })
  48. })
  49. })
  50. }