Driver.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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.UppyAddFile([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. })
  50. .catch(function (err) {
  51. console.log('no uppyLog, that’s fine: ' + err)
  52. })
  53. // TODO: maybe figure out a way to get errors from all browsers
  54. // return driver.executeScript('return window.JSErrorCollector_errors.pump()')
  55. // .then(function (errors) {
  56. // if (!errors || !errors.length) {
  57. // return
  58. // }
  59. // errors.forEach(function (error) {
  60. // console.error([
  61. // '[browser-error]',
  62. // chalk.magenta(error.sourceName),
  63. // chalk.dim('#' + error.lineNumber),
  64. // chalk.red(error.errorMessage)
  65. // ].join(' '))
  66. // })
  67. // return
  68. // })
  69. }
  70. function setDriver () {
  71. var profile = new firefox.Profile()
  72. profile.addExtension(path.join(__dirname, 'xpi', 'firebug-2.0.16.xpi'))
  73. profile.addExtension(path.join(__dirname, 'xpi', 'JSErrorCollector.xpi'))
  74. profile.setPreference('extensions.firebug.showChromeErrors', true)
  75. var options = new firefox.Options().setProfile(profile)
  76. var driver = new firefox.Driver(options)
  77. // var driver = new webdriver.Builder()
  78. // .forBrowser('firefox')
  79. // .build()
  80. return driver
  81. }
  82. module.exports = {
  83. setDriver,
  84. uppySelectFakeFile,
  85. collectErrors,
  86. testEqual,
  87. testFail,
  88. setSauceTestName,
  89. setSauceTestStatus,
  90. By
  91. }