index.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Docs aren't that great to find. Mostly JAVA based. Here are few helpful resources:
  2. // - https://www.browserstack.com/automate/node#testing-frameworks
  3. // - http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/firefox/index_exports_Driver.html
  4. // - https://github.com/SeleniumHQ/selenium/blob/8f988e07cc316a48e0ff94d8ff823c95142532e9/javascript/webdriver/webdriver.js
  5. // - https://github.com/SeleniumHQ/selenium/blob/c10e8a955883f004452cdde18096d70738397788/javascript/node/selenium-webdriver/test/upload_test.js
  6. //
  7. // - https://github.com/SeleniumHQ/selenium/wiki/WebDriverJs
  8. // - http://seleniumhq.github.io/selenium/docs/api/javascript/
  9. // - http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/firefox/index.html
  10. // - http://selenium.googlecode.com/git/docs/api/javascript/namespace_webdriver_By.html
  11. // - http://selenium.googlecode.com/git/docs/api/javascript/class_webdriver_WebElement.html
  12. require('babel-register')
  13. var webdriver = require('selenium-webdriver')
  14. var remote = require('selenium-webdriver/remote')
  15. var username = process.env.SAUCELABS_USERNAME
  16. var accessKey = process.env.SAUCELABS_ACCESS_KEY
  17. var remoteHost = 'http://uppy.io'
  18. var localHost = 'http://localhost:4000'
  19. // if accessKey is supplied as env variable, this is a remote Saucelabs test
  20. var isRemoteTest = accessKey ? true : ''
  21. var host = isRemoteTest ? remoteHost : localHost
  22. // FYI: old Chrome on Windows XP — didn’t pass
  23. var platforms = [
  24. { browser: 'Safari', version: '8.0', os: 'OS X 10.10' },
  25. { browser: 'MicrosoftEdge', version: '13.10586', os: 'Windows 10' },
  26. { browser: 'Firefox', version: '38.0', os: 'Linux' },
  27. { browser: 'Internet Explorer', version: '10.0', os: 'Windows 8' },
  28. { browser: 'Internet Explorer', version: '11.103', os: 'Windows 10' },
  29. { browser: 'Chrome', version: '48.0', os: 'Windows XP' },
  30. { browser: 'Firefox', version: '34.0', os: 'Windows 7' }
  31. ]
  32. var tests = [
  33. require('./multipart.spec.js'),
  34. require('./i18n.spec.js')
  35. // require('./dragdrop.spec.js')
  36. ]
  37. function buildDriver (platform) {
  38. var driver
  39. if (isRemoteTest) {
  40. driver = new webdriver
  41. .Builder()
  42. .withCapabilities({
  43. 'browserName': platform.browser,
  44. 'platform': platform.os,
  45. 'version': platform.version,
  46. 'username': username,
  47. 'accessKey': accessKey
  48. })
  49. .usingServer('http://' + username + ':' + accessKey +
  50. '@ondemand.saucelabs.com:80/wd/hub')
  51. .build()
  52. driver.setFileDetector(new remote.FileDetector())
  53. } else {
  54. driver = new webdriver
  55. .Builder()
  56. .forBrowser('firefox')
  57. .build()
  58. }
  59. return driver
  60. }
  61. if (isRemoteTest) {
  62. platforms.forEach(function (platform) {
  63. tests.forEach(function (test) {
  64. var driver = buildDriver(platform)
  65. test(driver, platform, host)
  66. })
  67. })
  68. } else {
  69. tests.forEach(function (test) {
  70. var driver = buildDriver()
  71. test(driver, { browser: 'Firefox', version: 'Version', os: 'Local' }, host)
  72. })
  73. }