tools.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. window._uppy.addFile({
  12. source: 'acceptance-test',
  13. name: 'test-file',
  14. type: 'image/svg+xml',
  15. data: blob
  16. })
  17. }
  18. function prettyTestName (name, platform) {
  19. var testName = chalk.cyan.bold(name)
  20. var platformName = chalk.yellow(
  21. platform.os + ', ' +
  22. platform.browser + ' ' +
  23. platform.version
  24. )
  25. return testName + ' / ' + platformName
  26. }
  27. // https://wiki.saucelabs.com/display/DOCS/Annotating+Tests+with+Selenium's+JavaScript+Executor
  28. function setSauceTestStatus (driver, passed) {
  29. driver
  30. .executeScript('sauce:job-result=' + passed)
  31. .catch(function (err) {
  32. console.log('local test, so this is ok: ' + err)
  33. })
  34. }
  35. function setSauceTestName (driver, testName) {
  36. driver
  37. .executeScript('sauce:job-name=' + testName)
  38. .catch(function (err) {
  39. console.log('local test, so this is ok: ' + err)
  40. })
  41. }
  42. function testEqual (driver, t, condition) {
  43. t.equal(condition, true)
  44. if (condition) {
  45. setSauceTestStatus(driver, true)
  46. } else {
  47. setSauceTestStatus(driver, false)
  48. }
  49. }
  50. function testFail (driver, t, err) {
  51. t.fail(err)
  52. setSauceTestStatus(driver, false)
  53. }
  54. // Monitor for errors, and dump them
  55. function collectErrors (driver) {
  56. return driver.executeScript('return uppyLog;')
  57. .then(function (uppyLog) {
  58. console.error([
  59. '[uppy-log]',
  60. chalk.red(uppyLog)
  61. ].join(' '))
  62. })
  63. .catch(function (err) {
  64. console.log('no uppyLog, that’s fine: ' + err)
  65. })
  66. // TODO: maybe figure out a way to get errors from all browsers
  67. // return driver.executeScript('return window.JSErrorCollector_errors.pump()')
  68. // .then(function (errors) {
  69. // if (!errors || !errors.length) {
  70. // return
  71. // }
  72. // errors.forEach(function (error) {
  73. // console.error([
  74. // '[browser-error]',
  75. // chalk.magenta(error.sourceName),
  76. // chalk.dim('#' + error.lineNumber),
  77. // chalk.red(error.errorMessage)
  78. // ].join(' '))
  79. // })
  80. // return
  81. // })
  82. }
  83. // function setDriver () {
  84. // var profile = new firefox.Profile()
  85. // // profile.addExtension(path.join(__dirname, 'xpi', 'firebug-2.0.16.xpi'))
  86. // // profile.addExtension(path.join(__dirname, 'xpi', 'JSErrorCollector.xpi'))
  87. // // profile.setPreference('extensions.firebug.showChromeErrors', true)
  88. //
  89. // var options = new firefox.Options().setProfile(profile)
  90. // var driver = new firefox.Driver(options)
  91. //
  92. // // var driver = new webdriver.Builder()
  93. // // .forBrowser('firefox')
  94. // // .build()
  95. //
  96. // return driver
  97. // }
  98. module.exports = {
  99. // setDriver,
  100. prettyTestName,
  101. uppySelectFakeFile,
  102. collectErrors,
  103. testEqual,
  104. testFail,
  105. setSauceTestName,
  106. setSauceTestStatus,
  107. By
  108. }