multipart.spec.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. var test = require('tape')
  2. var chalk = require('chalk')
  3. var Driver = require('./Driver')
  4. module.exports = function (driver, platform, host) {
  5. var testName = 'Multipart: upload two files'
  6. var platformName = chalk.underline.yellow('[' +
  7. platform.os + ' ' +
  8. platform.browser + ' ' +
  9. platform.version +
  10. ']')
  11. test(testName + ' ' + platformName, function (t) {
  12. t.plan(1)
  13. // Go to the example URL
  14. driver.get(host + '/examples/multipart/')
  15. driver.manage().window().maximize()
  16. Driver.setSauceTestName(driver, testName)
  17. // driver.manage().timeouts().implicitlyWait(5 * 1000)
  18. // If this is Edge or Safari, fake upload a dummy file object
  19. var platformBrowser = platform.browser.toLowerCase()
  20. if (platformBrowser === 'safari' || platformBrowser === 'microsoftedge') {
  21. console.log('fake-selecting a fake file')
  22. driver.executeScript(Driver.uppySelectFakeFile)
  23. driver.findElement({css: '.UppyForm-uploadBtn'}).click()
  24. } else {
  25. console.log('fake-selecting a fake file')
  26. driver.executeScript(Driver.uppySelectFakeFile)
  27. driver.findElement({css: '.UppyForm-uploadBtn'}).click()
  28. // Find input by css selector & pass absolute image path to it
  29. // console.log('selecting a real file')
  30. // driver.findElement({css: '.UppyFormContainer .UppyForm-input'}).then(function (el) {
  31. // el.sendKeys(path.join(__dirname, 'image.jpg'))
  32. // el.sendKeys(path.join(__dirname, 'image2.jpg'))
  33. // driver.findElement({css: '.UppyForm-uploadBtn'}).click()
  34. // })
  35. }
  36. function isUploaded () {
  37. // .getText() only works on visible elements, so we use .getAttribute('textContent'), go figure
  38. // http://stackoverflow.com/questions/21994261/gettext-not-working-on-a-select-from-dropdown
  39. return driver.findElement({css: '.UppyProgressBar .UppyProgressBar-percentage'})
  40. .getAttribute('textContent')
  41. .then(function (value) {
  42. var progress = parseInt(value)
  43. var isFileUploaded = progress === 100
  44. return isFileUploaded
  45. })
  46. }
  47. driver.wait(isUploaded, 15000, 'File image.jpg should be uploaded within 15 seconds')
  48. .then(function (result) {
  49. Driver.collectErrors(driver).then(function () {
  50. Driver.testEqual(driver, t, result)
  51. // t.equal(result, true)
  52. // if (result) {
  53. // setSauceTestStatus(driver, true)
  54. // } else {
  55. // setSauceTestStatus(driver, false)
  56. // }
  57. driver.quit()
  58. })
  59. })
  60. .catch(function (err) {
  61. Driver.collectErrors(driver).then(function () {
  62. Driver.testFail(driver, t, err)
  63. // t.fail(err)
  64. // setSauceTestStatus(driver, false)
  65. driver.quit()
  66. })
  67. })
  68. })
  69. }