wdio.browserstack.conf.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { onBrowserStackComplete, onBrowserStackPrepare } from './src/utils'
  2. import { config as mainConfig } from './wdio.main.conf'
  3. const user = process.env.BROWSERSTACK_USER
  4. const key = process.env.BROWSERSTACK_KEY
  5. if (!user) throw new Error('Miss browser stack user')
  6. if (!key) throw new Error('Miss browser stack key')
  7. function buildMainOptions (sessionName: string) {
  8. return {
  9. projectName: 'PeerTube',
  10. buildName: 'Main E2E - ' + new Date().toISOString().split('T')[0],
  11. sessionName,
  12. consoleLogs: 'info',
  13. networkLogs: true
  14. }
  15. }
  16. function buildBStackDesktopOptions (sessionName: string, resolution?: string) {
  17. return {
  18. 'bstack:options': {
  19. ...buildMainOptions(sessionName),
  20. resolution
  21. }
  22. }
  23. }
  24. function buildBStackMobileOptions (sessionName: string, deviceName: string, osVersion: string, appiumVersion?: string) {
  25. return {
  26. 'bstack:options': {
  27. ...buildMainOptions(sessionName),
  28. realMobile: true,
  29. osVersion,
  30. deviceName,
  31. appiumVersion
  32. }
  33. }
  34. }
  35. module.exports = {
  36. config: {
  37. ...mainConfig,
  38. user,
  39. key,
  40. maxInstances: 5,
  41. capabilities: [
  42. {
  43. browserName: 'Chrome',
  44. ...buildBStackDesktopOptions('Latest Chrome Desktop', '1280x1024')
  45. },
  46. {
  47. browserName: 'Firefox',
  48. browserVersion: '68', // ESR
  49. ...buildBStackDesktopOptions('Firefox ESR Desktop', '1280x1024')
  50. },
  51. {
  52. browserName: 'Safari',
  53. browserVersion: '11.1',
  54. ...buildBStackDesktopOptions('Safari Desktop', '1280x1024')
  55. },
  56. {
  57. browserName: 'Firefox',
  58. ...buildBStackDesktopOptions('Firefox Latest', '1280x1024')
  59. },
  60. {
  61. browserName: 'Edge',
  62. ...buildBStackDesktopOptions('Edge Latest', '1280x1024')
  63. },
  64. {
  65. browserName: 'Chrome',
  66. ...buildBStackMobileOptions('Latest Chrome Android', 'Samsung Galaxy S6', '5.0')
  67. },
  68. {
  69. browserName: 'Safari',
  70. ...buildBStackMobileOptions('Safari iPhone', 'iPhone SE', '11')
  71. },
  72. {
  73. browserName: 'Safari',
  74. ...buildBStackMobileOptions('Safari iPad', 'iPad 7th', '13')
  75. }
  76. ],
  77. host: 'hub-cloud.browserstack.com',
  78. connectionRetryTimeout: 240000,
  79. waitforTimeout: 20000,
  80. specs: [
  81. // We don't want to test "local" tests
  82. './src/suites-all/*.e2e-spec.ts'
  83. ],
  84. services: [
  85. [
  86. 'browserstack', { browserstackLocal: true }
  87. ]
  88. ],
  89. onWorkerStart: function (_cid, capabilities) {
  90. if (capabilities['bstack:options'].realMobile === true) {
  91. capabilities['bstack:options'].local = false
  92. }
  93. },
  94. onPrepare: onBrowserStackPrepare,
  95. onComplete: onBrowserStackComplete
  96. } as WebdriverIO.Config
  97. }