Driver.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. var webdriver = require('selenium-webdriver')
  2. var firefox = require('selenium-webdriver/firefox')
  3. var By = webdriver.By
  4. var path = require('path')
  5. var chalk = require('chalk')
  6. function uppySelectFakeFile () {
  7. var blob = new Blob(
  8. ['data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIwIDEyMCI+CiAgPGNpcmNsZSBjeD0iNjAiIGN5PSI2MCIgcj0iNTAiLz4KPC9zdmc+Cg=='],
  9. {type: 'image/svg+xml'}
  10. )
  11. blob['name'] = 'myDumbSVG'
  12. window.UppyAddFiles([blob], 'smth')
  13. }
  14. // https://wiki.saucelabs.com/display/DOCS/Annotating+Tests+with+Selenium's+JavaScript+Executor
  15. function setSauceTestStatus (driver, passed) {
  16. driver
  17. .executeScript('sauce:job-result=' + passed)
  18. .catch(function (err) {
  19. console.log('local test, so this is ok: ' + err)
  20. })
  21. }
  22. function setSauceTestName (driver, testName) {
  23. driver
  24. .executeScript('sauce:job-name=' + testName)
  25. .catch(function (err) {
  26. console.log('local test, so this is ok: ' + err)
  27. })
  28. }
  29. function testEqual (driver, t, condition) {
  30. t.equal(condition, true)
  31. if (condition) {
  32. setSauceTestStatus(driver, true)
  33. } else {
  34. setSauceTestStatus(driver, false)
  35. }
  36. }
  37. function testFail (driver, t, err) {
  38. t.fail(err)
  39. setSauceTestStatus(driver, false)
  40. }
  41. // Monitor for errors, and dump them
  42. function collectErrors (driver) {
  43. return driver.executeScript('return uppyLog;')
  44. .then(function (uppyLog) {
  45. console.error([
  46. '[uppy-log]',
  47. chalk.magenta(uppyLog)
  48. ].join(' '))
  49. // TODO: maybe figure out a way to get errors from all browsers
  50. // return driver.executeScript('return window.JSErrorCollector_errors.pump()')
  51. // .then(function (errors) {
  52. // if (!errors || !errors.length) {
  53. // return
  54. // }
  55. // errors.forEach(function (error) {
  56. // console.error([
  57. // '[browser-error]',
  58. // chalk.magenta(error.sourceName),
  59. // chalk.dim('#' + error.lineNumber),
  60. // chalk.red(error.errorMessage)
  61. // ].join(' '))
  62. // })
  63. // return
  64. // })
  65. })
  66. }
  67. function setDriver () {
  68. var profile = new firefox.Profile()
  69. profile.addExtension(path.join(__dirname, 'xpi', 'firebug-2.0.16.xpi'))
  70. profile.addExtension(path.join(__dirname, 'xpi', 'JSErrorCollector.xpi'))
  71. profile.setPreference('extensions.firebug.showChromeErrors', true)
  72. var options = new firefox.Options().setProfile(profile)
  73. var driver = new firefox.Driver(options)
  74. // var driver = new webdriver.Builder()
  75. // .forBrowser('firefox')
  76. // .build()
  77. return driver
  78. }
  79. module.exports = {
  80. setDriver,
  81. uppySelectFakeFile,
  82. collectErrors,
  83. testEqual,
  84. testFail,
  85. setSauceTestName,
  86. setSauceTestStatus,
  87. By
  88. }